פלטפורמת Developer Device Platform (DDP) מחליפה את מסוף Firebase Test Lab הקודם ואת תהליכי העבודה של Test Lab CLI ב-CLI מאובטח, מאוחד ובעל ביצועים גבוהים שמתמקד ב-Google Cloud: gcloud beta device-run
במדריך הזה מפורטים תרגומים של שורות פקודה ומיפוי של תגים מ-Test Lab (או מ-Flank) ל-DDP. אפשר להשתמש בהנחיות האלה כדי להעביר את הבדיקות באופן ידני. במאמר מעבר מ-Firebase Test Lab ל-Developer Device Platform מפורטים כלי אוטומציה, יתרונות, הבדלים עיקריים וטיפים להעברה.
העברת חלוקה לפלחים (sharding)
ה-DDP משפר את הגדרות חלוקת הנתונים (sharding) על ידי החלפה של חלוקת הנתונים החכמה והמורכבת של Flank שמבוססת על Cloud Storage, וגם של חלוקת הנתונים האחידה של Test Lab.
פיצול אחיד
- מגדירים את
--sharding-option=uniform. מגדירים את
--uniform-sharding-count={count}(1-20 למוצרים פיזיים, 1-200 למוצרים וירטואליים).Firebase Test Lab מדור קודם:
--num-uniform-shards {N}DDP CLI:
--sharding-option=uniform --uniform-sharding-count={N}
פיצול חכם
- מגדירים את
--sharding-option=smart. - הגדרה של
--smart-sharding-target-duration={duration}(לדוגמה,2m,10m,1h; הטווח התקין:2mעד1h). - מגדירים את
--smart-sharding-record-name={record_name}(מצביע לרשומת המעקב של YAML בתוך--bucket-nameבקטעautomation/smart-sharding/). - מגדירים את
--smart-sharding-max-shard-count={max_count}(מגבלה מקסימלית אופציונלית: 0-20 לכרטיסים פיזיים, 0-200 לכרטיסים וירטואליים).
שימוש במטא-נתונים היסטוריים של תזמון מ-30 הימים האחרונים:
Legacy Flank:
max-test-shards: 10 shard-time: 120 smart-flank-gcs-path: gs://my-bucket/smart-sharding/timing-record.yamlDDP CLI:
--sharding-option=smart \ --smart-sharding-max-shard-count=10 \ --smart-sharding-target-duration=2m \ --smart-sharding-record-name=timing-record \ --bucket-name=my-bucket
הגדרת YAML הצהרתית (--flags-file)
במקרים של הגדרות מורכבות או צוותים שמעדיפים לשמור על קבצים
עם בקרת גרסאות במקום להשתמש בפקודות ארוכות בטרמינל, gcloud מספק מעבד מקדים אוניברסלי
--flags-file של ארגומנטים (ראו $ gcloud topic flags-file):
Android
gcloud beta device-run sessions submit instrumentation --flags-file=device-run-flags.yaml
iOS
gcloud alpha device-run sessions submit xctest --flags-file=device-run-flags.yaml
דוגמה להגדרת דגלים לרשימה ולמילון עם ערכים מרובים:
Android
# device-run-flags.yaml
--device:
- mediumphone-arm-32
- shiba-36
--apps:
- app-debug.apk
- test-helper.apk
--test: app-debug-androidTest.apk
--bucket-name: my-bucket
--sharding-option: smart
--smart-sharding-target-duration: 2m
--smart-sharding-record-name: timing-record
--paths-to-pull:
- /sdcard/screenshots
- /sdcard/coverage.ec
--additional-test-options:
coverage: "true"
clearPackageData: "true"
iOS
# device-run-flags.yaml
--device:
- iphonese3-18-4
- iphone16pro-18-3
--test: MyTests.zip
--additional-apps:
- helper-app.ipa
--xcode-version: '16.4'
--xctest-timeout: 15m
--other-files-to-push:
/local/path/test-config.json: com.example.app:/Documents/test-config.json
--paths-to-pull:
- com.example.app:/Documents/screenshots
--labels:
env: staging
team: mobile-qa
דוגמאות לתרגום פקודות מקצה לקצה
כדי לראות דוגמאות קונקרטיות, אפשר לעיין בתרגומים הרגילים והמורכבים האלה.
דוגמה: הרצת בדיקת אינסטרומנטציה רגילה
Firebase CLI מדור קודם:
gcloud firebase test android run \
--app=app-debug.apk \
--test=app-debug-androidTest.apk \
--device model=shiba,version=36 \
--timeout=5m \
--num-flaky-test-attempts=2 \
--directories-to-pull=/sdcard/screenshots \
--environment-variables key=value
תרגום של DDP CLI:
gcloud beta device-run sessions submit instrumentation \
--device=shiba-36 \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--instrumentation-timeout=5m \
--flaky-test-attempts=3 \
--paths-to-pull=/sdcard/screenshots \
--additional-test-options key=value
דוגמה: העברה של הגדרת YAML מורכבת של flank
הגדרות קודמות של Flank:
app: app-debug.apk
test: app-debug-androidTest.apk
device:
- model: shiba
version: 36
shard-time: 120
smart-flank-gcs-path: gs://my-bucket/smart-sharding/timing-record.yaml
תרגום של DDP CLI:
gcloud beta device-run sessions submit instrumentation \
--device=shiba-36 \
--apps=app-debug.apk \
--test=app-debug-androidTest.apk \
--bucket-name=my-bucket \
--sharding-option=smart \
--smart-sharding-target-duration=2m \
--smart-sharding-record-name=timing-record
אחרי ההפעלה ואחזור התוצאות
מכיוון ש-DDP לא מופעל עם ממשק משתמש גרפי לאינטרנט (כמו מסוף Firebase הקודם), המפתחים צריכים לנהל, לתאר ולבדוק את התוצאות ישירות באמצעות ה-CLI או ממשקי API בארכיטקטורת REST:
# 1. List active and completed test sessions
gcloud beta device-run sessions list
# 2. Get a summary and direct Cloud Storage bucket link of a session's results
gcloud beta device-run sessions describe session-number
# 3. Get detailed metadata and print full results
gcloud beta device-run sessions describe session-number --full
# 4. Cancel a running session (replaces console cancellation)
gcloud beta device-run sessions cancel session-number
טבלת עזר למיפוי דגלים
כאן מפורט מיפוי הדגלים להעברת הגדרות בדיקה מ-Flank או מ-gcloud
firebase test android/ios run לפקודות החדשות של DDP gcloud beta device-run sessions
submit instrumentation ו-gcloud alpha device-run sessions submit xctest.
פרמטרים ונכסים עיקריים
| פרמטר מדור קודם (Test Lab / Flank) | פרמטר של יעד DDP | פורמט / לוגיקת המרה |
|---|---|---|
--app |
--apps |
רשימה. אם מסופקים כמה קובצי APK או AAB של אפליקציות, צריך להעביר את כולם אל --apps לפי הסדר שבו הם יותקנו במכשיר. הנתיב יכול להיות מקומי או ב-Cloud Storage (gs://...). |
--test |
--test |
מחרוזת חובה. הנתיב לקובץ ה-APK של הבדיקה שמכיל בדיקות אינסטרומנטציה, מקומי או ב-Cloud Storage. |
--client-details |
--labels |
מילון של צמדי key=value לצירוף לסשן הבדיקה. |
הגדרת מכשירים וטירגוט
| פרמטר מדור קודם (Test Lab / Flank) | פרמטר של יעד DDP | פורמט / לוגיקת המרה |
|---|---|---|
--device model={M},version={V} |
--device={M}-{V} |
חובה מחרוזת שממפה את המודל ואת גרסת מערכת ההפעלה למחרוזת מזהה יחידה --device. הדגל --device של DDP מקבל כמה מזהי מכשירים שמופרדים בפסיקים (למשל, --device=shiba-34,tokay-36) או כמה דגלים של --device, כשכל אחד מהם מציין מזהה מכשיר נפרד (למשל, --device=shiba-34 --device=tokay-36). |
--device locale={L} |
--locale={L} |
מחרוזת. ממפה את השפה והאזור של המכשיר לדגל --locale ברמה העליונה (language-region, למשל --locale=en-US) שצריך להעביר אליו את המכשיר לפני הרצת הבדיקה. |
--device orientation={O} |
--orientation={O} |
מחרוזת. מיפוי כיוון המכשיר לדגל --orientation ברמה העליונה (portrait או landscape). |
| לא רלוונטי | --coordinates |
מחרוזת. התכונה יוצרת קואורדינטות פיקטיביות של מיקום ה-GPS במכשיר (לדוגמה, --coordinates=37.4220,-122.0841). |
בקרה על ביצוע בקשות וחוסר יציבות
| פרמטר מדור קודם (Test Lab / Flank) | פרמטר של יעד DDP | פורמט / לוגיקת המרה |
|---|---|---|
--num-flaky-test-attempts {R} |
--flaky-test-attempts {A} |
מספר שלם. מספר הניסיונות המקסימלי להרצה של כל מקטע בדיקה. המרת מספר הניסיונות החוזרים R למגבלת הניסיונות הכוללת A: A = R +1 (ברירת המחדל היא 1). |
| לא רלוונטי | --flaky-test-parallel-retry |
בוליאני. אם לנסות שוב במקביל את הבדיקות שנכשלו (ברירת המחדל היא false להרצה ברצף). |
| לא רלוונטי | --flaky-test-retry-level |
מחרוזת. ההגדרה קובעת אם לנסות שוב ברמת ה-shard או ברמת ה-test (ברירת המחדל היא shard). |
--async |
--async |
בוליאני. מפות 1:1. כברירת מחדל, הפקודה מופעלת באופן סינכרוני. צריך להעביר את זה כדי לחזור לטרמינל באופן מיידי. הפעולה מסתיימת מיד אחרי העלאת הקובץ, ומודפסים מזהי הפעולה והסשן. |
מטרות וכלים להרצת בדיקות
| פרמטר מדור קודם (Test Lab / Flank) | פרמטר של יעד DDP | פורמט / לוגיקת המרה |
|---|---|---|
--environment-variables |
--additional-test-options |
מילון של אפשרויות שמועברות אל כלי ההרצה של בדיקת האינסטרומנטציה. פורמטים שנתמכים ב---test-targets לא מותרים כאן. |
--test-targets |
--test-targets |
מילון של יעדי בדיקה או מסנני יעדים להפעלה. כל יעד חייב להיות מוגדר באופן מלא עם שם החבילה או שם המחלקה שתומכים במקשים כמו package, notPackage, class, notClass, annotation, notAnnotation ו-size. אין תמיכה בפורמטים testfile או notTestfile. |
--use-orchestrator |
--orchestrator-version |
אם להשתמש בתזמור בדיקות ל-Android. מקבל את הערך auto (מנהל תזמור ברירת המחדל) או מחרוזת של גרסה ספציפית (למשל, 1.6). אפשר לשלוח שאילתה לגבי הגרסאות הזמינות באמצעות gcloud beta device-run software-versions list. |
--test-runner-class |
--test-runner-class |
מחרוזת. המחלקה המלאה של מריץ בדיקות האינסטרומנטציה (למשל, com.foo.MyRunner). אם לא מציינים מחלקת הרצה, מחלקת ברירת המחדל נקבעת לפי המניפסט של האפליקציה. |
--directories-to-pull |
--paths-to-pull |
רשימה. ספריות להורדה מהמכשיר אחרי הרצת הבדיקה. |
--other-files |
--other-files-to-push |
מילון. רשימה מופרדת בפסיקים של קובצי עזר ב-SOURCE=DEST שצריך להעביר למכשיר לפני הרצת הבדיקה. |
פלט ואחסון
| פרמטר מדור קודם (Test Lab / Flank) | פרמטר של יעד DDP | פורמט / לוגיקת המרה |
|---|---|---|
--results-bucket |
--bucket-name |
מחרוזת. קטגוריה של Cloud Storage שאליה מועלים פריטי בדיקה, כולל קובצי קלט מקומיים, קובצי פלט של בדיקות ורשומות תזמון של חלוקה חכמה לפלחים (ברירת המחדל היא gs://[PROJECT_ID]-devicerun אם לא צוין אחרת). |
--results-dir |
מנוהל באופן אוטומטי | לא נתמך. נתיבי משנה מאורגנים אוטומטית ב-Cloud Storage תחת automation/sessions/{session_id}/. |
הגדרת חלוקת נתונים
| פרמטר מדור קודם (Test Lab / Flank) | פרמטר של יעד DDP | פורמט / לוגיקת המרה |
|---|---|---|
--num-uniform-shards {N} |
--sharding-option=uniform --uniform-sharding-count={N} |
מחרוזת ומספר שלם. הגדרת הדגל המשולב מפעילה את אסטרטגיית הפיצול האחיד ומגדירה את מספר הפיצולים המקסימלי (טווח מספרים חוקי: 1-20 פיזיים, 1-200 וירטואליים). |
אגף --max-test-shards {N} |
--sharding-option=smart --smart-sharding-max-shard-count={N} |
מחרוזת ומספר שלם. הגדרה משולבת של דגלים מפעילה אסטרטגיית פיצול חכמה ומגדירה את מספר הפיצולים המקסימלי (טווח מספרים חוקי: 0-20 פיזיים, 0-200 וירטואליים). |
אגף --shard-time {S} |
--sharding-option=smart --smart-sharding-target-duration={S} |
חובה מחרוזת. הפעלת חלוקה חכמה לפלחים עם זמן ביצוע מוגדר (למשל, 2m, 10m, 1h). הטווח התקין: 2m עד 1h. |
אגף --smart-flank-gcs-path |
--smart-sharding-record-name={name} --bucket-name={bucket} |
מחרוזת חובה. שם קובץ ה-YAML של רשומת הפיצול (לא כולל סיומת הקובץ) בתוך --bucket-name בקטע smart-sharding/ ב-Cloud Storage. |
דגלים ספציפיים ל-Android
אתם יכולים להיעזר בטבלה הזו כדי למפות את הדגלים הקודמים של gcloud firebase test android run לדגלים המקבילים החדשים של device-run:
פרמטר מדור קודם (firebase android) |
פרמטר של יעד DDP | פורמט / לוגיקת המרה |
|---|---|---|
--additional-apks |
--apps |
רשימה. מיזוג ערכים נוספים מהרשימה ישירות לרשימה הראשית --apps. |
| לא רלוונטי | --bugreport |
מחרוזת. איסוף של bugreport מלא מהמכשיר (ערכים: always, on-failure). |
| לא רלוונטי | --dumpsys |
מחרוזת. איסוף מצב המערכת באמצעות dumpsys (ערכים: always, on-failure). |
--timeout |
--instrumentation-timeout |
משך הזמן (למשל, 10m, 20s, 1h). הטווח התקין: 1m עד 3h (ברירת המחדל היא 5m). |
--record-video |
--video |
מחרוזת. מתי להקליט סרטון של מסך המכשיר במהלך הרצת הבדיקה.הערכים החוקיים הם always או on-failure. |
דגלים ספציפיים ל-iOS
אתם יכולים להיעזר בטבלה הזו כדי למפות את הדגלים הקודמים של gcloud firebase test ios run לדגלים המקבילים החדשים של device-run:
פרמטר מדור קודם (firebase ios) |
פרמטר של יעד DDP | פורמט / לוגיקת המרה |
|---|---|---|
--test |
--test |
הנתיב לקובץ ה-ZIP של XCTest שנבנה. |
--device model={M},version={V} |
--device={M}-{V} |
מחרוזת מזהה של מכשיר היעד. |
--device locale={L} |
--locale={L} |
מחרוזת של הלוקאל המטורגט (language-region, לדוגמה: --locale=en-US). |
--timeout |
--xctest-timeout |
משך (למשל, 5m). הטווח: 1m עד 1h. |
--xcode-version |
--xcode-version |
מזהה הקטלוג או מחרוזת הגרסה של Xcode שרוצים להשתמש בה (למשל, xcode-16-4 או 16.4). אפשר לשלוח שאילתה לגבי הגרסאות הזמינות באמצעות gcloud beta device-run software-versions list. |
--results-bucket |
--bucket-name |
קטגוריית GCS של יעד מותאם אישית. |
--async |
--async |
סינכרוני כברירת מחדל, מעבר ליציאה מיידית. |
--other-files |
--other-files-to-push |
מילון בפורמט SOURCE=BUNDLE_ID:DEST. |
--directories-to-pull |
--paths-to-pull |
רשימה בפורמט BUNDLE_ID:DEVICE_PATH. |
--additional-ipas |
--additional-apps |
רשימה של קובצי IPA של כלי עזר שצריך להתקין לפני הבדיקה. |
--xctestrun-file |
--xctestrun-file |
הנתיב אל קובץ ה-plist המותאם אישית .xctestrun. |
--num-flaky-test-attempts |
--flaky-test-attempts |
מספר הניסיונות החוזרים (למשל, 3). |
--client-details |
--labels |
צמדי מפתח/ערך (KEY=VALUE). |
משוב ושאלות
צרו איתנו קשר כדי לדווח על באגים, להגיש בקשות להוספת תכונות או להצטרף לפורום הדיונים שלנו.