פלטפורמת מכשיר למפתחים הפעלת מכשיר ל-iOS

במדריך הזה מוסבר איך להריץ בדיקת XCTest ב-iOS באמצעות gcloud alpha device-runCLI ולמצוא את התוצאות במסוף Google Cloud . אנחנו יוצאים מנקודת הנחה שיש לכם חשבון ופרויקט ב-Google Cloud .

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

כדי להשתמש ב-CLI של device-run, צריך לספק את מזהה הפרויקט ב- Google Cloud. במאמר gcloud alpha device-run מופיע סיכום של הפקודות.

לפני שמתחילים

בשלבים האלה אנחנו מניחים שכבר:

  1. יצרתם פרויקט ב- Google Cloud .
  2. מגדירים את Developer Device Platform לפי המדריך למתחילים.
  3. מאומת באמצעות gcloud בטרמינל.
  4. קראתם את הסקירה הכללית של "הרצה במכשיר".
  5. הידור של הבדיקות ואריזה שלהן בקובץ ZIP.

שלב 1. הגדרת הבדיקה

אפשר להתאים אישית את ביצוע הבדיקה באמצעות הדגלים האופציונליים הבאים (אם כי נדרש מופע אחד לפחות של הדגל --device):

  • כמה מכשירים: מציינים את הדגל --device כמה פעמים כדי להריץ את אותה בדיקה בכמה מכשירים בו-זמנית: --device iphonese3-18-4 --device iphonese3-26-3 או --device iphonese3-18-4,iphonese3-26-3
  • ‫אפליקציות נוספות: מתקינים חבילת .ipa אחת או יותר לפני שמפעילים את הבדיקה באמצעות --additional-apps: --additional-apps=/path/to/AdditionalApp.ipa
  • קובץ .xctestrun תצורה: מעבירים קובץ תצורה בהתאמה אישית עם --xctestrun-file: --xctestrun-file=/path/to/CustomTests.xctestrun
  • גרסאות של Apple Xcode: אפשר לגשת ישירות לגרסאות של Xcode שנתמכות על ידי CLI באמצעות הדגל --xcode-version, לדוגמה: --xcode-version=xcode-16-4
  • ‫Test timeout: הגבלת משך זמן הביצוע: --xctest-timeout=10m (הטווח התקין הוא 1m עד 1h, וברירת המחדל היא 5m).
  • תוויות: צירוף מטא-נתונים שהמשתמש הגדיר לסשן: --labels=env=staging,owner=my-team
  • Locale: הגדרת הלוקאל של המכשיר: --locale=en-US
  • העברת קבצים למכשיר: מעבירים קבצים למאגר נתוני האפליקציה לפני ביצוע הבדיקה: --other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt
  • שליפת קבצים מהמכשיר: שליפת קבצים ממכל נתוני האפליקציה אחרי ביצוע הבדיקה: --paths-to-pull=com.example.app:/Documents/output.txt
  • ‫Flaky test retries: מספר הניסיונות המקסימלי להרצה חוזרת של בדיקות לא יציבות: --flaky-test-attempts=3 (ברירת המחדל היא ניסיון אחד).
  • קטגוריה מותאמת אישית של Cloud Storage: מציינים קטגוריה מותאמת אישית של Cloud Storage לקלט ולפלט: --bucket-name=my-custom-bucket (ברירת המחדל היא PROJECT_ID-devicerun).
  • העלאה של קובצי ZIP או IPA גדולים יכולה לקחת זמן רב, ולכן אפשר להפנות ישירות לקבצים באמצעות הנתיבים שלהם ב-Cloud Storage gs:// כדי לחסוך זמן העלאה.

הרצות סינכרוניות ואסינכרוניות

כברירת מחדל, הפקודה submit היא חוסמת (סינכרונית). הוא ימתין עד שהבדיקה תסתיים וידפיס טבלת סיכום של התוצאות.

כדי לשלוח את הסשן ולחזור מיד אחרי העלאת הקבצים ל-Cloud Storage, מוסיפים את הדגל --async:

gcloud alpha device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --async

הפעולה הזו מחזירה מזהה סשן באופן מיידי. אפשר להמתין לסיום הפעולה באמצעות הפקודה sessions wait:

gcloud alpha device-run sessions wait SESSION_ID

הפקודה תחסום עד שהמשימה תושלם.

מספר מכשירים

