תרגום של פקודות ודגלים מ-Firebase Test Lab לפלטפורמת מכשירי מפתחים

פלטפורמת המכשירים למפתחים (DDP) מחליפה את מסוף Firebase Test Lab מדור קודם ואת תהליכי העבודה של Test Lab CLI. הפלטפורמה החדשה היא מאוחדת, מאובטחת ובעלת ביצועים גבוהים, והיא מבוססת עלGoogle Cloud-first CLI לבדיקות: 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.yaml
    
  • ‫DDP 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 beta 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 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) פרמטר של יעד DDP פורמט / לוגיקת המרה
--app --apps רשימה. אם מספקים כמה קובצי APK או AAB של אפליקציות, צריך להעביר את כולם אל --apps בסדר שבו הם יותקנו במכשיר. הנתיב יכול להיות מקומי או ב-Cloud Storage‏ (gs://...).
--test --test חובה מחרוזת. הנתיב אל קובץ ה-APK של הבדיקה שמכיל בדיקות Instrumentation, מקומי או ב-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).
N/A --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).
N/A --flaky-test-parallel-retry בוליאני. האם לנסות שוב הרצת בדיקות שנכשלו במקביל (ברירת המחדל היא false להרצה רציפה).
N/A --flaky-test-retry-level מחרוזת. ההגדרה קובעת אם לנסות שוב ברמה של shard או ברמה של test (ברירת המחדל היא shard).
--async --async בוליאני. מפות Google‏ 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} ‫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) פרמטר של יעד DDP פורמט / לוגיקת המרה
--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) פרמטר של יעד DDP פורמט / לוגיקת המרה
--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).

משוב ושאלות

כדי לדווח על באגים, להגיש בקשות להוספת תכונות או להצטרף לפורום הדיונים שלנו, אפשר ליצור איתנו קשר.