במדריך הזה נסביר איך להריץ בדיקות של מכשירי מדידה, בדיקות 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 הנתמכות, ממשקי ה-ABI הנתמכים, תאריכי הפרסום והאם המכשיר פיזי או וירטואלי של דגם המכשיר.
versions list
: הצגת רשימה של גרסאות מערכת ההפעלה הזמינות כרגע לבדיקה.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, מריצים את הפקודה לדוגמה הבאה:
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
כדי לבדוק כיתה אחת או שיטת כיתה אחת שמשמשות את קובץ ה-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 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
בדיקת הרובוט ממלאת באופן אוטומטי מסכי כניסה שמשתמשים בחשבון Google לאימות, אלא אם משתמשים בפרמטר --no-auto-google-login
. הוא יכול גם להשלים מסכי כניסה בהתאמה אישית באמצעות פרטי הכניסה של חשבון הבדיקה שתספקו. אפשר גם להשתמש בפרמטר הזה כדי לספק טקסט קלט מותאם אישית לשדות טקסט אחרים שבהם האפליקציה משתמשת.
כדי למלא שדות טקסט באפליקציה, משתמשים בפרמטר --robo-directives
ומספקים רשימה מופרדת בפסיקים של זוגות key-value
, כאשר key
הוא שם המשאב של רכיב ממשק המשתמש היעד ב-Android, ו-value
הוא מחרוזת הטקסט. אפשר גם להשתמש בדגל הזה כדי להורות ל-Robo להתעלם מרכיבי UI ספציפיים (למשל, הלחצן 'יציאה').
יש תמיכה בשדות EditText
, אבל לא בשדות טקסט ברכיבי ממשק המשתמש של WebView
.
לדוגמה, אפשר להשתמש בפרמטר הבא להתחברות בהתאמה אישית:
--robo-directives username_resource=username,password_resource=password
פקודות ודגלים זמינים
ב-CLI של gcloud Test Lab יש כמה פקודות ודגלים שאפשר להשתמש בהם כדי להריץ בדיקות עם מפרטים שונים:
דגל של Android Test Orchestrator: דגל להפעלת Orchestrator,כלי שמאפשר להריץ כל אחד מהבדיקות של האפליקציה בקריאה משלו ל-
Instrumentation
. Test Lab תמיד מופעל עם הגרסה העדכנית ביותר של Orchestrator.דגלים לבדיקת Game Loop: קבוצה של דגלי תצורה שמפעילים ומנהלים 'מצב הדגמה' כדי לדמות פעולות של שחקנים באפליקציות של משחקים. מידע נוסף על הפעלת בדיקות של Game Loop באמצעות Test Lab
דגל חלוקה אחידה למקטעים (בגרסת בטא): דגל שמציין את מספר המקטעים שאתם רוצים לחלק באופן שווה את תרחישי הבדיקה ביניהם. המשבצות פועלות במקביל במכשירים נפרדים.
דגל חלוקה ידנית למקטעים (בגרסת בטא): דגל שמציין קבוצה של חבילות, כיתות ו/או תרחישים לבדיקה שרוצים להריץ בחלק (קבוצה של תרחישים לבדיקה). הרצת הפלחים מתבצעת במקביל במכשירים נפרדים.
דגל של פרופילי תעבורת נתונים ברשת (בגרסת בטא): דגל שמציין את פרופיל הרשת שבו נעשה שימוש בבדיקות עם מכשירים פיזיים. פרופילי הרשתות יוצרים אמולציה של מגוון תנאי רשתות, ומאפשרים לבדוק את ביצועי האפליקציה ברשתות לא מהימנות או לא צפויות.
כתיבת סקריפטים של פקודות 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 | סביבת הבדיקה לביצוע הבדיקה הזו לא נתמכת בגלל מאפייני בדיקה לא תואמים. השגיאה הזו עשויה להתרחש אם סוג המכשיר שנבחר לא תומך ברמת Android API שנבחרה. |
19 | המשתמש ביטל את מטריצת הבדיקות. |
20 | אירעה שגיאה בתשתית הבדיקה. |