כדי להריץ את אותה בדיקה בכמה מכשירים, צריך לציין את הדגל --device עם כמה מזהי מכשירים שמופרדים בפסיקים, או עם כמה דגלי --device, כשכל אחד מהם מציין מזהה מכשיר נפרד.

מופרד באמצעות פסיקים

gcloud alpha device-run sessions submit xctest \
  --device iphonese3-18-4,iphonese3-26-3 \
  --test ./IOS_TESTS.zip

מספר דגלים

gcloud alpha device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --device iphonese3-26-3 \
  --test ./IOS_TESTS.zip

זמן קצוב לתפוגה של בדיקה

הגבלת משך ההרצה של הבדיקה:

gcloud alpha device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --xctest-timeout=10m

הטווח התקין הוא 1m עד 1h, וערך ברירת המחדל הוא 5m.

גרסאות תוכנה

לפני שמגדירים הרצות של בדיקות, אפשר למצוא ולהשתמש בחבילות תוכנה ובגרסאות זמינות של Apple Xcode ולבדוק את מחזורי החיים, הגרסאות הנתמכות והמטא-נתונים שלהן.

קודם כל, מציגים את כל חבילות התוכנה הזמינות והגרסאות שלהן:

gcloud alpha device-run software-versions list

הפלט שמתקבל דומה לזה:

ID                                NAME                              SOFTWARE_TYPE               VERSION  STATE   IS_DEFAULT
androidx-test-orchestrator-1-4-1  AndroidX Test Orchestrator 1.4.1  ANDROIDX_TEST_ORCHESTRATOR  1.4.1    ACTIVE  True
androidx-test-orchestrator-1-6-1  AndroidX Test Orchestrator 1.6.1  ANDROIDX_TEST_ORCHESTRATOR  1.6.1    ACTIVE
xcode-16-4                        Xcode 16.4                        XCODE                       16.4     ACTIVE
xcode-26-2                        Xcode 26.2                        XCODE                       26.2     ACTIVE  True

אחר כך מתארים חבילה ספציפית באמצעות מזהה המשאב המדויק שלה מהרשימה:

gcloud alpha device-run software-versions describe xcode-16-4

הפלט שמתקבל דומה לזה:

id: xcode-16-4
lifecycle:
  state: ACTIVE
name: Xcode 16.4
softwareType: XCODE
supportedIosVersions:

-   '15.0'
-   '15.1'
-   '15.2'
-   '15.4'
-   '15.7'
-   '16.0'
-   '16.1'
-   '16.2'
-   '16.3'
-   '16.5'
-   '16.6'
-   '18.0'
-   '18.3'
-   '18.4'
version: '16.4'

אחרי שבודקים אילו גרסאות תוכנה זמינות, אפשר להשתמש בהן בהרצות הבדיקה עם הדגל --xcode-version, כך:

gcloud alpha device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./IOS_TESTS.zip \
  --xcode-version=16.4

שלב 2. בחירת סוגי מכשירים

באמצעות device-run CLI, אפשר להריץ בדיקות ל-iOS במכשירים פיזיים זמינים. כדי לראות את הרשימה המלאה של המכשירים הזמינים, אפשר להיכנס לקטלוג המכשירים האינטראקטיבי או להריץ את הפקודה:

gcloud alpha device-run devices list

פלט לדוגמה:

ID                MAKE   NAME           MODEL        HARDWARE_TYPE  OS_VERSION  CAPACITY  AVAILABILITY  PRODUCTS
iphonese3-18-4    Apple  iPhone SE 3             iphonese3    PHYSICAL       18.4        NONE      NONE          Automation
iphonese3-26-3    Apple  iPhone SE 3             iphonese3    PHYSICAL       26.3        NONE      NONE          Automation

בקטלוג המכשירים מוסבר איך לסנן את הרשימה הזו. כדי לטרגט מכשיר ספציפי לביצוע בדיקה, משתמשים במזהה המתאים (למשל, iphonese3-18-4) בפקודת השליחה.

שלב 3. הכנה ואריזה של XCTest

לפני הרצת הבדיקות, צריך לקמפל אותן, לוודא שהן חתומות, לאמת את חתימות הקוד ולארוז את פריטי המידע שנוצרו בקובץ ZIP שמכיל את ההגדרות של .xctestrun ואת חבילות הבדיקה של האפליקציה.

1. פיתוח בדיקות למכשירי iOS פיזיים

