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

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

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

    gcloud firebase test android versions list

    אפשר להשתמש במזהה מכל אחת משתי עמודות הפקודה הראשונות פלט (OS_VERSION_ID ו-VERSION), כדי להריץ מאוחר יותר בדיקות מול Android גרסת מערכת ההפעלה. אם לא תציינו את הגרסאות של 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 מתרגלת את האפליקציה באמצעות ביצוע ניתוח הנתיבים השונים בממשק המשתמש של האפליקציה, ואז מבצעת סריקה באמצעות האפליקציה כדי לאתר קריסות ובעיות פוטנציאליות אחרות.

כדי להריץ בדיקה של 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 Test תזמור, שנה את משתני הסביבה שלך באופן הבא:

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

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

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

  • דגל תזמור בדיקות של Android: דגל להפעלת האורצ'סטר, כלי שמאפשר לך להריץ כל אחד של האפליקציה בהטמעה עצמית של Instrumentation. Test Lab תמיד מפעיל את הגרסה האחרונה של 'תזמור'.

  • סימונים לבדיקה בלולאת משחקים: קבוצה של דגלי הגדרה שמאפשרים להפעיל הדגמה (דמו) ולשלוט בה. מצב" כדי לדמות פעולות של שחקנים באפליקציות של משחקים. מידע נוסף על הפעלת בדיקות של 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 אירעה שגיאה בתשתית הבדיקה.