במדריך הזה מוסבר איך להריץ בדיקת אינסטרומנטציה, בדיקת Robo או בדיקת game loop באמצעות ה-CLI של gcloud.
רשימה מלאה של פקודות gcloud שאפשר להשתמש בהן באפליקציית Android ב-Test Lab זמינה במאמרי העזרה בנושא gcloud firebase test android.
לפני שמתחילים
אם עדיין לא הוספתם את Firebase לפרויקט Android, אתם צריכים להוסיף אותו.
שלב 1. הגדרת ה-CLI של gcloud
- הורדה של Google Cloud SDK
- מוודאים שההתקנה מעודכנת:
gcloud components update
- נכנסים ל-CLI של gcloud באמצעות חשבון Google:
gcloud auth login
- מגדירים את פרויקט Firebase ב-gcloud, כאשר PROJECT_ID הוא מזהה פרויקט Firebase:
gcloud config set project PROJECT_ID
היא כוללת את כלי ה-CLI של gcloud.
שלב 2. בדיקת מכשירי בדיקה זמינים
כדי לראות את מכשירי הבדיקה ואת הלוקאלים שזמינים לבדיקה, משתמשים בפקודות gcloud הבאות.
לחלופין, אפשר גם להוריד את אפליקציית פנקס הרשימות לדוגמה כדי להתחיל להריץ את הפקודות באופן מיידי. משתמשים בקובץ הבינארי app-debug-unaligned.apk ובקובץ בדיקות המכשור app-debug-test-unaligned.apk, שנמצאים ב-NotePad/app/build/outputs/apk/.
models list: קבלת רשימה עדכנית של מכשירי Android שזמינים לבדיקה.gcloud firebase test android models listבפלט הפקודה:
- בעמודה
MODEL_IDמופיע המזהה שבו אפשר להשתמש בהמשך כדי להריץ בדיקות בדגם המכשיר. - בעמודה
OS_VERSION_IDמופיעות גרסאות מערכת ההפעלה שהמכשיר תומך בהן.
פלט לדוגמה

- בעמודה
models describe: קבלת מידע נוסף על Android ספציפיMODEL_ID.gcloud firebase test android models describe MODEL_IDהפלט מכיל את המותג של דגם המכשיר, היצרן, גרסאות מערכת ההפעלה, רמות ה-API הנתמכות, ממשקי ה-ABI הנתמכים, תאריכי השחרור והאם המכשיר פיזי או וירטואלי.
versions list: קבלת רשימה של גרסאות OS שזמינות כרגע לבדיקה.gcloud firebase test android versions listאפשר להשתמש במזהה מאחת משתי העמודות הראשונות של פלט הפקודה (
OS_VERSION_IDו-VERSION), כדי להריץ בדיקות מאוחר יותר מול גרסת Android OS. אם לא מציינים את גרסאות מערכת ההפעלה של Android לבדיקה, נעשה שימוש בברירת המחדל שמופיעה בעמודהTAGS.פלט לדוגמה

