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

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

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

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

במסגרת השלבים האלה, אנחנו מניחים שכבר:

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

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

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

gcloud beta 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) בפקודת השליחה.

שלב 2. הכנה ואריזה של 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 וחתימות

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

  1. מאמתים את קובץ ה-AAB:

    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.

שלב 3. הרצת XCTest

הדגלים הבאים הם חובה:

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

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

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

gcloud beta 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....

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

אפשר להתאים אישית את הרצת הבדיקה באמצעות הדגלים האופציונליים הבאים (למרות שנדרש לפחות מופע אחד של הדגל --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
  • Test timeout: הגבלת משך ההפעלה: --xctest-timeout=10m (הטווח התקין הוא 1m עד 1h, וערך ברירת המחדל הוא 5m).
  • תוויות: צירוף מטא-נתונים שהוגדרו על ידי המשתמש להפעלה: --labels=env=staging,owner=my-team
  • העברת קבצים למכשיר: העברת קבצים למאגר נתוני האפליקציה לפני הפעלת הבדיקה: --other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt
  • שליפת קבצים מהמכשיר: שליפת קבצים ממכולת נתוני האפליקציה אחרי הפעלת הבדיקה: --paths-to-pull=com.example.app:/Documents/output.txt
  • ניסיונות חוזרים של בדיקות לא יציבות: הגדרת מספר הניסיונות המקסימלי להרצה מחדש של בדיקות לא יציבות: --flaky-test-attempts=3 (ברירת המחדל היא ניסיון אחד).
  • קטגוריה מותאמת אישית של Cloud Storage: מציינים קטגוריה מותאמת אישית של Cloud Storage לקלט ולפלט: --bucket-name=my-custom-bucket (ברירת המחדל היא PROJECT_ID-devicerun).
  • העלאה של קובצי ZIP או IPA גדולים יכולה לקחת זמן רב, ולכן אפשר להפנות ישירות לקבצים באמצעות הנתיבים שלהם ב-Cloud Storage‏ gs:// כדי לחסוך זמן בהעלאה.

שלב 5. הצגה וניהול של הרצת הבדיקה

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

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

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

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