במדריך הזה מוסבר איך למצוא את התוצאות של בדיקות וקובצי הפעלה שהופעלו לפי המדריך הרצה במכשיר ב-Developer Device Platform.
לפני שמתחילים
השלבים האלה מבוססים על ההנחה שכבר יצרתם פרויקט ב- Google Cloud , השלמתם את שלבי ההגדרה במדריך להתחלה מהירה של Developer Device Platform ואימתתם את 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 מהרצה של iOS XCTest בזמן אמת, כשכל הדגלים מופעלים:
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.
- בעמודה הראשונה, לוחצים על שם הפרויקט.
- לוחצים על אוטומציה.
- לוחצים על סשנים.
- בשדה Filter, מדביקים את מזהה הסשן מהרצת הבדיקה האחרונה (ראו את פלט הבדיקה).
- לוחצים על שם הסשן שמופיע בתוצאות.
- בוחרים באפשרות job-* כדי להציג את
junit.xml(להרצות של Android instrumentation ו-iOS XCTest), שמכיל פרטים של תוצאות ממוזגות בכל ההרצות ומקרי הבדיקה במשימה. - פותחים את execution-* (או את execution-*-rerun-* אם מוגדרים ניסיונות חוזרים של בדיקות לא יציבות באמצעות
--flaky-test-attempts) כדי לראות פירוט של כל הרצה או פיצול בנפרד. בהתאם לסוג הסשן ולדגלים שהוגדרו, התיקייה הזו יכולה להכיל פריטי מידע רבים שנוצרו בתהליך הפיתוח. הסבר על התוצאות - כדי להבין את התוצאות, נכנסים לכתובות ה-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 Instrumentation ו-iOS XCTest, קובצי ה-junit.xml שנוצרים בפלט הם קובצי JUnit XML רגילים. קובץ junit.xml ברמת ההפעלה נכתב בכל ספריית execution-*, וקובץ junit.xml ממוזג נכתב בכל ספריית job-*. הקבצים האלה מכילים את התוצאות של כל שיטת בדיקה, ומאפשרים לכם לבדוק את הסטטוס הספציפי של הצלחה או כישלון, את זמן הביצוע ואת עקבות השגיאות של כל שיטת בדיקה בנפרד. אתם יכולים לשלב ולנתח את הקבצים האלה בקלות באמצעות רוב המערכות של אינטגרציה רציפה (CI) ופיתוח רציף (continuous delivery), וגם באמצעות כלי דיווח לבדיקות.
בנוסף לתוצאות הבדיקה המובנות, כל ספריית execution-* מכילה יומנים ופריטי מידע שנוצרו בתהליך הפיתוח (artifacts) שספציפיים לפלטפורמה:
- הרצות של כלי למדידת ביצועים ב-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), שמתעד את יומן המערכת הגולמי של מכשיר iOS, וכל דוח קריסה לאבחון של.ipsאם תהליך קרס במהלך ביצוע הבדיקה. כשהאפשרות מופעלת עם--video, כל סרטון של מקרה בדיקה של ממשק המשתמש שמוקלט נשמר ב-testcases/TEST_CLASS/TEST_METHOD/video.mp4. - קבצי המכשיר שנשלפו שצוינו באמצעות
--paths-to-pullמאוחסנים בתיקיית המשנהartifacts/של ספריית ההפעלה.- בהפעלות של Android, הקבצים שנשלפו שומרים על נתיב המכשיר שלהם ב-
artifacts/(לדוגמה,artifacts/sdcard/output.txtאוartifacts/data/local/tmp/results.json). - בהרצות של iOS XCTest, קבצים שנשלפים ממכל נתוני האפליקציה באמצעות
--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 ב-Developer Device Platform.