פותחים את הפרויקט ב-Xcode ויוצרים את האפליקציה ואת יעדי הבדיקה:

  1. ודאו שחתימת הקוד מוגדרת בצורה נכונה ב-Xcode (ציינו פרופיל הקצאה תקין וזהות מפתח) גם ליעד האפליקציה וגם ליעד של מריץ הבדיקות.
  2. יוצרים build לבדיקה באמצעות Xcode ‏ (Product > Build For > Testing) או באמצעות xcodebuild.

    בסביבת עבודה:

    xcodebuild build-for-testing \
      -workspace YourProject.xcworkspace \
      -scheme YourScheme \
      -derivedDataPath ./build \
      -destination "generic/platform=iOS"
    

    בפרויקט עצמאי:

    xcodebuild build-for-testing \
      -project YourProject.xcodeproj \
      -scheme YourScheme \
      -derivedDataPath ./build \
      -destination "generic/platform=iOS"
    

הפעולה הזו יוצרת את תוצרי ה-build בנתיב: ./build/Build/Products

2. אימות של מוצרי build וחתימות

אחרי הבנייה, מוודאים שהאפליקציה, ה-runner והמניפסט של .xctestrun נוצרו ב-./build/Build/Products/. אם החתימה היא מקומית, אפשר לאמת את החתימות של החבילה באמצעות codesign:

  1. מאמתים את ה-App Bundle:

    codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.app
    

    הפלט הצפוי: YourApp.app: valid on disk

  2. אם מריצים XCUITest, צריך גם לאמת את חבילת ההרצה של הבדיקה:

    codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp-Runner.app
    

    הפלט הצפוי: YourApp-Runner.app: valid on disk

3. יצירת ארכיון ה-ZIP

דוחסים את ספריית Debug-iphoneos ואת קובץ .xctestrun שנמצאים בתיקיית המוצרים של פלט הבנייה לארכיון ZIP יחיד.

מריצים את הפקודה הבאה מספריית המוצרים של ה-build:

cd ./build/Build/Products
zip -r MyTests.zip Debug-iphoneos *.xctestrun

כך נוצרת חבילת MyTests.zip שמוכנה לשימוש עם הדגל --test.

שלב 4. הפעלת XCTest

שימו לב שהדגלים הבאים נדרשים:

  • מכשיר: מציינים מכשיר באמצעות --device: --device iphonese3-18-4
  • בדיקה: מציינים את קובץ ה-ZIP של הבדיקה באמצעות --test: --test ./MyTests.zip

כדי להריץ את XCTest, משתמשים בפקודה gcloud alpha device-run sessions submit xctest. אתם צריכים לספק את קובץ ה-ZIP לבדיקה (MyTests.zip) שנוצר בשלב הקודם.

כדי להריץ סשן בדיקה בסיסי:

gcloud alpha device-run sessions submit xctest \
  --device iphonese3-18-4 \
  --test ./MyTests.zip

כשההפעלה מתחילה, ב-CLI מוצגים מזהה הסשן שנוצר ויעד Cloud Storage שבו התוצאות יאוחסנו:

Creating session [session-ee78b0ed] in location [global].
Result files will be stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/session-ee78b0ed/].

Waiting for session [session-ee78b0ed] to complete....

שלב 5. עיון בנתונים של הרצת הבדיקה וניהול שלהם

אפשר לעקוב אחרי ריצות פעילות ולנהל סשנים קודמים באמצעות הפקודות הבאות:

  • תיאור סשן: שליחת שאילתה לגבי ההתקדמות בזמן אמת או התוצאות הסופיות של סשן: gcloud alpha device-run sessions describe SESSION_ID מוסיפים את --full כדי לראות את הפרטים המלאים, כולל הקצאות מכשירים, מזהי ביצוע ונתיבי פריטי מידע שנוצרו בתהליך הפיתוח (Artifact) ב-Cloud Storage.
  • רשימת סשנים: הצגת ההפעלות האחרונות: gcloud alpha device-run sessions list --limit=10
  • ביטול סשן: הפסקת סשן בדיקה שפועל: gcloud alpha device-run sessions cancel SESSION_ID
  • ביטול פעולה: הפסקת פעולה פעילה או פעולה בהמתנה: gcloud alpha device-run operations cancel OPERATION_ID

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

בשלב הבא, מוצאים ומנתחים יומנים.