במדריך הזה מוסבר איך להריץ בדיקת אינסטרומנטציה, בדיקת 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.
אתם יכולים גם להוריד את אפליקציית Notepad לדוגמה כדי להתחיל להריץ את הפקודות מיד. משתמשים בקובץ הבינארי 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: קבלת מידע נוסף עלMODEL_IDספציפי ב-Android.gcloud firebase test android models describe MODEL_IDהפלט מכיל את המותג, היצרן, גרסאות מערכת ההפעלה, רמות ה-API הנתמכות, ממשקי ה-Application Binary Interfaces (ABI) הנתמכים, תאריכי ההשקה של דגם המכשיר, וגם אם המכשיר פיזי או וירטואלי.
versions list: קבלת רשימה של גרסאות מערכת ההפעלה שזמינות כרגע לבדיקה.gcloud firebase test android versions listאתם יכולים להשתמש במזהה מאחת משתי העמודות הראשונות של פלט הפקודה (
OS_VERSION_IDו-VERSION), כדי להריץ בדיקות מאוחר יותר בגרסה של Android OS. אם לא תציינו את גרסאות Android OS שאתם רוצים לבדוק, המערכת תשתמש בברירת המחדל שמופיעה בעמודה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.
כדי להשתמש ב-Orchestrator, צריך את AndroidJUnitRunner מגרסה 1.1 ואילך. כדי להפעיל את האפשרות, משתמשים בפקודה gcloud firebase test android run עם הדגל --use-orchestrator. כדי להשבית את האפשרות, משתמשים בדגל --no-use-orchestrator.
אתם יכולים גם לשלוט באופן שבו Test Lab מריץ את בדיקות האינסטרומנטציה באמצעות דגלים נוספים שלא מוצגים למעלה. לדוגמה, אפשר להשתמש בדגל --test-targets כדי לבדוק מחלקה אחת או שיטת מחלקה שמשמשת את ה-APK לבדיקה. כדי לגלות אם הבדיקה שנכשלה הייתה לא יציבה, אתם יכולים להשתמש בדגל --num-flaky-test-attempts, שמציין את מספר הפעמים שבהן צריך לנסות שוב להריץ את הבדיקה אם אחד או יותר ממקרי הבדיקה נכשלים מסיבה כלשהי. מידע נוסף זמין במאמר gcloud firebase test android run.
דוחות על רמת הכיסוי של הקוד לבדיקות אינסטרומנטציה
Test Lab תומך בכלי הדיווח על רמת הכיסוי של הקוד EMMA ו-JaCoCo. אם אחד מהכלים האלה משולב ב-build של האפליקציה, אתם יכולים לקבל דוח על רמת הכיסוי של הקוד לבדיקות Test Lab על ידי הפעלת gcloud firebase test android run עם כמה ארגומנטים נוספים. אם הכלי "תזמור בדיקות ל-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
אתם יכולים להשתמש בסקריפטים של מעטפת או בקובצי אצווה כדי להפוך פקודות לבדיקת אפליקציות לנייד לאוטומטיות, שבמצב אחר הייתם מריצים באמצעות שורת הפקודה של 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 | אירעה שגיאה בתשתית הבדיקה. |