מעבר מ-Firebase Test Lab ל-Developer Device Platform

אנחנו שמחים להודיע על גרסת טרום-השקה (Preview) של ממשק שורת הפקודה gcloud beta device-run ב-Developer Device Platform ‏(DDP), שיפור של ממשק שורת הפקודה gcloud firebase test.

‫gcloud beta device-run CLI מפשט ומעדכן את ההרצה של בדיקות אוטומציה ובדיקות מכשור במכשיר, פיזי או וירטואלי. בגרסת טרום-ההשקה יש תמיכה ב-Android Instrumentation וב-iOS XCTest. הוראות מופיעות במאמר בנושא סקירה כללית של הפעלת המכשיר.

סקירה כללית והטבות

מעבר מ-Firebase Test Lab אל Developer Device Platform ‏ (DDP) מציע כמה יתרונות משמעותיים, במיוחד מבחינת חיסכון בעלויות, מהירות ביצוע הבדיקות, ניפוי באגים מתקדם ותמיכה מובנית בתהליכי עבודה מבוססי-AI.

מפתחים שמריצים בדיקות של אפליקציות לנייד בענן צריכים לתמרן בין מודלים שונים של הגדרות אישיות (Firebase Test Lab) או לתחזק צינורות עיבוד נתונים נוספים ושכבות של מעטפת כלים (Flank).

‫gcloud beta device-run CLI ב-Developer Device Platform משלב את היכולות האלה ישירות ב-Google Cloud CLI הראשי. הוא מספק ממשק קצה עורפי חזק יותר, הצהרתי וניתן להרחבה, שמריץ בדיקות בצורה צפויה ויעילה במכשירים פיזיים וגם במכשירים וירטואליים.

התכונות והיכולות העיקריות שהופכות את DDP לפלטפורמה טובה יותר בהשוואה ל-Firebase Test Lab:

פיצול חכם מתקדם

ב-Firebase Test Lab, חלוקת הבדיקות לפלחים מתבססת על נתוני תזמון של הרצה אחת, אבל החלוקה החכמה לפלחים ב-DDP הרבה יותר חכמה:

  • נתונים היסטוריים של 30 יום: פלטפורמת DDP מנתחת עד 30 יום של היסטוריית הרצה כדי לחלק את הבדיקות למקטעים יציבים שעברו אופטימיזציה.
  • מעקב אחרי משך הזמן לפי מכשיר ספציפי: פלטפורמת DDP עוקבת אחרי זמני הריצה של ביצוע הבדיקה לפי דגם מכשיר ספציפי, במקום להשתמש בממוצעים כלליים של הפלטפורמה בכל המכשירים.
  • מודל התקורה של תזמור בדיקות ל-Android: פלטפורמת DDP מביאה בחשבון את תקורת ההפעלה של תזמור בדיקות ל-Android לכל מכונה לבדיקה, כדי לוודא שהחלוקה לפלחים לא חורגת ממשך הזמן שהוגדר כיעד.

ניסיונות חוזרים פרטניים וחסכוניים

ב-Test Lab, אם מקרה בדיקה אחד בתוך מקטע נכשל, צריך להריץ מחדש את כל המקטע (שעשוי לכלול עשרות בדיקות). זה מגדיל את זמני ההרצה ואת עלויות החיוב. ב-DDP יש מנגנונים יעילים מאוד לניסיונות חוזרים:

  • ניסיונות חוזרים ברמת מקרה הבדיקה המטורגט: מבודדים ומנסים שוב רק את מקרי הבדיקה הספציפיים שנכשלו בתוך שבר.
  • ניסיונות חוזרים של בדיקות לא יציבות (flaky tests) ברצף: כברירת מחדל, מריץ ניסיונות חוזרים של בדיקות לא יציבות ברצף (במקום במקביל כמו ב-Test Lab). השילוב הזה עם ניסיונות חוזרים ברמת תרחיש הבדיקה מקצר באופן משמעותי את משך הבדיקות הכולל, וכך חוסך עלויות משמעותיות בחיוב על המכשיר.

תמיכה מתקדמת בבדיקות Android

‫DDP מטפל במגבלות קיימות בממשק ה-API של Test Lab לבדיקות:

  • קובץ APK לבדיקה בלבד (ללא אפליקציות דמה): בעבר, כדי להריץ בדיקות אינסטרומנטציה עצמית ב-Test Lab, היה צריך אפליקציית דמה. ב-DDP אפשר להריץ בדיקות אינסטרומנטציה רק עם APK לבדיקה.
  • זמן קצוב מורחב לשארד: DDP מגדיל את מגבלת הביצוע המקסימלית לשארד בדיקת אינסטרומנטציה יחיד מ-45 דקות ב-Test Lab ל-3 שעות.
  • כמה כלי תזמור: DDP תומך בכמה גרסאות של תזמור בדיקות ל-Android.
  • תמיכה מובנית בקובצי C++‎ בינאריים: DDP תומך בהרצת קובצי C++‎ בינאריים של Android.

אינטראקציות משופרות עם מכשירים וניפוי באגים מתקדם

התכונה DDP מספקת אינטראקציות מעמיקות יותר במכשיר ופריטי מידע עשירים יותר לניפוי באגים, בהשוואה לאלה שזמינים ב-Test Lab:

  • מיקומים מדומים: DDP תומך בהדמיה של קואורדינטות GPS של מכשיר.
  • תמיכה ב-ApkSets: מפתחים יכולים להתקין ApkSets (קבצים מסוג ‎.apks) ישירות במכשירים מרוחקים.
  • ניפוי באגים מתקדם: DDP חושף יומני מערכת חיוניים ומידע על תוצאות ניפוי הבאגים, כולל dumpsys ו-bugreport, ישירות למפתח.

