במדריך הזה מוסבר איך להריץ בדיקת 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 מופיע סיכום של הפקודות.
לפני שמתחילים
בשלבים האלה אנחנו מניחים שכבר:
- יצרתם פרויקט ב- Google Cloud .
- מגדירים את Developer Device Platform לפי המדריך למתחילים.
- מאומת באמצעות
gcloudבטרמינל. - קראתם את הסקירה הכללית של "הרצה במכשיר".
- הידור של הבדיקות ואריזה שלהן בקובץ 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 ויוצרים את האפליקציה ואת יעדי הבדיקה:
- ודאו שחתימת הקוד מוגדרת בצורה נכונה ב-Xcode (ציינו פרופיל הקצאה תקין וזהות מפתח) גם ליעד האפליקציה וגם ליעד של מריץ הבדיקות.
יוצרים 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:
מאמתים את ה-App Bundle:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.appהפלט הצפוי:
YourApp.app: valid on diskאם מריצים 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
המאמרים הבאים
בשלב הבא, מוצאים ומנתחים יומנים.