במדריך הזה מוסבר איך למצוא את התוצאות של בדיקות וקובצי הפעלה שהופעלו לפי המדריך הרצה במכשיר ב-Developer Device Platform.
לפני שמתחילים
השלבים האלה מניחים שכבר יצרתם Google Cloud פרויקט, השלמתם את שלבי ההגדרה במדריך למתחילים של פלטפורמת המכשירים למפתחים, וביצעתם אימות באמצעות gcloud במסוף.
בשורת הפקודה
כדי לראות סיכום בסיסי של תוצאת הבדיקה או קובץ ההפעלה, מריצים את הפקודה הבאה עם מזהה הסשן:
gcloud beta device-run sessions describe SESSION_ID
הפלט שמתקבל נראה כך:
Session SESSION_ID finished with result [FAILED].
Result files are stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/].
JOB NAME EXECUTION NAME EXECUTION RESULT
job-000 all FAILED: 2 test cases failed, 5 passed
job-001 all PASS
לכל מזהה של סוג מכשיר שציינתם בדגל --device, נוצרת משימה אחת בסשן. סדר המשימות באינדקס יהיה זהה לסדר של מזהי המכשירים. שגיאות בדיקה הן צפויות, וצריך לחקור ולפתור אותן באמצעות שיפורים והרצות חוזרות.
כדי לקבל פרטים נוספים על סשן, מוסיפים את --full לפקודה describe שהורצה קודם, כך:
gcloud beta device-run sessions describe SESSION_ID --full
הפלט שמתקבל נראה כך:
אינסטרומנטציה של Android
name: projects/PROJECT_ID/locations/global/sessions/session-370961e1
sessionConfig:
displayName: instrumentation-session
jobConfigs:
- action:
androidInstrumentationTest:
testInstallable:
files:
- gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-07-30_11:28.31915956_8514/app_name_test.apk
allocationConfig:
deviceConfigs:
- actions:
- androidInstallPackages:
installables:
- files:
- gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-07-30_11:28.31915956_8514/app_name.apk
- androidLogcat: {}
requirement:
deviceId: pa3q-35
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://BUCKET_NAME/automation/sessions
sessionReport:
endTime: '2026-07-30T03:30:05.838Z'
id: 6587313f-fdf7-418a-a9b9-b6fa98dff838
jobReports:
- displayName: job-000
endTime: '2026-07-30T03:30:04.601Z'
executionReports:
- displayName: all
endTime: '2026-07-30T03:30:02.151Z'
id: 29b167dd-dde9-4ea9-b2cd-738049083fc9
outputFiles:
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-370961e1/job-000/execution-000/logcat.txt
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-370961e1/job-000/execution-000/instrument.log
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-370961e1/job-000/execution-000/junit.xml
result:
cause:
summary:
message: One or more test assertions or test methods failed. Inspect the
test runner logs and structured test results for details.
reason: TEST_CASE_FAILURE
type: CUSTOMER
resultType: FAILED
startTime: '2026-07-30T03:29:32.769Z'
status:
progressMessages:
- 2 test cases failed, 5 passed
statusType: DONE
id: 7974e37a-2928-4aaf-abba-3a8b6bae853b
result:
cause:
summary:
message: Job has one or more failed tests. See execution reports for details.
reason: JOB_HAS_FAILED_TESTS
resultType: FAILED
startTime: '2026-07-30T03:28:53.756Z'
status:
statusType: DONE
result:
cause:
summary:
message: Session has one or more failed jobs. See job reports for details.
reason: SESSION_HAS_FAILED_JOBS
resultType: FAILED
startTime: '2026-07-30T03:28:52.702Z'
status:
statusType: DONE
קובץ הפעלה של Android
name: projects/PROJECT_ID/locations/global/sessions/session-8a41c2b0
sessionConfig:
displayName: android-executable-session
jobConfigs:
- action:
androidNativeBinary:
androidNativeBinary:
gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-07-30_11:28.31915956_8514/my_executable
args:
- --example_flag=/data/local/tmp/example_value
- --threads=4
allocationConfig:
deviceConfigs:
- actions:
- androidLogcat: {}
- androidPushFiles:
fileConfigs:
- destinationPath: /data/local/tmp/model.tflite
sourceFile:
gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-07-30_11:28.31915956_8514/model.tflite
requirement:
deviceId: shiba-34
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://BUCKET_NAME/automation/sessions
sessionReport:
endTime: '2026-07-30T03:30:05.838Z'
id: 4b9120ec-fdf7-418a-a9b9-b6fa98dff838
jobReports:
- displayName: job-000
endTime: '2026-07-30T03:30:04.601Z'
executionReports:
- displayName: execution-000
endTime: '2026-07-30T03:30:02.151Z'
id: 19a267dd-dde9-4ea9-b2cd-738049083fc9
outputFiles:
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-8a41c2b0/job-000/execution-000/logcat.txt
- gcsOutputFile:
path: gs://PROJECT_ID-devicerun/automation/sessions/session-8a41c2b0/job-000/execution-000/output.log
result:
resultType: PASSED
startTime: '2026-07-30T03:29:32.769Z'
status:
statusType: DONE
id: 8874e37a-2928-4aaf-abba-3a8b6bae853b
result:
resultType: PASSED
startTime: '2026-07-30T03:28:53.756Z'
status:
statusType: DONE
result:
resultType: PASSED
startTime: '2026-07-30T03:28:52.702Z'
status:
statusType: DONE
iOS XCTest
הנה הפלט המטוהר בפועל של gcloud beta device-run sessions
describe SESSION_ID --full מהרצה של XCTest ב-iOS בשידור חי עם כל הדגלים שהופעלו:
name: projects/PROJECT_ID/locations/global/sessions/session-4b941167-5629-4abb-a8a1-a9814bf16847
sessionConfig:
displayName: xctest-session
jobConfigs:
- action:
iosXcTest:
testsZip:
gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-10-09_11:33.01234567_ABCD/MyTests.zip
allocationConfig:
deviceConfigs:
- actions:
- iosInstallPackages:
ipas:
- gcsInputFile:
path: gs://BUCKET_NAME/automation/inputs/2026-10-09_11:33.01234567_ABCD/AdditionalApp.ipa
requirement:
deviceId: iphonese3-18-4
displayName: job-000
outputDirectoryConfig:
gcsOutputDirectory:
path: gs://BUCKET_NAME/automation/sessions
בפלט הזה, מחפשים את הקבצים שנשלפו מהאפליקציה שנבדקת בנתיב
.../artifacts/output.txt (בלי com.example.app/Documents/).
בדפדפן אינטרנט
כדי לראות את הפרטים המלאים, טוענים את כתובת ה-URL של הקטגוריה שמכילה את תוצאות הבדיקה מהפלט של הבדיקה. הוא אמור להיראות כך:
https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/
הסשנים מופיעים באחסון בפורמט הנתיב הבא:
gs://BUCKET_NAME/automation/sessions/SESSION_ID/job-000/EXECUTION_ID/
ניווט
כדי לחפש את היומנים בממשק האינטרנט של מסוף Google Cloud :
- בדפדפן, מוסיפים את שם הפרויקט שבו השתמשתם בפקודה
gcloud config set projectלכתובת ה-URLhttps://console.cloud.google.com/?project=וטוענים את הדף. - מרחיבים את התפריט בפינה הימנית העליונה.
- מוצאים את Cloud Storage.
- בתפריט האחסון, בוחרים באפשרות Buckets.
- בעמודה הראשונה, לוחצים על שם הפרויקט.
- לוחצים על אוטומציה.
- לוחצים על Sessions (סשנים).
- בשדה Filter, מדביקים את מזהה הסשן מהרצת הבדיקה האחרונה (ראו את פלט הבדיקה).
- לוחצים על שם הסשן שמופיע בתוצאות.
- בוחרים באפשרות job-* כדי לראות את
junit.xml(להרצות של Android instrumentation ו-iOS XCTest), שמכיל פרטים של תוצאות ממוזגות בכל ההרצות ומקרי הבדיקה במשימה. - כדי לראות פירוט של כל הרצה או שבר (shard), פותחים את execution-* (או את execution-*-rerun-* אם הגדרתם ניסיונות חוזרים של בדיקות לא יציבות באמצעות
--flaky-test-attempts). בהתאם לסוג הסשן ולדגלים שהוגדרו, התיקייה הזו יכולה להכיל פריטי מידע רבים שנוצרו בתהליך הפיתוח. הסבר על התוצאות - כדי להבין את התוצאות, צריך להיכנס לכתובות ה-URL הציבוריות וכתובות ה-URL שעברו אימות.
מבנה הקובץ
כדי להבין טוב יותר את ביצוע הסשן, אפשר לעיין בקובצי היומן בקטגוריה של Cloud Storage. מבנה הקובץ דומה לזה:
אינסטרומנטציה של Android
- gs://BUCKET_NAME/automation
- inputs/
- 2026-05-29_10:13.026220_JZTM
- app.apk
- test.apk
- sessions/
- SESSION_ID
- job-000/
- junit.xml
- execution-000/
- artifacts/
- sdcard/
- output.txt
- bugreport.zip
- dumpsys.txt
- instrument.log
- junit.xml
- logcat.txt
- video.mp4
- execution-001/
- instrument.log
- junit.xml
- logcat.txt
- video.mp4
- job-001/
- SESSION_ID
קובץ הפעלה של Android
- gs://BUCKET_NAME/automation
- inputs/
- 2026-05-29_10:13.026220_JZTM
- my_executable
- model.tflite
- sessions/
- SESSION_ID
- job-000/
- execution-000/
- artifacts/
- data/
- local/
- tmp/
- results.json
- bugreport.zip
- dumpsys.txt
- logcat.txt
- output.log
- video.mp4
- job-001/
- SESSION_ID
iOS XCTest
- gs://BUCKET_NAME/
- automation/
- inputs/
- 2026-10-09_11:33.01234567_ABCD/
- AdditionalApp.ipa
- MyTests.zip
- data.txt
- sessions/
- SESSION_ID/
- job-000/
- execution-000/
- artifacts/
- output.txt
- junit.xml
- system.log
בפלט הזה, צריך להבין את הנתיב שנשלף בקטע artifacts/. ב---paths-to-pull=com.example.app:/Documents/output.txt, כששולפים מהאפליקציה שנבדקת (AUT), השירות מסיר את /Documents וממקם את הקובץ ישירות ב-artifacts/output.txt (ולא ב-artifacts/com.example.app/Documents/output.txt). אם הוא נשלף מאפליקציה נוספת (--additional-apps), הוא ממוקם ב-artifacts/<bundle_id>-genfiles/output.txt.
הסבר על התוצאות
במכשירי Android ובריצות של XCTest ב-iOS, הקבצים junit.xml שנוצרים בפלט הם קובצי XML רגילים של JUnit. קובץ junit.xml ברמת ההפעלה נכתב לכל ספריית execution-*, וקובץ junit.xml משולב נכתב לכל ספריית job-*. הקבצים האלה מכילים את התוצאות של כל שיטת בדיקה, ומאפשרים לכם לבדוק את הסטטוס הספציפי של ההצלחה או הכשל, את זמן ההפעלה ואת עקבות השגיאות של כל שיטת בדיקה. אפשר לשלב ולנתח את הקבצים האלה בקלות עם רוב המערכות של אינטגרציה רציפה (CI) ופיתוח רציף (continuous delivery) ועם כלי דיווח על בדיקות.
בנוסף לתוצאות בדיקה מובנות, כל ספריית execution-* מכילה יומנים וארטיפקטים ספציפיים לפלטפורמה:
- הפעלות של כלי מדידה ב-Android כוללות את
instrument.logלפלט גולמי של כלי המדידה ואתlogcat.txtליומן המערכת של Android בכל המכשיר. כשמפעילים את התכונה עם--bugreport, --dumpsysאו--video, ספריית ההפעלה כוללת גם אתbugreport.zip, dumpsys.txtוהקלטות של סרטונים מהמסך. - הפעלות של קובץ הפעלה ב-Android כוללות את
output.log, שמתעד את הפלט הסטנדרטי (stdout) ואת השגיאה הסטנדרטית (stderr) שנכתבו על ידי קובץ ההפעלה, ואתlogcat.txt(שנאסף כברירת מחדל לכל משימה ב-Android), שמתעד את יומן המערכת של Android בכל המכשיר, יחד עם ארטיפקטים אופציונליים של--bugreport,--dumpsysאו--video. - הרצות של iOS XCTest כוללות את
system.log(נאסף כברירת מחדל לכל משימת iOS XCTest), שמתעד את ה-syslog הגולמי של מכשיר iOS, וכל דוח קריסה לאבחון של.ipsאם תהליך קרס במהלך ביצוע הבדיקה. - קבצי המכשיר שנשלפו וצוינו באמצעות
--paths-to-pullמאוחסנים בתיקיית המשנהartifacts/של ספריית ההפעלה.- במכשיר Android, הקבצים שנמשכים שומרים על נתיב המכשיר שלהם בתיקייה
artifacts/(לדוגמה,artifacts/sdcard/output.txtאוartifacts/data/local/tmp/results.json). - בהפעלות של XCTest ב-iOS, קבצים שנמשכים ממכולת נתוני אפליקציה באמצעות
--paths-to-pull=BUNDLE_ID:DEVICE_PATHמאורגנים לפי מזהה החבילה בתיקייהartifacts/:- אם
com.example.appהיא האפליקציה שנבדקת, היא נשמרת ישירות ב-artifacts/output.txt. - אם
com.example.appהיא אפליקציה נוספת (--additional-apps), היא נשמרת ב-artifacts/com.example.app-genfiles/output.txt.
- אם
- במכשיר Android, הקבצים שנמשכים שומרים על נתיב המכשיר שלהם בתיקייה
מסמכים תומכים
- יסודות הבדיקה של אפליקציות ל-Android
- יצירת בדיקות עם כלים
- התיעוד של XCTest
- מידע על קטגוריות של Cloud Storage
המאמרים הבאים
אפשר לנסות את Device Streaming API (ממשק API לסטרימינג למכשירים) של Developer Device Platform.