פלטפורמת המכשירים למפתחים (DDP) מחליפה את מסוף Firebase Test Lab מדור קודם ואת תהליכי העבודה של Test Lab CLI. היא מציעה CLI מאוחד, מאובטח ובעל ביצועים גבוהים לבדיקותGoogle Cloud: gcloud beta device-run
במדריך הזה מפורטים תרגומים של פקודות בשורת הפקודה ומיפוי של דגלים מ-Test Lab (או מ-Flank) ל-DDP. אפשר להשתמש בהנחיות האלה כדי להעביר את הבדיקות באופן ידני. במאמר מעבר מ-Firebase Test Lab ל-Developer Device Platform מפורטים כלי אוטומציה, יתרונות, הבדלים חשובים וטיפים להעברה.
העברה של חלוקת נתונים
DDP מודרניזציה של הגדרות חלוקה (sharding) על ידי החלפה מקומית של חלוקה חכמה מבוססת Cloud Storage מורכבת של Flank וחלוקה אחידה של Test Lab.
חלוקה אחידה למקטעים
- מגדירים את
--sharding-option=uniform. מגדירים את
--uniform-sharding-count={count}(1-20 למוצרים פיזיים, 1-200 למוצרים וירטואליים).Legacy 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):
gcloud beta device-run sessions submit instrumentation --flags-file=device-run-flags.yaml
דוגמה להגדרת דגלים לרשימה ולמילון עם כמה ערכים:
# 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"
דוגמאות לתרגום פקודות מקצה לקצה
דוגמאות קונקרטיות אפשר לראות בתרגומים הרגילים והמורכבים האלה.
דוגמה: הרצת בדיקת אינסטרומנטציה רגילה
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 Console מדור קודם), מפתחים צריכים לנהל, לתאר ולבדוק את התוצאות ישירות באמצעות ה-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.
פרמטרים ונכסים מרכזיים
| פרמטר מדור קודם (Test Lab / Flank) | פרמטר של מודעות דינמיות לרשת החיפוש | פורמט / לוגיקת המרה |
|---|---|---|
--app |
--apps |
רשימה. אם מספקים כמה קובצי APK או AAB של אפליקציות, צריך להעביר את כולם אל --apps בסדר שבו הם יותקנו במכשיר. הנתיב יכול להיות מקומי או ב-Cloud Storage (gs://...). |
--test |
--test |
חובה מחרוזת. הנתיב אל קובץ ה-APK של הבדיקה שמכיל בדיקות Instrumentation, מקומי או ב-Cloud Storage. |
--client-details |
--labels |
מילון של צמדי key=value שאפשר לצרף לסשן הבדיקה. |
טירגוט והגדרת מכשירים
| פרמטר מדור קודם (Test Lab / Flank) | פרמטר של מודעות דינמיות לרשת החיפוש | פורמט / לוגיקת המרה |
|---|---|---|
--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). |
| N/A | --coordinates |
מחרוזת. מדמה קואורדינטות של מיקום GPS במכשיר (לדוגמה, --coordinates=37.4220,-122.0841). |
בקרה על ביצוע בקשות ועל תנודתיות
| פרמטר מדור קודם (Test Lab / Flank) | פרמטר של מודעות דינמיות לרשת החיפוש | פורמט / לוגיקת המרה |
|---|---|---|
--num-flaky-test-attempts {R} |
--flaky-test-attempts {A} |
מספר שלם. מספר הניסיונות המקסימלי להרצה לכל חלק של בדיקה. המרת מספר הניסיונות החוזרים R למגבלת הניסיונות הכוללת A: A = R +1 (ברירת המחדל היא 1). |
| N/A | --flaky-test-parallel-retry |
בוליאני. האם לנסות שוב הרצת בדיקות שנכשלו במקביל (ברירת המחדל היא false להרצה רציפה). |
| N/A | --flaky-test-retry-level |
מחרוזת. ההגדרה קובעת אם לנסות שוב ברמה של shard או ברמה של test (ברירת המחדל היא shard). |
--async |
--async |
בוליאני. מפות Google 1:1. כברירת מחדל, הפקודה מופעלת באופן סינכרוני. מעבירים את הפקודה הזו כדי לחזור לטרמינל באופן מיידי. הכלי יוצא מיד אחרי העלאת הקובץ ומדפיס את מזהי הפעולה והסשן. |
הפעלת בדיקות ויעדים
| פרמטר מדור קודם (Test Lab / Flank) | פרמטר של מודעות דינמיות לרשת החיפוש | פורמט / לוגיקת המרה |
|---|---|---|
--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) | פרמטר של מודעות דינמיות לרשת החיפוש | פורמט / לוגיקת המרה |
|---|---|---|
--results-bucket |
--bucket-name |
מחרוזת. קטגוריה של Cloud Storage שאליה מועלים ארטיפקטים של בדיקות, כולל קובצי קלט מקומיים, קובצי פלט של בדיקות ורשומות של תזמון חלוקה חכמה (ברירת המחדל היא gs://[PROJECT_ID]-devicerun אם לא מצוין אחרת). |
--results-dir |
ניהול אוטומטי | לא נתמך. נתיבי המשנה מאורגנים אוטומטית ב-Cloud Storage תחת automation/sessions/{session_id}/. |
הגדרת חלוקת נתונים
| פרמטר מדור קודם (Test Lab / Flank) | פרמטר של מודעות דינמיות לרשת החיפוש | פורמט / לוגיקת המרה |
|---|---|---|
--num-uniform-shards {N} |
--sharding-option=uniform --uniform-sharding-count={N} |
String ו-Integer. הגדרת השילוב של הדגלים מפעילה גם אסטרטגיית חלוקה אחידה וגם מגדירה את המספר המקסימלי של השברים (טווח המספרים התקין: 1-20 פיזיים, 1-200 וירטואליים). |
צד --max-test-shards {N} |
--sharding-option=smart --smart-sharding-max-shard-count={N} |
String ו-Integer. הגדרת השילוב של הדגלים מפעילה את אסטרטגיית החלוקה החכמה ומגדירה את המספר המקסימלי של השברים (טווח המספרים התקין: 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) |
פרמטר של מודעות דינמיות לרשת החיפוש | פורמט / לוגיקת המרה |
|---|---|---|
--additional-apks |
--apps |
רשימה. מיזוג ערכים נוספים ברשימה ישירות לרשימה הראשית --apps. |
| N/A | --bugreport |
מחרוזת. איסוף bugreport מלא מהמכשיר (ערכים: always, on-failure). |
| N/A | --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) |
פרמטר של מודעות דינמיות לרשת החיפוש | פורמט / לוגיקת המרה |
|---|---|---|
--test |
--test |
הנתיב לקובץ ה-ZIP של XCTest שנבנה. |
--device model={M},version={V} |
--device={M}-{V} |
מחרוזת של מזהה מכשיר היעד. |
--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). |
משוב ושאלות
כדי לדווח על באגים, להגיש בקשות להוספת תכונות או להצטרף לפורום הדיונים שלנו, אפשר ליצור איתנו קשר.