סקירה כללית של הפעלת מכשיר בפלטפורמה של מכשיר למפתחים

ברוכים הבאים אל 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.