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

פלטפורמת 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.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 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).

משוב ושאלות

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