קטלוג מכשירים שניתן להרחיב בקלות

DDP מחליף את קטלוג הסביבות הנוקשה והכבד של Test Lab ב-Device Catalog API שעבר עיצוב מחדש לחלוטין:

  • סינון בצד השרת: מאפשר למפתחים לסנן מכשירים בצד השרת, וכך להאיץ את השאילתות ולקצר את זמן האחזור של מטען הייעודי (payload).
  • נתוני זמינות בזמן אמת: DDP מספק נתוני זמינות של מכשירים בזמן אמת ישירות ל-הרצה במכשיר, כך שתוכלו לבחור מכשירים עם זמינות גבוהה ולהימנע מזמני המתנה ארוכים בתור – תכונה שחסרה לגמרי ב-Test Lab.

בחירת מסלול ההעברה

העברה אוטומטית באמצעות AI

כדי שהמעבר יהיה חלק, פיתחנו סוכן תרגום ייעודי: migrating-device-run.

אם אתם משתמשים בסוכני AI לתכנות, כמו Antigravity,‏ Claude Code או Codex, אתם יכולים לתרגם בקלות את סקריפטים הבדיקה המותאמים אישית שלכם. פשוט מעתיקים את כתובת ה-URL של הסכימה של מיומנות ההעברה ומדביקים אותה בסביבת העבודה של העוזר האישי מבוסס-AI, כמו שמתואר כאן.

תבנית לפרומפט להעברה

You are an expert migration assistant. I want to migrate my test command and
configuration to the new `gcloud beta device-run` command format.

Use this migration guideline as your ruleset:
https://docs.cloud.google.com/developer-device-platform/device-run/migrate/migration-skill.md.txt

Translate the following command and configuration to the new `gcloud beta
device-run` CLI: (Insert your raw Firebase Test / Flank YAML or bash script
here.)

העברה ידנית

כדי לעבור ידנית מ-Firebase Test Lab ל-DDP, צריך לפעול לפי התרגומים של הפקודות והדגלים. כשמתכוננים להעברה, חשוב לזכור את ההבדלים המבניים הבאים:

  • ארכיטקטורת CLI שמתמקדת במשאבים: ב-gcloud beta device-run משתמשים בתבנית פקודה מודרנית של <resource> <verb> בשלוש קבוצות משאבים עיקריות:
    • ‫devices: גישה ישירה דרך CLI למלאי של קטלוג המכשירים ולפרטי מכשירים מקיפים, במקום פקודות firebase test android/ios models/versions/locales מדור קודם.
    • ‫software-versions: גישה ישירה ל-CLI לגרסאות תוכנה נתמכות (כמו גרסאות של Xcode ותזמור בדיקות ל-Android), שמחליפה את firebase test ios xcode-versions list המדור קודם.
    • ‫sessions: ניהול מחזור החיים של סשן מקצה לקצה ישירות במסוף, כולל sessions submit instrumentation,‏ sessions submit xctest,‏ sessions wait,‏ sessions describe [--full],‏ sessions list ו-sessions cancel.
  • מבנה פקודות המשנה: סוגי הבדיקות הם סטנדרטיים ומקוננים תחת sessions submit כפקודות משנה נקיות, במקום להשתמש בדגלי סוג.
    • ‫DDP: ‏ gcloud beta device-run sessions submit instrumentation (Android) או gcloud alpha device-run sessions submit xctest (iOS)
    • Test Lab: ‏ gcloud firebase test android run --type=instrumentation (Android) או gcloud firebase test ios run --type=xctest (iOS)
  • אפליקציות ממוזגות וברבים: קובצי APK רגילים ומשלימים ממוזגים ברשימת הדגלים --apps ברבים (למשל, --apps=app.apk,helper.apk) במקום לפצל אותם ל---app ול---additional-apks.
  • ארגומנטים של מילונים ורשימות מובְנים: החלפת קבצים מופרדים בפסיקים או רשימות סביבה בפורמטים מובְנים של מילונים ורשימות של CLI: ‏--other-files-to-push KEY=VALUE, ‏--additional-test-options KEY=VALUE, ‏--paths-to-pull ו---test-targets.
  • אמצעי בקרה מאוחדים של חלוקה לפלחים וניסיונות חוזרים: תמיכה חלקה בחלוקה אחידה לפלחים ובחלוקה חכמה לפלחים, לצד ניסיונות חוזרים מקבילים (--flaky-test-parallel-retry, --flaky-test-retry-level) ואבחון בזמן ריצה (--dumpsys, --bugreport, --video).
  • הרצה אסינכרונית: gcloud beta device-run תומך בהרצה אסינכרונית, שמאפשרת להריץ בדיקות בלי לחכות שהן יסתיימו. משתמשים ב-gcloud beta device-run sessions wait <SESSION_ID> כדי לחכות לסיום.
  • הגדרת YAML הצהרתית (--flags-file): צוותים שעוברים מ-Flank ומעדיפים קובצי YAML עם בקרת גרסאות על פני מחרוזות של סקריפטים של מעטפת יכולים להשתמש בתמיכה האוניברסלית של gcloud ב---flags-file=device-run-flags.yaml.

המאמרים הבאים

  1. כדי להגדיר את Developer Device Platform, אפשר להיעזר במדריך למתחילים.
  2. כדאי לעיין בקטלוג המכשירים כדי לראות את כל המכשירים הזמינים.
  3. כדי להתחיל להריץ בדיקות, כדאי לקרוא על הרצה במכשיר.
  4. במאמר תרגום פקודות ודגלים מופיע מיפוי של דגלי Test Lab ו-Flank ל-DDP.