התחלת בדיקות עם ה-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 שרוצים לבדוק, המערכת משתמשת בברירת המחדל שצוינה בעמודה TAGS.

    פלט לדוגמה

    gcloud android versions list

  • 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:

  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 להתעלם מרכיבי 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 אירעה שגיאה בתשתית הבדיקה.