במדריך הזה מוסבר איך להריץ בדיקת מכשור, בדיקת Robo או בדיקת Game Loop באמצעות gcloud CLI.
רשימה מלאה של פקודות 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
: קבלת מידע נוסף עלMODEL_ID
ספציפי של Android.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 versions 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
כדי ללמוד איך להשתמש בתכונה הזו.
כדי ללמוד איך לבדוק את תוצאות הבדיקה של בדיקת הרובוט, אפשר לעיין במאמר ניתוח תוצאות הבדיקה.
הרצת בדיקת אינסטרומנטציה
עכשיו משתמשים בכלי gcloud
של שורת הפקודה כדי להריץ את הבדיקות של Espresso באפליקציית Notepad בהגדרות של מכשיר Android שצוינו. כדי להריץ את הבדיקות ב-app-debug-test-unaligned.apk
, משתמשים בסוג הבדיקה instrumentation
באופן הבא:
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 של האפליקציה, תוכלו לקבל דוח כיסוי קוד עבור בדיקות Test Lab על ידי הפעלת gcloud firebase test android run
עם כמה ארגומנטים נוספים. אם Android Test Orchestrator לא מופעל, משתמשים בפקודה הבאה:
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 Test Orchestrator, אתם צריכים לשנות את משתני הסביבה באופן הבא:
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 Test Orchestrator flag: דגל להפעלת Orchestrator,כלי שמאפשר להריץ כל אחת מהבדיקות של האפליקציה בהפעלה משלה של
Instrumentation
. Test Lab תמיד מפעיל את הגרסה האחרונה של Orchestrator.Game Loop test flags: קבוצה של דגלי הגדרה שמפעילים וקובעים את ההתנהגות של "מצב הדגמה" כדי לדמות פעולות של שחקנים באפליקציות של משחקים. מידע נוסף על הפעלת בדיקות של game loops באמצעות Test Lab
הדגל Uniform Sharding (בגרסת בטא): דגל שמציין את מספר הרסיסים שרוצים לחלק באופן שווה בין תרחישי הבדיקה. החלקים מופעלים במקביל במכשירים נפרדים.
Manual Sharding flag (בגרסת בטא): דגל שמציין קבוצה של חבילות, מחלקות או תרחישי בדיקה להפעלה בשבר (קבוצה של תרחישי בדיקה). החלקים מורצים במקביל במכשירים נפרדים.
הדגל של פרופילי התנועה ברשת (בגרסת בטא): דגל שמציין באיזה פרופיל רשת הבדיקות משתמשות במכשירים פיזיים. פרופילים של רשתות יוצרים אמולציה של מגוון תנאי רשת, וכך מאפשרים לכם לבדוק את ביצועי האפליקציה ברשתות לא אמינות או לא צפויות.
כתיבת סקריפטים של פקודות 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 | אירעה שגיאה בתשתית הבדיקה. |