במדריך הזה מוסבר איך להריץ בדיקת XCTest ב-iOS באמצעות gcloud beta
device-run CLI ולמצוא את התוצאות במסוף Google Cloud . ההנחה היא שיש לכם חשבון ופרויקט ב- Google Cloud .
כדי להשתמש ב-device-run CLI, צריך לספק את Google Cloudמזהה הפרויקט. gcloud beta device-run
לפני שמתחילים
במסגרת השלבים האלה, אנחנו מניחים שכבר:
- נוצר פרויקט Google Cloud .
- מגדירים את הפלטפורמה למכשירים למפתחים לפי המדריך למתחילים.
- האימות בוצע באמצעות
gcloudבטרמינל. - עיינתי בסקירה הכללית של Device Run כדי לקבל מידע כללי.
- הידור של הבדיקות ואריזה שלהן בקובץ 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, בונים את האפליקציה ואת יעדי הבדיקה לבדיקה:
- מוודאים שחתימת הקוד מוגדרת בצורה נכונה ב-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 וחתימות
אחרי הבנייה, מוודאים שהאפליקציה, הרכיב להרצת הבדיקות ומניפסט .xctestrun נוצרו בתיקייה ./build/Build/Products/. אם חותמים באופן מקומי, אפשר לאמת את חתימות החבילה באמצעות codesign:
מאמתים את קובץ ה-AAB:
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.
שלב 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
המאמרים הבאים
השלב הבא הוא איתור וניתוח של יומנים.