התחלת בדיקות עם ה-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: דגל להפעלת Orchestrator, כלי שמאפשר לכם להריץ כל בדיקה של האפליקציה שלכם בהפעלה של Instrumentation בפני עצמה. ב-Test Lab תמיד פועלת הגרסה האחרונה של 'תזמור'.

  • דגלים לבדיקת 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 סביבת הבדיקה לביצוע הבדיקה הזו לא נתמכת בגלל מאפייני בדיקה לא תואמים. השגיאה הזו עשויה להתרחש אם סוג המכשיר שנבחר לא תומך ברמת Android API שנבחרה.
19 מטריצת הבדיקה בוטלה על ידי המשתמש.
20 אירעה שגיאה בתשתית הבדיקה.