המדריך הזה מתאר איך להריץ בדיקה, Robo או Game Loop באמצעות ה-CLI של gcloud.
לרשימה מלאה של פקודות gcloud
שבהן אפשר להשתמש
באפליקציה ל-Android ב-Test Lab, עליך להיכנס אל
מסמכי עזר של gcloud firebase test android
.
לפני שמתחילים
אם עדיין לא עשיתם זאת, מוסיפים את Firebase לפרויקט Android.
שלב 1. הגדרת ה-CLI של gcloud
- מורידים את Google Cloud SDK
- מוודאים שההתקנה מעודכנת:
gcloud components update
- נכנסים ל-CLI של gcloud באמצעות חשבון Google:
gcloud auth login
- מגדירים את פרויקט Firebase ב-gcloud, שבו PROJECT_ID
המזהה של פרויקט Firebase:
gcloud config set project PROJECT_ID
כולל ה-CLI של gcloud.
שלב 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
מפורטות גרסאות מערכת ההפעלה הנתמכות במכשיר.
פלט לדוגמה
- העמודה
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
היא ברירת המחדל.פלט לדוגמה
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:
- פותחים את הקישור למסוף Firebase שהכלי
gcloud
הדפיס מעל את טבלת תוצאות הבדיקה במסוף. - לוחצים על ביצוע בדיקה מהרשימה בקישור הזה כדי לפתוח את בדף הפרטים.
- לוחצים על Test results כדי לעבור לקטגוריה Cloud Storage עם ההגדרה הזו מתוצאות הבדיקה.
- כדי לראות את דוח כיסוי הקוד, צריך לפתוח את
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 | אירעה שגיאה בתשתית הבדיקה. |