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

פלטפורמת המכשירים למפתחים (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.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):

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).

משוב ושאלות

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