ברוכים הבאים אל Developer Device Platform Device Run, שמאפשרת לכם להריץ בדיקות במכשירי Android פיזיים וגם וירטואליים, ובמכשירי iOS פיזיים בענן. בדף הזה מתוארים המאפיינים המשותפים להרצת בדיקות ב-Android וב-iOS. הוראות ספציפיות לפלטפורמות זמינות במאמרים הפעלת האפליקציה במכשיר Android והפעלת האפליקציה במכשיר iOS.
כדי להשתמש ב-Google Cloud CLI הזה, תצטרכו לספק את מזהה הפרויקט שלכם ב- Google Cloud . לסיכום הפקודות, אפשר לעיין במאמר בנושא gcloud beta
device-run.
הדגלים הבאים הם חובה:
- מכשיר: מציינים מכשיר באמצעות
--device:--device shiba-35או--device iphonese3-18-4 - Test: מציינים את קובץ ה-APK או ה-IPA לבדיקה באמצעות
--test:--test /path/to/test.apkאו--test /path/to/test.ipa
אלה אפשרויות ההגדרה שמשותפות לבדיקות ב-Android וב-iOS.
נתיבי קלט ופלט ב-Cloud Storage
- קטגוריה מותאמת אישית ב-Cloud Storage: אתם יכולים לציין קטגוריה מותאמת אישית ב-Cloud Storage לקלט ולפלט:
--bucket-name=my-custom-bucketאם לא מציינים קטגוריה ב-Cloud Storage באמצעות הדגל--bucket-name=, Google Cloud CLI ישתמש בקטגוריית ברירת מחדל בשםPROJECT_ID-devicerun. - קבצי קלט: כשמציינים נתיב מקומי באמצעות הדגלים
--test,--additional-appsאו--xctestrun-file, Google Cloud CLI מעתיק אותו אוטומטית ל-קטגוריה של Cloud Storage תחתgs://BUCKET_NAME/automation/inputs/DATE_TIME_FOUR_CHARS_SUFFIX/בכל פעם שמריצים את הפקודה, כאשרBUCKET_NAMEמוגדר כברירת מחדל ל-PROJECT_ID-devicerun. - נתיבי Cloud: העלאה של קבצים גדולים יכולה להיות תהליך ארוך, ולכן אפשר להפנות אליהם ישירות באמצעות הנתיבים שלהם ב-Cloud Storage
gs://כדי לחסוך זמן העלאה. - קבצי תוצאות: פריטי פלט מועלים לקטגוריה שלכם ב-Cloud Storage בתיקייה
gs://BUCKET_NAME/automation/sessions/session-[SESSION_ID]/.
הרצות סינכרוניות ואסינכרוניות
כברירת מחדל, פקודת השליחה היא חסימה (סינכרונית). הוא ימתין עד שהבדיקה תסתיים וידפיס טבלת סיכום של התוצאות.
כדי לשלוח את הסשן ולחזור מיד אחרי העלאת הקבצים ל-Cloud Storage, מוסיפים את הדגל --async:
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--async
iOS
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--async
הפעולה הזו מחזירה מזהה סשן באופן מיידי. אפשר להמתין לה באמצעות הפקודה sessions wait:
gcloud beta device-run sessions wait SESSION_ID
הפקודה תיחסם עד שהעבודה תושלם.
מכשירים מרובים
כדי להריץ את אותם בדיקות בכמה מכשירים, צריך לספק את האפשרות --device עם כמה מזהי מכשירים שמופרדים באמצעות פסיקים, או עם כמה אפשרויות --device, כשכל אחת מציינת מזהה מכשיר נפרד.
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-34,tokay-36 \
--test ./ANDROID_TESTS.apk
או:
gcloud beta device-run sessions submit instrumentation \
--device shiba-34 \
--device tokay-36 \
--test ./ANDROID_TESTS.apk
iOS
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4,iphonese3-26-3 \
--test ./IOS_TESTS.zip
או:
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--device iphonese3-26-3 \
--test ./IOS_TESTS.zip
זמן קצוב לתפוגה של בדיקה
הגבלת משך הביצוע של הבדיקה:
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--instrumentation-timeout=10m
iOS
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xctest-timeout=10m
הטווח התקין הוא 1m עד 1h, וערך ברירת המחדל הוא 5m.
גרסאות תוכנה
כדאי לעיין בחבילות התוכנה ובגרסאות הזמינות של AndroidX Test Orchestrator ושל Apple Xcode, ולבדוק את מחזורי החיים, הגרסאות הנתמכות והמטא-נתונים שלהן לפני שמגדירים את הרצת הבדיקות.
קודם כל, מציגים רשימה של כל חבילות התוכנה הזמינות והגרסאות שלהן:
gcloud beta 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
אחר כך מתארים חבילה ספציפית באמצעות מזהה המשאב המדויק שלה מהרשימה:
Android
gcloud beta device-run software-versions describe androidx-test-orchestrator-1-4-1
iOS
gcloud beta device-run software-versions describe xcode-16-4
מקבלים פלט שדומה לזה:
Android
id: androidx-test-orchestrator-1-4-1
isDefault: true
lifecycle:
state: ACTIVE
name: AndroidX Test Orchestrator 1.4.1
softwareType: ANDROIDX_TEST_ORCHESTRATOR
version: 1.4.1
iOS
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'
אחרי שבודקים אילו גרסאות תוכנה זמינות, אפשר להשתמש בהן בהרצות הבדיקה עם הדגלים --orchestrator-version או --xcode-version, באופן הבא:
Android
gcloud beta device-run sessions submit instrumentation \
--device shiba-35 \
--test ./ANDROID_TESTS.apk \
--orchestrator-version=1.4.1
מידע נוסף זמין במאמר בנושא הפעלת Orchestrator.
iOS
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./IOS_TESTS.zip \
--xcode-version=16.4
מידע נוסף מופיע במאמר בנושא הרצה במכשיר ב-iOS.
אימות קלט
פלטפורמת Developer Device Platform מנסה לאמת את הקלט שלכם, כולל ארטיפקטים, ומחזירה ERROR במקום PASSED או FAILED כשנתקלת בקלט שגוי:
Session [session-94b57778] finished with result [ERROR].
JOB NAME EXECUTION NAME EXECUTION RESULT
job-000 execution-000 ERROR
עכשיו מוסיפים את --full לפקודה sessions describe כדי לראות פרטים נוספים על הסשן:
gcloud beta device-run sessions describe --full session-94b57778
התוצאה היא פלט שדומה לזה:
name: projects/user-test1/locations/global/sessions/session-94b57778
sessionConfig:
displayName: instrumentation-session
jobConfigs:
- action:
androidInstrumentationTest:
testInstallable:
files:
- gcsInputFile:
path: gs://user-test1-devicerun/automation/inputs/2026-09-16_18:55.17372947_EECF/my-test.apk
allocationConfig:
deviceConfigs:
- actions:
- androidLogcat: {}
requirement:
deviceId: mediumphone-arm-34
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://user-test1-devicerun/automation/sessions
sessionReport:
endTime: '2026-09-16T18:55:49.721Z'
id: ed681f23-669b-4464-8a93-b28456e58136
jobReports:
- displayName: job-000
endTime: '2026-09-16T18:55:45.839Z'
executionReports:
- displayName: execution-000
endTime: '2026-09-16T18:55:46.694Z'
id: ce370173-af94-4dd7-acc6-0863e4d2e9ec
result:
cause:
summary:
message: The instrumentation target package does not match any of the
installable packages.
reason: INSTRUMENTATION_TARGET_MISMATCH
type: CUSTOMER
resultType: ERROR
startTime: '1970-01-01T00:00:00Z'
status:
statusType: PENDING
id: 953b5106-3c20-40f0-aceb-18af89cd1b83
result:
cause:
summary:
message: The instrumentation target package does not match any of the installable
packages.
reason: INSTRUMENTATION_TARGET_MISMATCH
type: CUSTOMER
resultType: ERROR
startTime: '2026-09-16T18:55:31.651Z'
status:
statusType: DONE
result:
resultType: ERROR
startTime: '2026-09-16T18:55:24.442Z'
status:
statusType: DONE
המאמרים הבאים
הרצת בדיקת Android או הרצת בדיקת iOS באמצעות Developer Device Platform.