locales list: קבלת הרשימה הנוכחית של הלוקאלים שזמינים לבדיקה.gcloud firebase test android locales listהעמודה הראשונה של פלט הפקודה,
LOCALE, מכילה את המזהה שאפשר להשתמש בו בהמשך כדי להריץ בדיקות מול לוקאל. אם לא מציינים את הלוקאלים לבדיקה, נעשה שימוש באנגלית כלוקאל ברירת המחדל.
שלב 3. הרצת הבדיקה
אחרי שבודקים את טווח הדגמים, הלוקאלים וגרסאות מערכת ההפעלה שזמינים לבדיקת האפליקציה, אפשר לציין מכשירים באמצעות הפקודה gcloud firebase test android run והדגל --device כדי להריץ בדיקות Robo או בדיקות מכשור.
הרצת בדיקת Robo
גם אם אין לכם בדיקות מכשור, עדיין תוכלו לחפש באגים באפליקציה. תוכלו להשתמש בבדיקת Robo כדי לבצע בדיקה אוטומטית של ממשק המשתמש של האפליקציה. בדיקת Robo מפעילה את האפליקציה על ידי ביצוע ניתוח סטטי של הנתיבים השונים בממשק המשתמש של האפליקציה, ולאחר מכן סורקת את האפליקציה כדי למצוא קריסות ובעיות פוטנציאליות אחרות.
כדי להריץ בדיקת Robo, מריצים את פקודת הדוגמה הבאה:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- הפרמטר
--type roboהוא משתמע אם לא מצוין ערך--type. - כדי לעזור לכם לזהות ולאתר את מטריצות הבדיקה במסוף Firebase, אתם יכולים להשתמש בדגל האופציונלי
--client-details matrixLabel="Example matrix label"כדי לתייג את מטריצת הבדיקה. - כדי לראות את כל האפשרויות של שורת הפקודה להרצת בדיקות, מקלידים:
gcloud help firebase test android run.
במקום לציין את הארגומנטים האלה בשורת הפקודה, אפשר לציין אותם בקובץ ארגומנטים בפורמט YAML. מריצים את הפקודה
gcloud topic arg-files כדי ללמוד איך להשתמש בתכונה הזו.
במאמר ניתוח תוצאות הבדיקה מוסבר איך לבדוק את תוצאות הבדיקה של בדיקת Robo.
הרצת בדיקת אינסטרומנטציה
עכשיו משתמשים בכלי gcloud של שורת הפקודה כדי להריץ את הבדיקות של Espresso באפליקציית Notepad בהגדרות של מכשיר Android שצוינו. משתמשים בסוג הבדיקה instrumentation כדי להריץ את הבדיקות ב-app-debug-test-unaligned.apk באופן הבא:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
- פרמטר האינסטרומנטציה
--typeמוגדר באופן מרומז אם מציינים קובץ APK לבדיקה באמצעות--test. - כדי לעזור לכם לזהות את מטריצות הבדיקה ולמצוא אותן במסוף Firebase, אתם יכולים להשתמש בדגל האופציונלי
--client-details matrixLabel="Example matrix label"כדי לתייג את מטריצת הבדיקה. - כדי לראות את כל האפשרויות של שורת הפקודה להרצת בדיקות, מקלידים
gcloud help firebase test android run.
במקום לציין את הארגומנטים האלה בשורת הפקודה, אפשר לציין אותם בקובץ ארגומנטים בפורמט YAML. מריצים את הפקודה
gcloud topic arg-files כדי ללמוד איך להשתמש בתכונה הזו.
CLI של gcloud תומך ב-Android Test Orchestrator. כדי להשתמש ב-Orchestrator, צריך AndroidJUnitRunner בגרסה 1.1 ואילך. כדי להפעיל אותו, משתמשים ב-gcloud firebase test android run עם הדגל --use-orchestrator. כדי להשבית אותו, משתמשים בדגל --no-use-orchestrator.
אפשר גם לשלוט באופן שבו Test Lab מריץ את בדיקות המכשור באמצעות דגלים נוספים שלא מוצגים למעלה. לדוגמה, אפשר להשתמש בדגל --test-targets כדי לבדוק מחלקה אחת או method של מחלקה שמשמשת את קובץ ה-APK של הבדיקה. אפשר גם לגלות אם הבדיקה שנכשלה הייתה באמת לא יציבה או לא, באמצעות הדגל --num-flaky-test-attempts, שמציין את מספר הפעמים שבהן צריך לנסות שוב את ביצוע הבדיקה אם אחד או יותר ממקרי הבדיקה שלה נכשלים מסיבה כלשהי. מידע נוסף זמין במאמר gcloud firebase test android run.
דוחות רמת הכיסוי של הקוד לבדיקות אינסטרומנטציה
Test Lab תומך בכלים לדיווח על רמת הכיסוי של הקוד, EMMA ו-JaCoCo. אם אחד מהכלים האלה משולב ב-build של האפליקציה, אפשר להריץ את הפקודה gcloud firebase test android run עם כמה ארגומנטים נוספים כדי לקבל דוח רמת הכיסוי של הקוד לבדיקות Test Lab. אם תזמור בדיקות ל-Android לא מופעל, משתמשים בפקודה הבאה:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
אם אתם יוצרים דוחות של רמת הכיסוי של הקוד וגם משתמשים בתזמור בדיקות ל-Android, אתם צריכים לשנות את משתני הסביבה באופן הבא:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
אחרי ש-Test Lab יסיים להריץ את הבדיקות, תוכלו למצוא את דוחות רמת הכיסוי של הקוד ב-Google Cloud Storage:
- פותחים את הקישור למסוף Firebase שהכלי
gcloudהדפיס מעל טבלת תוצאות הבדיקה בטרמינל. - לוחצים על הרצת בדיקה מהרשימה בקישור כדי לפתוח את דף הפרטים של ההרצה.
- לוחצים על Test results (תוצאות הבדיקה) כדי לעבור אל מאגר Cloud Storage עם תוצאות הבדיקה של ההרצה הזו.
- פותחים את
artifacts/coverage.ecכדי לראות את דוח רמת הכיסוי של הקוד.
ניתוח תוצאות הבדיקה
אחרי כמה דקות, כלי gcloud מדפיס סיכום בסיסי של תוצאות הבדיקה:

הפלט של הרצת הבדיקה בשורת הפקודה כולל גם קישור לצפייה בתוצאות הבדיקה. כדי להבין איך לפרש את התוצאות האלה, אפשר לקרוא את המאמר בנושא ניתוח של Firebase Test Lab בתוצאות של Android.
כניסה מותאמת אישית והזנת טקסט באמצעות בדיקת Robo
הבדיקה באמצעות Robo משלימה באופן אוטומטי מסכי כניסה שמשתמשים בחשבון Google לאימות, אלא אם משתמשים בפרמטר --no-auto-google-login. היא יכולה גם להשלים מסכי כניסה מותאמים אישית באמצעות פרטי כניסה של חשבון בדיקה שאתם מספקים. אפשר גם להשתמש בפרמטר הזה כדי לספק טקסט קלט מותאם אישית לשדות טקסט אחרים שמשמשים את האפליקציה.
כדי להשלים תיבות טקסט באפליקציה, משתמשים בפרמטר --robo-directives ומזינים רשימה מופרדת בפסיקים של זוגות key-value, כאשר key הוא שם המשאב של מערכת Android של רכיב בממשק המשתמש, ו-value הוא מחרוזת הטקסט. אפשר להשתמש בדגל הזה גם כדי להגדיר ל-Robo להתעלם מרכיבים ספציפיים בממשק המשתמש (למשל, הכפתור 'יציאה').
יש תמיכה בשדות EditText אבל לא בשדות טקסט ברכיבי ממשק המשתמש של WebView.
לדוגמה, אפשר להשתמש בפרמטר הבא לכניסה מותאמת אישית:
--robo-directives username_resource=username,password_resource=password
הפקודות והדגלים הזמינים
ב-CLI של gcloud יש כמה פקודות ודגלים שמאפשרים להריץ בדיקות עם מפרטים שונים:Test Lab
דגל תזמור בדיקות ל-Android: דגל להפעלת Orchestrator,כלי שמאפשר להריץ כל אחת מהבדיקות של האפליקציה בהפעלה משלה של
Instrumentation. Test Lab תמיד מפעיל את הגרסה האחרונה של Orchestrator.דגלים של בדיקות Game Loop: קבוצה של דגלי הגדרה שמפעילים וקובעים את אופן הפעולה של 'מצב הדגמה' כדי לדמות פעולות של שחקנים באפליקציות משחקים. מידע נוסף על הרצת בדיקות Game Loop באמצעות Test Lab
הדגל Uniform Sharding (בגרסת בטא): דגל שמציין את מספר הרסיסים שרוצים לחלק ביניהם באופן שווה את תרחישי הבדיקה. הרסיסים מורצים במקביל במכשירים נפרדים.
דגל של חלוקה ידנית (בגרסת בטא): דגל שמציין קבוצה של חבילות, מחלקות או תרחישי בדיקה להפעלה בשבר (קבוצה של תרחישי בדיקה). החלקים מורצים במקביל במכשירים נפרדים.
הדגל של פרופילים של תנועה ברשת (בגרסת בטא): דגל שמציין באיזה פרופיל רשת הבדיקות משתמשות במכשירים פיזיים. פרופילים של רשתות יוצרים אמולציה של מגוון תנאי רשת, ומאפשרים לכם לבדוק את ביצועי האפליקציה ברשתות לא אמינות או לא צפויות.
כתיבת סקריפטים של פקודות gcloud באמצעות Test Lab
אתם יכולים להשתמש בסקריפטים של Shell או בקובצי אצווה כדי להריץ באופן אוטומטי פקודות לבדיקת אפליקציות לנייד, שאחרת הייתם מריצים באמצעות שורת הפקודה gcloud. בסקריפט הבא של Bash מופעלת בדיקת אינסטרומנטציה עם זמן קצוב לתפוגה של שתי דקות, ומוצג דיווח אם הרצת הבדיקה הסתיימה בהצלחה:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m
then
echo "Test matrix successfully finished"
else
echo "Test matrix exited abnormally with non-zero exit code: " $?
fi
קודי יציאה של סקריפטים
Test Lab מספק כמה קודי יציאה שאפשר להשתמש בהם כדי להבין טוב יותר את תוצאות הבדיקות שמריצים באמצעות סקריפטים או קובצי אצווה.
קודי יציאה של סקריפטים עבור Test Lab
| קוד יציאה | הערות |
|---|---|
| 0 | כל ההרצות של הבדיקות עברו בהצלחה. |
| 1 | אירעה שגיאה כללית. סיבות אפשריות: שם קובץ שלא קיים או שגיאת HTTP/רשת. |
| 2 | הבדיקה הסתיימה כי סופקו פקודות או ארגומנטים לא ידועים. |
| 10 | אחד או יותר ממקרי הבדיקה (מחלקות שנבדקו או שיטות של מחלקות) בביצוע הבדיקה לא עברו. |
| 15 | Firebase Test Lab לא הצליח לקבוע אם מטריצת הבדיקה עברה או נכשלה, בגלל שגיאה לא צפויה. |
| 18 | סביבת הבדיקה של הרצת הבדיקה הזו לא נתמכת בגלל מימדי בדיקה לא תואמים. השגיאה הזו עשויה להתרחש אם רמת ה-API של Android שנבחרה לא נתמכת בסוג המכשיר שנבחר. |
| 19 | מטריצת הבדיקה בוטלה על ידי המשתמש. |
| 20 | אירעה שגיאה בתשתית הבדיקה. |