התחלת בדיקות עם ה-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 Interfaces‏ (ABI) הנתמכים, תאריכי ההשקה של דגם המכשיר, וגם אם המכשיר פיזי או וירטואלי.

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

    gcloud firebase test android versions list

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

    פלט לדוגמה

    gcloud android versions list

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

  1. פותחים את הקישור למסוף Firebase שהכלי gcloud הדפיס מעל לטבלת תוצאות הבדיקה בטרמינל.
  2. לוחצים על ביצוע בדיקה מהרשימה שבקישור הזה כדי לפתוח את דף הפרטים של הביצוע הזה.
  3. לוחצים על Test results כדי לעבור לקטגוריה Cloud Storage עם תוצאות הבדיקה של ההפעלה הזו.
  4. פותחים את 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 אירעה שגיאה בתשתית הבדיקה.