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

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

‫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 בפלטפורמת מכשירי הפיתוח משלב את היכולות האלה ישירות ב-Google Cloud CLI. הוא מספק ממשק קצה עורפי חזק יותר, הצהרתי וניתן להרחבה, שמריץ בדיקות בצורה צפויה ויעילה במכשירים פיזיים וגם במכשירים וירטואליים.

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

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

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

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

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

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

  • ניסיונות חוזרים ברמת מקרה הבדיקה המטורגט: מבודדים ומנסים שוב רק את מקרי הבדיקה הספציפיים שנכשלו בתוך שבר.
  • ניסיונות חוזרים של בדיקות לא יציבות ברצף: כברירת מחדל, ניסיונות חוזרים של בדיקות לא יציבות מבוצעים ברצף (במקום במקביל כמו ב-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 beta 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, אפשר לעיין בתרגומים של פקודות ודגלים.