התחלת בדיקות עם ה-CLI של gcloud

במדריך הזה נסביר איך להריץ בדיקות של מכשירי מדידה, בדיקות Robo או בדיקות של Game Loop באמצעות CLI של gcloud.

רשימה מלאה של פקודות gcloud שאפשר להשתמש בהן עם אפליקציית Android ב-Test Lab זמינה במסמכי העזרה של gcloud firebase test android.

לפני שמתחילים

אם עדיין לא עשיתם זאת, מוסיפים את Firebase לפרויקט Android.

שלב 1. הגדרת ה-CLI של gcloud

  1. מורידים את Google Cloud SDK
  2. והיא כוללת את כלי ה-CLI של gcloud.

  3. מוודאים שההתקנה עדכנית:
    gcloud components update
    
  4. נכנסים ל-CLI של gcloud באמצעות חשבון Google:
    gcloud auth login
    
  5. מגדירים את פרויקט Firebase ב-gcloud, כאשר PROJECT_ID הוא המזהה של פרויקט Firebase:
    gcloud config set project PROJECT_ID
    

שלב 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 מפורטות גרסאות מערכת ההפעלה הנתמכות במכשיר.

    פלט לדוגמה

    פלט של הפקודה gcloud firebase test android models list

  • models describe: מידע נוסף על MODEL_ID ספציפי של Android.

    gcloud firebase test android models describe MODEL_ID

    הפלט מכיל את המותג, היצרן, גרסאות מערכת ההפעלה, רמות ה-API הנתמכות, ממשקי ה-Application Binary Interface (ABI) הנתמכים, תאריכי הפרסום והאם המכשיר פיזי או וירטואלי של דגם המכשיר.

  • versions list: הצגת רשימה של גרסאות מערכת ההפעלה הזמינות כרגע לבדיקה.

    gcloud firebase test android versions list

    אפשר להשתמש במזהה מכל אחת משתי העמודות הראשונות של הפלט של הפקודה (OS_VERSION_ID ו-VERSION), כדי להריץ מאוחר יותר בדיקות בגרסה של Android OS. אם לא מציינים את הגרסאות של Android OS לבדיקה, ייעשה שימוש בברירת המחדל שצוינה בעמודה TAGS.

    פלט לדוגמה

    רשימת גרסאות android של gcloud

  • 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. 'תזמור' דורש את 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:

  1. פותחים את הקישור למסוף Firebase שהכלי gcloud הדפיס מעל לטבלת תוצאות הבדיקה בטרמינל.
  2. לוחצים על הרצת בדיקה מהרשימה שבקישור הזה כדי לפתוח את דף הפרטים של ההרצה.
  3. לוחצים על Test results כדי לעבור לקטגוריה Cloud Storage שבה נמצאות תוצאות הבדיקה של ההפעלה הזו.
  4. פותחים את artifacts/coverage.ec כדי לראות את דוח הכיסוי של הקוד.

ניתוח תוצאות הבדיקה

אחרי כמה דקות, כלי gcloud ידפיס סיכום בסיסי של תוצאות הבדיקה:

תוצאות הבדיקה של הפקודה

הפלט של הפעלת הבדיקה בשורת הפקודה כולל גם קישור להצגת תוצאות הבדיקה. מידע נוסף על פרשנות התוצאות האלה זמין במאמר ניתוח Firebase Test Lab בתוצאות ל-Android.

התחברות בהתאמה אישית והזנת טקסט באמצעות בדיקת Robo

בדיקת הרובוט ממלאת באופן אוטומטי מסכי כניסה שמשתמשים בחשבון Google לאימות, אלא אם משתמשים בפרמטר --no-auto-google-login. הוא יכול גם להשלים מסכי כניסה בהתאמה אישית באמצעות פרטי הכניסה של חשבון הבדיקה שתספקו. אפשר גם להשתמש בפרמטר הזה כדי לספק טקסט קלט מותאם אישית לשדות טקסט אחרים שבהם האפליקציה משתמשת.

כדי למלא שדות טקסט באפליקציה, צריך להשתמש בפרמטר --robo-directives ולספק רשימה של זוגות key-value שמופרדים בפסיקים, כאשר key הוא שם המשאב של Android של רכיב היעד בממשק המשתמש, וה-value הוא מחרוזת הטקסט. תוכלו להשתמש בדגל הזה גם כדי להורות ל-Robo להתעלם מאלמנטים ספציפיים בממשק המשתמש (למשל, לחצן 'יציאה'). יש תמיכה בשדות EditText, אבל לא בשדות טקסט ברכיבי ממשק המשתמש של WebView.

לדוגמה, אפשר להשתמש בפרמטר הבא להתחברות בהתאמה אישית:

--robo-directives username_resource=username,password_resource=password

פקודות ודגלים זמינים

ב-Test Lab של ה-CLI של gcloud יש מספר פקודות ודגלים שמאפשרים להריץ בדיקות עם מפרטים שונים:

  • דגל Android Test Orchestrator: דגל להפעלת 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 אירעה שגיאה בתשתית הבדיקה.