- แหล่งข้อมูล: TestMatrix
- ข้อมูลไคลเอ็นต์
- ClientInfoDetail
- TestSpecification
- ตั้งค่าการทดสอบ
- DeviceFile
- ObbFile
- FileReference
- ไฟล์ปกติ
- APK
- บัญชี
- GoogleAuto
- ตัวแปรสภาพแวดล้อม
- ตั้งค่า Systrace
- ตั้งค่าการทดสอบ Ios
- iOSDeviceFile
- AndroidInstrumentationTest
- AppBundle
- OrchestratorOption
- ShardingOption
- UniformSharding
- ชาร์ดดิ้งด้วยตนเอง
- TestTargetsForShard
- SmartSharding
- AndroidRoboTest
- RoboDirective
- RoboActionType
- โหมด Robo
- RoboStartIntent
- LauncherActivityIntent
- StartActivityIntent
- NoActivityIntent
- AndroidTestLoop
- IosXcTest
- IosTestLoop
- IosRoboTest
- EnvironmentMatrix
- AndroidMatrix
- AndroidDeviceList
- รายการอุปกรณ์ iOS
- อุปกรณ์ iOS
- การดำเนินการทดสอบ
- ชาร์ด
- สภาพแวดล้อม
- สถานะการทดสอบ
- Toolผลลัพธ์SStep
- รายละเอียดการทดสอบ
- ResultStorage
- GoogleCloudStorage
- ประวัติผลลัพธ์
- Toolผลลัพธ์sExecution
- ไม่ถูกต้องMatrixDetails
- MatrixErrorDetail
- สรุปผลลัพธ์
- เมธอด
แหล่งข้อมูล: TestMatrix
TestMatrix จะบันทึกรายละเอียดทั้งหมดเกี่ยวกับการทดสอบ โดยจะมีการกำหนดค่าสภาพแวดล้อม ข้อกำหนดการทดสอบ การดำเนินการทดสอบ รวมถึงสถานะและผลลัพธ์โดยรวม
การแสดง JSON |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
ช่อง | |
---|---|
testMatrixId |
เอาต์พุตเท่านั้น รหัสที่ไม่ซ้ำกันที่บริการกำหนด |
projectId |
โปรเจ็กต์ระบบคลาวด์ที่เป็นเจ้าของเมทริกซ์ทดสอบ |
clientInfo |
ข้อมูลเกี่ยวกับไคลเอ็นต์ที่เรียกใช้การทดสอบ |
testSpecification |
ต้องระบุ วิธีทำการทดสอบ |
environmentMatrix |
ต้องระบุ อุปกรณ์ที่กำลังดำเนินการทดสอบ |
testExecutions[] |
เอาต์พุตเท่านั้น รายการการดำเนินการทดสอบที่บริการสร้างสำหรับเมทริกซ์นี้ |
resultStorage |
ต้องระบุ ตำแหน่งที่เขียนผลลัพธ์สำหรับเมทริกซ์ |
state |
เอาต์พุตเท่านั้น แสดงความคืบหน้าปัจจุบันของเมทริกซ์ทดสอบ |
timestamp |
เอาต์พุตเท่านั้น เวลาที่เมทริกซ์ทดสอบนี้สร้างขึ้นเป็นครั้งแรก การประทับเวลาเป็น RFC3339 UTC "Zulu" โดยมีความละเอียดระดับนาโนวินาทีและมีเลขเศษส่วนสูงสุด 9 หลัก ตัวอย่าง: |
invalidMatrixDetails |
เอาต์พุตเท่านั้น อธิบายสาเหตุที่ระบบถือว่าเมทริกซ์ไม่ถูกต้อง มีประโยชน์สำหรับเมทริกซ์ที่อยู่ในสถานะไม่ถูกต้องเท่านั้น |
extendedInvalidMatrixDetails[] |
เอาต์พุตเท่านั้น รายละเอียดเกี่ยวกับสาเหตุที่เมทริกซ์ถือว่าไม่ถูกต้อง หากสามารถทำการตรวจสอบหลายครั้งได้อย่างปลอดภัย ระบบจะรายงานการตรวจสอบ แต่ไม่ควรตั้งข้อสันนิษฐานเกี่ยวกับความยาวของรายการนี้ |
flakyTestAttempts |
จำนวนครั้งที่ TestExecution ควรทำอีกครั้งหากกรอบการทดสอบอย่างน้อย 1 กรณีล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม จำนวนการฉายซ้ำสูงสุดที่อนุญาตคือ 10 รอบ ค่าเริ่มต้นคือ 0 ซึ่งหมายความว่าไม่มีการเรียกใช้ซ้ำ |
outcomeSummary |
เอาต์พุตเท่านั้น ผลลัพธ์โดยรวมของการทดสอบ ระบบจะตั้งค่าเมื่อสถานะเมทริกซ์ทดสอบเป็น FINISHED เท่านั้น |
failFast |
หากเป็น "จริง" ระบบจะพยายามเรียกใช้การดำเนินการ/ชาร์ดแต่ละรายการในเมทริกซ์เป็นไม่เกิน 1 ครั้งเท่านั้น ทั้งนี้ ความพยายามทดสอบที่ไม่น่าเชื่อถือจะไม่ได้รับผลกระทบ โดยปกติแล้วจะพยายามอย่างน้อย 2 ครั้งหากตรวจพบปัญหาด้านโครงสร้างพื้นฐานที่อาจเกิดขึ้น ฟีเจอร์นี้มีไว้สำหรับภาระงานที่มีความละเอียดอ่อนด้านเวลาในการตอบสนอง อุบัติการณ์ของความล้มเหลวในการดำเนินการอาจสูงกว่ามากสำหรับเมทริกซ์ความเร็วล้มเหลว และการสนับสนุนมีจำกัดมากขึ้นเนื่องจากความคาดหวังนั้น |
ClientInfo
ข้อมูลเกี่ยวกับไคลเอ็นต์ที่เรียกใช้การทดสอบ
การแสดง JSON |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
ช่อง | |
---|---|
name |
ต้องระบุ ชื่อไคลเอ็นต์ เช่น gcloud |
clientInfoDetails[] |
รายการข้อมูลโดยละเอียดเกี่ยวกับไคลเอ็นต์ |
รายละเอียด ClientInfo
คู่คีย์-ค่าของข้อมูลโดยละเอียดเกี่ยวกับไคลเอ็นต์ที่เรียกใช้การทดสอบ ตัวอย่าง: {'Version', '1.0'}, {'Release Track', 'BETA'}
การแสดง JSON |
---|
{ "key": string, "value": string } |
ช่อง | |
---|---|
key |
ต้องระบุ คีย์ของข้อมูลโดยละเอียดเกี่ยวกับลูกค้า |
value |
ต้องระบุ ค่าของข้อมูลลูกค้าโดยละเอียด |
ข้อมูลจำเพาะของการทดสอบ
คำอธิบายวิธีทำการทดสอบ
การแสดง JSON |
---|
{ "testTimeout": string, "disableVideoRecording": boolean, "disablePerformanceMetrics": boolean, // Union field |
ช่อง | |
---|---|
testTimeout |
จำนวนครั้งสูงสุดที่อนุญาตให้เรียกใช้การดำเนินการทดสอบก่อนที่จะยกเลิกโดยอัตโนมัติ ค่าเริ่มต้นคือ 5 นาที ระยะเวลาเป็นวินาทีโดยมีเลขเศษส่วนไม่เกิน 9 หลัก ลงท้ายด้วย " |
disableVideoRecording |
ปิดการบันทึกวิดีโอ อาจลดเวลาในการตอบสนองของการทดสอบ |
disablePerformanceMetrics |
ปิดการบันทึกเมตริกประสิทธิภาพ อาจลดเวลาในการตอบสนองของการทดสอบ |
ช่องการรวม setup ข้อกำหนดในการตั้งค่าการทดสอบ setup ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
testSetup |
ข้อกําหนดในการตั้งค่าการทดสอบสําหรับ Android เช่น ไฟล์ที่จะติดตั้ง สคริปต์เปิดเครื่อง |
iosTestSetup |
ข้อกำหนดในการตั้งค่าการทดสอบสำหรับ iOS |
ช่องการรวม test ต้องระบุ ประเภทการทดสอบที่จะเรียกใช้ test ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
androidInstrumentationTest |
การทดสอบการใช้เครื่องมือ Android |
androidRoboTest |
การทดสอบ Android Robo |
androidTestLoop |
แอปพลิเคชัน Android ที่มี Test Loop |
iosXcTest |
iOS XCTest ผ่านไฟล์ .xctestrun |
iosTestLoop |
แอปพลิเคชัน iOS ที่มี Test Loop |
iosRoboTest |
การทดสอบ Robo ของ iOS |
การตั้งค่าการทดสอบ
คําอธิบายวิธีตั้งค่าอุปกรณ์ Android ก่อนทําการทดสอบ
การแสดง JSON |
---|
{ "filesToPush": [ { object ( |
ช่อง | |
---|---|
filesToPush[] |
รายการไฟล์ที่จะพุชไปยังอุปกรณ์ก่อนเริ่มการทดสอบ |
directoriesToPull[] |
รายการไดเรกทอรีในอุปกรณ์ที่จะอัปโหลดไปยัง GCS เมื่อสิ้นสุดการทดสอบ แต่ต้องเป็นเส้นทางสัมบูรณ์ภายใต้ /sdcard, /storage หรือ /data/local/tmp ชื่อเส้นทางถูกจำกัดไว้เฉพาะอักขระ a-z A-Z 0-9 _ - + และ / หมายเหตุ: เส้นทาง /sdcard และ /data จะพร้อมใช้งานและถือเป็นการแทนเส้นทางโดยนัย เช่น หาก /sdcard บนอุปกรณ์ใดอุปกรณ์หนึ่งไม่ได้จับคู่กับที่จัดเก็บข้อมูลภายนอก ระบบจะแทนที่ /sdcard ด้วยคำนำหน้าเส้นทางที่จัดเก็บข้อมูลภายนอกสำหรับอุปกรณ์นั้น |
initialSetupApks[] |
ไม่บังคับ APK การตั้งค่าเบื้องต้นที่จะติดตั้งก่อนที่จะมีการติดตั้งแอปที่กำลังทดสอบ ปัจจุบันจำกัดที่ 100 คน |
additionalApks[] |
APK ที่จะติดตั้งนอกเหนือจาก APK ที่จะทดสอบโดยตรง ซึ่งจะติดตั้งหลังจากแอปอยู่ระหว่างการทดสอบ ปัจจุบันจำกัดที่ 100 คน |
account |
อุปกรณ์จะเข้าสู่ระบบบัญชีนี้ตลอดระยะเวลาการทดสอบ |
networkProfile |
โปรไฟล์การจราจรของข้อมูลในเครือข่ายที่ใช้สำหรับทำการทดสอบ ค้นหาโปรไฟล์เครือข่ายที่พร้อมใช้งานได้โดยใช้ประเภทสภาพแวดล้อม NETWORK_CONFIGURATION เมื่อเรียกใช้ TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog |
environmentVariables[] |
ตัวแปรสภาพแวดล้อมที่จะตั้งค่าสำหรับการทดสอบ (ใช้ได้เฉพาะสำหรับการทดสอบการวัดคุม) |
systrace |
การกำหนดค่า Systrace สำหรับการเรียกใช้ เลิกใช้งานแล้ว: Systrace ใช้ Python 2 ซึ่งเลิกใช้งานไปเมื่อวันที่ 01-01-2020 Cloud Testing API ไม่รองรับ Systrace อีกต่อไป และจะไม่ส่งไฟล์ Systrace ในผลลัพธ์ |
dontAutograntPermissions |
ป้องกันไม่ให้มีการให้สิทธิ์รันไทม์ทั้งหมดเมื่อติดตั้งแอปหรือไม่ |
ไฟล์อุปกรณ์
คำอธิบายไฟล์ในอุปกรณ์เดียว
การแสดง JSON |
---|
{ // Union field |
ช่อง | |
---|---|
ช่องการรวม device_file ต้องระบุ device_file ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
obbFile |
การอ้างอิงไปยังไฟล์ BLOB ไบนารีที่ทึบแสง |
regularFile |
การอ้างอิงไปยังไฟล์ทั่วไป |
ไฟล์ Obb
ไฟล์ BLOB ไบนารีแบบทึบแสงที่จะติดตั้งในอุปกรณ์ก่อนที่การทดสอบจะเริ่มต้น
การแสดง JSON |
---|
{
"obbFileName": string,
"obb": {
object ( |
ช่อง | |
---|---|
obbFileName |
ต้องระบุ ชื่อไฟล์ OBB ซึ่งต้องสอดคล้องกับรูปแบบที่ Android ระบุไว้ เช่น [main|patch].0300110.com.example.android.obb ซึ่งจะติดตั้งลงใน <shared-storage>/Android/obb/<package-name>/ บนอุปกรณ์ |
obb |
ต้องระบุ ไฟล์ Opaque Binary Blob (OBB) ที่จะติดตั้งบนอุปกรณ์ |
ไฟล์อ้างอิง
การอ้างอิงไฟล์ ใช้สำหรับอินพุตของผู้ใช้
การแสดง JSON |
---|
{ // Union field |
ช่อง | |
---|---|
ช่องการรวม file ต้องระบุ การอ้างอิงไฟล์ file ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
gcsPath |
เส้นทางไปยังไฟล์ใน Google Cloud Storage ตัวอย่างเช่น gs://build-app-1414623860166/app%40debug-unaligned.apk เส้นทางเหล่านี้คาดว่าจะได้รับการเข้ารหัส URL (การเข้ารหัสเปอร์เซ็นต์) |
ไฟล์ปกติ
ไฟล์หรือไดเรกทอรีที่จะติดตั้งในอุปกรณ์ก่อนที่การทดสอบจะเริ่มต้น
การแสดง JSON |
---|
{
"content": {
object ( |
ช่อง | |
---|---|
content |
ต้องระบุ ไฟล์ต้นฉบับ |
devicePath |
ต้องระบุ ตำแหน่งที่จะวางเนื้อหาในอุปกรณ์ ต้องเป็นเส้นทางสัมบูรณ์ในรายการที่อนุญาต หากมีไฟล์อยู่ ระบบจะแทนที่ไฟล์นั้น ไดเรกทอรีฝั่งเซิร์ฟเวอร์ต่อไปนี้และไดเรกทอรีย่อยทั้งหมดอยู่ในรายการที่อนุญาต ${EXTERNAL_STORAGE}, /sdcard หรือ /storage ${ANDROID_DATA}/local/tmp หรือ /data/local/tmp การระบุเส้นทางนอกโครงสร้างไดเรกทอรีเหล่านี้ไม่ถูกต้อง เส้นทาง /sdcard และ /data จะพร้อมใช้งานและถือเป็นการแทนเส้นทางโดยนัย เช่น หาก /sdcard บนอุปกรณ์ใดอุปกรณ์หนึ่งไม่ได้จับคู่กับที่จัดเก็บข้อมูลภายนอก ระบบจะแทนที่ /sdcard ด้วยคำนำหน้าเส้นทางที่จัดเก็บข้อมูลภายนอกสำหรับอุปกรณ์นั้น และคัดลอกไฟล์ลงในนั้น ขอแนะนำให้ใช้ Environment API ในแอปและโค้ดทดสอบเพื่อเข้าถึงไฟล์ในอุปกรณ์แบบพกพา |
APK
ไฟล์แพ็กเกจ Android ที่จะติดตั้ง
การแสดง JSON |
---|
{
"location": {
object ( |
ช่อง | |
---|---|
location |
เส้นทางไปยัง APK ที่จะติดตั้งในอุปกรณ์ก่อนเริ่มการทดสอบ |
packageName |
แพ็กเกจ Java สำหรับ APK ที่จะติดตั้ง ค่านี้กำหนดโดยการตรวจสอบไฟล์ Manifest ของแอปพลิเคชัน |
บัญชี
ระบุบัญชีและวิธีลงชื่อเข้าใช้
การแสดง JSON |
---|
{ // Union field |
ช่อง | |
---|---|
ช่องการรวม account_type ต้องระบุ ประเภทบัญชี โดยขึ้นอยู่กับวัตถุประสงค์ (เช่น Google) และกลไกการเข้าสู่ระบบ (เช่น ชื่อผู้ใช้และรหัสผ่าน) account_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
googleAuto |
บัญชีที่เข้าสู่ระบบ Google โดยอัตโนมัติ |
Google ออโต้
ประเภทนี้ไม่มีช่อง
เปิดใช้การเข้าสู่ระบบบัญชี Google โดยอัตโนมัติ หากตั้งค่าไว้ บริการจะสร้างบัญชีทดสอบ Google โดยอัตโนมัติและเพิ่มบัญชีลงในอุปกรณ์ก่อนดำเนินการทดสอบ โปรดทราบว่าอาจมีการนำบัญชีทดสอบมาใช้ซ้ำ แอปพลิเคชันจำนวนมากแสดงฟังก์ชันการทำงานทั้งหมดเมื่อมีบัญชีในอุปกรณ์ การเข้าสู่ระบบอุปกรณ์ด้วยบัญชีที่สร้างขึ้นเหล่านี้จะช่วยให้ทดสอบฟังก์ชันการทำงานได้มากขึ้น
ตัวแปรสภาพแวดล้อม
คู่คีย์-ค่าที่ส่งผ่านเป็นตัวแปรสภาพแวดล้อมไปยังการทดสอบ
การแสดง JSON |
---|
{ "key": string, "value": string } |
ช่อง | |
---|---|
key |
คีย์สำหรับตัวแปรสภาพแวดล้อม |
value |
ค่าสำหรับตัวแปรสภาพแวดล้อม |
การตั้งค่า Systrace
การแสดง JSON |
---|
{ "durationSeconds": integer } |
ช่อง | |
---|---|
durationSeconds |
ระยะเวลา Systrace เป็นวินาที ควรอยู่ระหว่าง 1 ถึง 30 วินาที 0 จะปิดใช้ Systrace |
ตั้งค่าการทดสอบ Ios
คําอธิบายวิธีตั้งค่าอุปกรณ์ iOS ก่อนดําเนินการทดสอบ
การแสดง JSON |
---|
{ "networkProfile": string, "additionalIpas": [ { object ( |
ช่อง | |
---|---|
networkProfile |
โปรไฟล์การจราจรของข้อมูลในเครือข่ายที่ใช้สำหรับทำการทดสอบ ค้นหาโปรไฟล์เครือข่ายที่พร้อมใช้งานได้โดยใช้ประเภทสภาพแวดล้อม NETWORK_CONFIGURATION เมื่อเรียกใช้ TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog |
additionalIpas[] |
แอป iOS ที่จะติดตั้งนอกเหนือจากแอปที่ทดสอบโดยตรง |
pushFiles[] |
รายการไฟล์ที่จะพุชไปยังอุปกรณ์ก่อนเริ่มการทดสอบ |
pullDirectories[] |
รายการไดเรกทอรีในอุปกรณ์ที่จะอัปโหลดไปยัง Cloud Storage เมื่อสิ้นสุดการทดสอบ ไดเรกทอรีควรอยู่ในไดเรกทอรีที่แชร์ (เช่น /private/var/mobile/Media) หรือภายในไดเรกทอรีที่เข้าถึงได้ภายในระบบไฟล์ของแอป (เช่น /Documents) โดยระบุรหัสชุด |
ไฟล์อุปกรณ์ iOS
ไฟล์หรือไดเรกทอรีที่จะติดตั้งในอุปกรณ์ก่อนที่การทดสอบจะเริ่มต้น
การแสดง JSON |
---|
{
"content": {
object ( |
ช่อง | |
---|---|
content |
ไฟล์ต้นฉบับ |
bundleId |
รหัสชุดของแอปที่ใช้ไฟล์นี้ แอป iOS จะทำแซนด์บ็อกซ์กับระบบไฟล์ของตนเอง ดังนั้นไฟล์ของแอปต้องระบุแอปที่จะติดตั้งในอุปกรณ์ |
devicePath |
ตำแหน่งของไฟล์ในอุปกรณ์ภายในระบบไฟล์ที่แซนด์บ็อกซ์ของแอป |
AndroidInstrumentationTest
การทดสอบแอปพลิเคชัน Android ที่ควบคุมคอมโพเนนต์ Android ได้อย่างอิสระจากวงจรชีวิตปกติ การทดสอบการใช้เครื่องมือ Android จะเรียกใช้ APK ของแอปพลิเคชัน และทดสอบ APK ภายในกระบวนการเดียวกันบน AndroidDevice เสมือนหรืออุปกรณ์จริง นอกจากนี้ ยังระบุคลาสตัวดำเนินการทดสอบ เช่น com.google.GoogleTestRunner ซึ่งอาจแตกต่างกันไปตามเฟรมเวิร์กของเครื่องมือที่เลือก
ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทการทดสอบ Android ได้ที่ https://developer.android.com/training/testing/fundamentals
การแสดง JSON |
---|
{ "testApk": { object ( |
ช่อง | |
---|---|
testApk |
ต้องระบุ APK ที่มีโค้ดทดสอบที่จะดำเนินการ |
appPackageId |
แพ็กเกจ Java สำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ ค่าเริ่มต้นจะกำหนดโดยการตรวจสอบไฟล์ Manifest ของแอปพลิเคชัน |
testPackageId |
แพ็กเกจ Java สำหรับทดสอบที่จะดำเนินการ ค่าเริ่มต้นจะกำหนดโดยการตรวจสอบไฟล์ Manifest ของแอปพลิเคชัน |
testRunnerClass |
คลาส InstrumentationTestRunner ค่าเริ่มต้นจะกำหนดโดยการตรวจสอบไฟล์ Manifest ของแอปพลิเคชัน |
testTargets[] |
เป้าหมายแต่ละรายการต้องเป็นแบบเต็มด้วยชื่อแพ็กเกจหรือชื่อคลาสในรูปแบบใดรูปแบบหนึ่งต่อไปนี้
หากเว้นว่างไว้ เป้าหมายทั้งหมดในโมดูลจะทำงาน |
orchestratorOption |
ตัวเลือกว่าจะเรียกใช้การทดสอบแต่ละรายการภายในการเรียกใช้เครื่องมือของตนเองกับ Android Test Orchestrator หรือไม่ ** Orchestrator ใช้งานได้กับ AndroidJUnitRunner เวอร์ชัน 1.1 ขึ้นไปเท่านั้น ** Orchestrator มีประโยชน์ดังต่อไปนี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Android Test Orchestrator ได้ที่ https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator หากไม่ได้ตั้งค่า การทดสอบจะทํางานโดยไม่มี Orchestrator |
shardingOption |
ตัวเลือกในการเรียกใช้การทดสอบในชาร์ดหลายรายการพร้อมกัน |
ช่องการรวม app_under_test ต้องระบุ app_under_test ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
appApk |
APK สำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ |
appBundle |
App Bundle ที่มี APK หลายรายการสำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ |
แพ็กเกจแอป
รูปแบบไฟล์ Android App Bundle ที่มีไฟล์ BundleConfig.pb, ไดเรกทอรีโมดูลฐาน, ไดเรกทอรีโมดูลฟีเจอร์แบบไดนามิกตั้งแต่ 0 รายการขึ้นไป
ดูคำแนะนำในการสร้าง App Bundle ได้ที่ https://developer.android.com/guide/app-bundle/build
การแสดง JSON |
---|
{ // Union field |
ช่อง | |
---|---|
ช่องการรวม bundle ต้องระบุ ข้อมูลตำแหน่งของกลุ่ม bundle ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
bundleLocation |
ไฟล์ .aab ที่แสดงถึง App Bundle ที่อยู่ภายใต้การทดสอบ |
ตัวเลือก Orchestrator
ระบุวิธีดำเนินการทดสอบ
Enum | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED |
ค่าเริ่มต้น: เซิร์ฟเวอร์จะเลือกโหมด ปัจจุบันกล่าวเป็นนัยว่าการทดสอบจะทำงานโดยไม่มี Orchestrator ในอนาคต การทดสอบการใช้เครื่องมือทั้งหมดจะดำเนินการร่วมกับ Orchestrator เราขอแนะนำเป็นอย่างยิ่งให้ใช้ Orchestrator เนื่องจากประโยชน์ทั้งหมดที่มี |
USE_ORCHESTRATOR |
ทำการทดสอบโดยใช้ Orchestrator ** รองรับเฉพาะ AndroidJUnitRunner เวอร์ชัน 1.1 ขึ้นไปเท่านั้น! ** แนะนำ |
DO_NOT_USE_ORCHESTRATOR |
ทำการทดสอบโดยไม่ใช้ Orchestrator |
ตัวเลือกชาร์ดดิ้ง
ตัวเลือกสำหรับการเปิดใช้ชาร์ดดิ้ง
การแสดง JSON |
---|
{ // Union field |
ช่อง | |
---|---|
ช่องการรวม
|
|
uniformSharding |
กรณีการทดสอบชาร์ดที่สม่ำเสมอโดยมีจำนวนชาร์ดทั้งหมด |
manualSharding |
กรณีการทดสอบชาร์ดลงในกลุ่มของแพ็กเกจ คลาส และ/หรือเมธอดที่ระบุ |
smartSharding |
การทดสอบชาร์ดตามบันทึกการจับเวลาของกรอบการทดสอบก่อนหน้า |
ชาร์ดดิ้งแบบเดียวกัน
กรณีการทดสอบชาร์ดที่สม่ำเสมอโดยมีจำนวนชาร์ดทั้งหมด
ส่วนการทดสอบการวัดคุม ระบบจะแปลค่าเป็น "-e numShard" และ "-e shardIndex" อาร์กิวเมนต์ AndroidJUnitRunner เมื่อเปิดใช้การชาร์ดดิ้งแบบเดียวกัน การระบุอาร์กิวเมนต์ชาร์ดดิ้งเหล่านี้ผ่าน environmentVariables
ไม่ถูกต้อง
จากกลไกการชาร์ดที่ AndroidJUnitRunner ใช้งาน ไม่มีการรับประกันว่ากรณีการทดสอบจะกระจายอย่างเท่าเทียมกันในชาร์ดทั้งหมด
การแสดง JSON |
---|
{ "numShards": integer } |
ช่อง | |
---|---|
numShards |
ต้องระบุ จำนวนชาร์ดทั้งหมดที่จะสร้าง ซึ่งจะต้องเป็นจำนวนบวกที่ไม่เกินจำนวนกรอบการทดสอบทั้งหมดเสมอ เมื่อคุณเลือกอุปกรณ์จริงอย่างน้อย 1 เครื่อง จำนวนชาร์ดต้องน้อยกว่า 50 เมื่อเลือกอุปกรณ์เสมือน ARM อย่างน้อย 1 เครื่อง อุปกรณ์นั้นต้องมีค่า <= 200 เมื่อเลือกเฉพาะอุปกรณ์เสมือน x86 อุปกรณ์นั้นต้องมีค่า <= 500 |
ชาร์ดดิ้งด้วยตนเอง
กรณีการทดสอบชาร์ดลงในกลุ่มของแพ็กเกจ คลาส และ/หรือเมธอดที่ระบุ
เมื่อเปิดใช้ชาร์ดดิ้งด้วยตนเอง การระบุเป้าหมายทดสอบผ่านสภาพแวดล้อมตัวแปรหรือใน InstrumentationTest ไม่ถูกต้อง
การแสดง JSON |
---|
{
"testTargetsForShard": [
{
object ( |
ช่อง | |
---|---|
testTargetsForShard[] |
ต้องระบุ กลุ่มของแพ็กเกจ คลาส และ/หรือวิธีการทดสอบที่จะเรียกใช้สำหรับชาร์ดที่สร้างด้วยตนเองแต่ละรายการ คุณต้องระบุชาร์ดอย่างน้อย 1 รายการหากมีช่องนี้อยู่ เมื่อคุณเลือกอุปกรณ์จริงอย่างน้อย 1 เครื่อง จำนวน testTargetsForShard ซ้ำต้อง<= 50 เมื่อเลือกอุปกรณ์เสมือน ARM อย่างน้อย 1 เครื่อง อุปกรณ์นั้นต้องมีค่า <= 200 เมื่อเลือกเฉพาะอุปกรณ์เสมือน x86 อุปกรณ์นั้นต้องมีค่า <= 500 |
เป้าหมายการทดสอบสำหรับชาร์ด
เป้าหมายทดสอบสำหรับชาร์ด
การแสดง JSON |
---|
{ "testTargets": [ string ] } |
ช่อง | |
---|---|
testTargets[] |
กลุ่มของแพ็กเกจ คลาส และ/หรือวิธีการทดสอบที่จะเรียกใช้สำหรับชาร์ดแต่ละรายการ เป้าหมายจำเป็นต้องระบุในรูปแบบอาร์กิวเมนต์ AndroidJUnitRunner เช่น "package com.my.packages" "class com.my.package.MyClass" จำนวน testTarget ต้องมากกว่า 0 |
สมาร์ทชาร์ดดิ้ง
การทดสอบชาร์ดตามบันทึกการจับเวลาของกรอบการทดสอบก่อนหน้า
การแสดง JSON |
---|
{ "targetedShardDuration": string } |
ช่อง | |
---|---|
targetedShardDuration |
ระยะเวลาในการทดสอบภายในชาร์ด ค่าเริ่มต้น: 300 วินาที (5 นาที) ค่าขั้นต่ำที่อนุญาต: 120 วินาที (2 นาที) ระบบจะตั้งค่าจำนวนชาร์ดแบบไดนามิกตามเวลาที่ขึ้นอยู่กับจำนวนชาร์ดสูงสุด (คำอธิบายอยู่ด้านล่าง) เพื่อรับประกันกรอบการทดสอบอย่างน้อย 1 รายการสำหรับชาร์ดแต่ละรายการ จำนวนชาร์ดจะไม่เกินจำนวนกรอบการทดสอบ ระยะเวลาของชาร์ดจะเกินกำหนดในกรณีต่อไปนี้
ระบบไม่รับประกันระยะเวลาของชาร์ดเนื่องจาก Smart Shard ใช้ประวัติกรอบการทดสอบและระยะเวลาเริ่มต้นซึ่งอาจไม่ถูกต้อง กฎในการค้นหาระเบียนเวลาของกรอบการทดสอบมีดังนี้
เนื่องจากระยะเวลาชาร์ดจริงอาจเกินระยะเวลาของชาร์ดเป้าหมาย เราจึงขอแนะนำให้คุณตั้งค่าเป้าหมายอย่างน้อย 5 นาทีต่ำกว่าระยะหมดเวลาทดสอบสูงสุดที่อนุญาต (45 นาทีสำหรับอุปกรณ์จริง และ 60 นาทีสำหรับเสมือน) หรือคุณอาจใช้ค่าการหมดเวลาการทดสอบที่กำหนดเองที่ตั้งไว้ วิธีนี้จะหลีกเลี่ยงการยกเลิกชาร์ดก่อนที่การทดสอบทั้งหมดจะเสร็จสมบูรณ์ โปรดทราบว่าจำนวนชาร์ดสูงสุดมีขีดจำกัด เมื่อคุณเลือกอุปกรณ์จริงอย่างน้อย 1 เครื่อง จำนวนชาร์ดต้องน้อยกว่า 50 เมื่อเลือกอุปกรณ์เสมือน ARM อย่างน้อย 1 เครื่อง อุปกรณ์นั้นต้องมีค่า <= 200 เมื่อเลือกเฉพาะอุปกรณ์เสมือน x86 อุปกรณ์นั้นต้องมีค่า <= 500 เพื่อรับประกันกรอบการทดสอบอย่างน้อย 1 รายการต่อชาร์ด จำนวนชาร์ดจะไม่เกินจำนวนกรอบการทดสอบ ชาร์ดที่สร้างขึ้นแต่ละรายการจะนับรวมในโควต้าการทดสอบรายวัน ระยะเวลาเป็นวินาทีโดยมีเลขเศษส่วนไม่เกิน 9 หลัก ลงท้ายด้วย " |
AndroidRoboTest
การทดสอบแอปพลิเคชัน Android ที่สำรวจแอปพลิเคชันบนอุปกรณ์ Android เสมือนจริงหรือจริง เพื่อหาสาเหตุและข้อขัดข้องที่เกิดขึ้น
การแสดง JSON |
---|
{ "appPackageId": string, "appInitialActivity": string, "maxDepth": integer, "maxSteps": integer, "roboDirectives": [ { object ( |
ช่อง | |
---|---|
appPackageId |
แพ็กเกจ Java สำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ ค่าเริ่มต้นจะกำหนดโดยการตรวจสอบไฟล์ Manifest ของแอปพลิเคชัน |
appInitialActivity |
กิจกรรมเริ่มต้นที่ควรใช้ในการเริ่มต้นแอป |
maxDepth |
ความลึกสูงสุดของสแต็ก Traversal ที่ Robo สำรวจได้ อย่างน้อย 2 คนเพื่อให้ Robo สำรวจแอปได้เกินกว่ากิจกรรมแรก ค่าเริ่มต้นคือ 50 |
maxSteps |
จำนวนขั้นตอนสูงสุดที่ Robo ทำได้ ไม่มีขีดจำกัดเริ่มต้น |
roboDirectives[] |
ชุดคำสั่งที่ Robo ควรใช้ในระหว่างการรวบรวมข้อมูล ซึ่งจะช่วยให้ผู้ใช้ปรับแต่งการ Crawl ได้ เช่น ระบุชื่อผู้ใช้และรหัสผ่านของบัญชีทดสอบได้ |
roboMode |
โหมดที่ Robo ควรทำงาน ไคลเอ็นต์ส่วนใหญ่ควรอนุญาตให้เซิร์ฟเวอร์ป้อนข้อมูลในช่องนี้โดยอัตโนมัติ |
roboScript |
ไฟล์ JSON ที่มีลำดับการดำเนินการ Robo ควรทำหน้าที่เป็นอารัมภบทสำหรับการรวบรวมข้อมูล |
startingIntents[] |
Intent ที่ใช้เพื่อเปิดแอปสำหรับการรวบรวมข้อมูล หากไม่ได้ให้ไว้ ระบบจะเริ่มกิจกรรมหลักของ Launcher หากมีบางรายการ ระบบจะเปิดใช้งานเฉพาะรายการที่ระบุไว้เท่านั้น (ต้องระบุกิจกรรมของ Launcher หลักอย่างชัดเจน) |
ช่องการรวม app_under_test ต้องระบุ app_under_test ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
appApk |
APK สำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ |
appBundle |
App Bundle ที่มี APK หลายรายการสำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ |
RoboDirective
สั่งให้ Robo โต้ตอบกับองค์ประกอบ UI ที่เฉพาะเจาะจงหากพบในระหว่างการ Crawl ปัจจุบัน Robo ป้อนข้อความหรือคลิกองค์ประกอบได้
การแสดง JSON |
---|
{
"resourceName": string,
"inputText": string,
"actionType": enum ( |
ช่อง | |
---|---|
resourceName |
ต้องระบุ ชื่อทรัพยากร Android ขององค์ประกอบ UI เป้าหมาย ตัวอย่างเช่น ใน Java: R.string.foo ใน xml: @string/foo เฉพาะ "foo" เท่านั้น เป็นสิ่งจำเป็น เอกสารอ้างอิง: https://developer.android.com/guide/topics/resources/accessing-resources.html |
inputText |
ข้อความที่ Robo ได้รับการตั้งค่า หากเว้นว่างไว้ ระบบจะถือว่าคำสั่งเป็นการคลิกองค์ประกอบที่ตรงกับ resourceName |
actionType |
ต้องระบุ ประเภทการทำงานที่ Robo ควรทำในองค์ประกอบที่ระบุ |
ประเภทการดำเนินการ Robo
การทำงานที่ Robo ทำได้กับองค์ประกอบ UI
Enum | |
---|---|
ACTION_TYPE_UNSPECIFIED |
ห้ามใช้ สำหรับการกำหนดเวอร์ชัน Proto เท่านั้น |
SINGLE_CLICK |
กำหนดให้ Robo คลิกองค์ประกอบที่ระบุ ไม่มีการดำเนินการหากองค์ประกอบที่ระบุไม่สามารถคลิกได้ |
ENTER_TEXT |
กำหนดให้ Robo ป้อนข้อความในองค์ประกอบที่ระบุ ไม่มีการดำเนินการหากไม่ได้เปิดใช้องค์ประกอบที่ระบุหรือไม่อนุญาตให้ป้อนข้อความ |
IGNORE |
กำหนดให้ Robo ละเว้นการโต้ตอบกับองค์ประกอบที่เจาะจง |
โหมด Robo
โหมดที่ Robo ควรทำงาน
Enum | |
---|---|
ROBO_MODE_UNSPECIFIED |
ซึ่งหมายความว่าเซิร์ฟเวอร์ควรเลือกโหมด แนะนำ |
ROBO_VERSION_1 |
เรียกใช้ Robo ในโหมด UIAutomator เท่านั้นโดยไม่ต้องลงนามแอปอีกครั้ง |
ROBO_VERSION_2 |
เรียกใช้ Robo ใน Espresso มาตรฐานโดยมี UIAutomator สำรอง |
ความตั้งใจเริ่มต้น Robo
ข้อความสำหรับการระบุกิจกรรมเริ่มต้นที่จะทำการ Crawl
การแสดง JSON |
---|
{ "timeout": string, // Union field |
ช่อง | |
---|---|
timeout |
ระยะหมดเวลาในหน่วยวินาทีสำหรับแต่ละ Intent ระยะเวลาเป็นวินาทีโดยมีเลขเศษส่วนไม่เกิน 9 หลัก ลงท้ายด้วย " |
ช่องการรวม starting_intent ต้องระบุ รายละเอียดเกี่ยวกับความตั้งใจในการเริ่มกิจกรรม starting_intent ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
launcherActivity |
Intent ที่เริ่มต้นกิจกรรมหลักของ Launcher |
startActivity |
Intent ที่เริ่มกิจกรรมด้วยรายละเอียดที่เฉพาะเจาะจง |
noActivity |
ข้ามกิจกรรมเริ่มต้น |
จุดประสงค์ของ LauncherActivity
ประเภทนี้ไม่มีช่อง
ระบุ Intent ที่เริ่มต้นกิจกรรมหลักของ Launcher
StartActivityIntent
Intent เริ่มต้นที่ระบุโดยการดำเนินการ, URI และหมวดหมู่
การแสดง JSON |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
ช่อง | |
---|---|
action |
ชื่อการดำเนินการ จำเป็นสำหรับ START_ACTIVITY |
uri |
URI สำหรับการดำเนินการ |
categories[] |
หมวดหมู่ความตั้งใจที่จะตั้งค่าความตั้งใจ |
ไม่มีกิจกรรมความตั้งใจ
ประเภทนี้ไม่มีช่อง
ข้ามกิจกรรมเริ่มต้น
AndroidTestLoop
การทดสอบแอปพลิเคชัน Android ด้วย Test Loop Intent <intent-name> จะเพิ่มเข้ามาโดยปริยาย เนื่องจากขณะนี้ Games เป็นผู้ใช้เพียงรายเดียวของ API นี้
การแสดง JSON |
---|
{ "appPackageId": string, "scenarios": [ integer ], "scenarioLabels": [ string ], // Union field |
ช่อง | |
---|---|
appPackageId |
แพ็กเกจ Java สำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ ค่าเริ่มต้นจะกำหนดโดยการตรวจสอบไฟล์ Manifest ของแอปพลิเคชัน |
scenarios[] |
รายการสถานการณ์ที่ควรใช้ระหว่างการทดสอบ ค่าเริ่มต้นคือ Test Loop ทั้งหมด ซึ่งดึงมาจากไฟล์ Manifest ของแอปพลิเคชัน |
scenarioLabels[] |
รายการป้ายกำกับสถานการณ์ที่ควรใช้ระหว่างการทดสอบ ป้ายกำกับสถานการณ์ควรแมปกับป้ายกำกับที่กำหนดในไฟล์ Manifest ของแอปพลิเคชัน ตัวอย่างเช่น Player_experience และ com.google.test.loops.player_experience จะเพิ่มลูปทั้งหมดที่มีป้ายกำกับในไฟล์ Manifest ด้วยชื่อ com.google.test.loops.player_experience ในการเรียกใช้ นอกจากนี้ คุณยังระบุสถานการณ์ในช่องสถานการณ์ได้อีกด้วย |
ช่องการรวม app_under_test ต้องระบุ แพ็กเกจ Android ที่จะทดสอบ app_under_test ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
appApk |
APK สำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ |
appBundle |
App Bundle ที่มี APK หลายรายการสำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ |
การทดสอบ IosXc
การทดสอบแอปพลิเคชัน iOS ที่ใช้เฟรมเวิร์ก XCTest Xcode รองรับตัวเลือกในการ "สร้างสำหรับการทดสอบ" ซึ่งจะสร้างไฟล์ .xctestrun ที่มีข้อกำหนดการทดสอบ (อาร์กิวเมนต์ วิธีทดสอบ ฯลฯ) ประเภทการทดสอบนี้ยอมรับไฟล์ ZIP ที่มีไฟล์ .xctestrun และเนื้อหาที่เกี่ยวข้องของไดเรกทอรี Build/Products ที่มีไบนารีทั้งหมดที่จําเป็นในการทําการทดสอบ
การแสดง JSON |
---|
{ "testsZip": { object ( |
ช่อง | |
---|---|
testsZip |
ต้องระบุ ไฟล์ .zip ที่มีไฟล์ .xctestrun และเนื้อหาของไดเรกทอรี DerivedData/Build/Products ระบบจะละเว้นไฟล์ .xctestrun ในไฟล์ ZIP นี้หากระบุช่อง xctestrun |
xctestrun |
ไฟล์ .xctestrun ที่จะลบล้างไฟล์ .xctestrun ในไฟล์ ZIP ของการทดสอบ เนื่องจากไฟล์ .xctestrun มีตัวแปรสภาพแวดล้อมพร้อมกับวิธีการทดสอบที่จะเรียกใช้และ/หรือละเว้น จึงอาจเป็นประโยชน์ต่อการชาร์ดดิ้งการทดสอบ ค่าเริ่มต้นจะดึงมาจากไฟล์ ZIP ของการทดสอบ |
xcodeVersion |
Xcode เวอร์ชันที่ควรใช้สำหรับการทดสอบ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ ค่าเริ่มต้นเป็น Xcode เวอร์ชันล่าสุดที่ Firebase Test Lab รองรับ |
appBundleId |
เอาต์พุตเท่านั้น รหัสชุดของแอปพลิเคชันที่อยู่ระหว่างทดสอบ |
testSpecialEntitlements |
ตัวเลือกสำหรับทดสอบการให้สิทธิ์พิเศษของแอป การตั้งค่านี้จะลงนามแอปอีกครั้งที่มีสิทธิ์พิเศษด้วยตัวระบุแอปพลิเคชันที่ชัดเจน ปัจจุบันรองรับการให้สิทธิ์สภาพแวดล้อมแอปสำหรับการทดสอบ |
การทดสอบลูป Ios
การทดสอบแอปพลิเคชัน iOS ที่ใช้สถานการณ์ Game Loop อย่างน้อย 1 สถานการณ์ การทดสอบประเภทนี้จะยอมรับแอปพลิเคชันที่เก็บถาวร (ไฟล์ .ipa) และรายการสถานการณ์ตัวเลขที่จะดำเนินการในแอปตามลำดับ
การแสดง JSON |
---|
{
"appIpa": {
object ( |
ช่อง | |
---|---|
appIpa |
ต้องระบุ ไฟล์ .ipa ของแอปพลิเคชันที่จะทดสอบ |
scenarios[] |
รายการสถานการณ์ที่ควรใช้ระหว่างการทดสอบ ค่าเริ่มต้นจะเป็นสถานการณ์เดียว 0 หากไม่ระบุ |
appBundleId |
เอาต์พุตเท่านั้น รหัสชุดของแอปพลิเคชันที่อยู่ระหว่างทดสอบ |
ไอออสโรโบทดสอบ
การทดสอบที่สำรวจแอปพลิเคชัน iOS ในอุปกรณ์ iOS
การแสดง JSON |
---|
{ "appIpa": { object ( |
ช่อง | |
---|---|
appIpa |
ต้องระบุ ควรใช้ IPa ที่จัดเก็บไว้ในไฟล์นี้เพื่อทำการทดสอบ |
appBundleId |
รหัสชุดสำหรับการทดสอบแอปอันเดอร์ ซึ่งกำหนดโดยการตรวจสอบ "Info.plist" ของแอปพลิเคชัน |
roboScript |
Roboscript ที่ไม่บังคับสำหรับปรับแต่งการรวบรวมข้อมูล ดูข้อมูลเพิ่มเติมเกี่ยวกับ Roboscripts ได้ที่ https://firebase.google.com/docs/test-lab/android/robo-scripts-reference |
EnvironmentMatrix
เมทริกซ์ของสภาพแวดล้อมที่จะทำการทดสอบ
การแสดง JSON |
---|
{ // Union field |
ช่อง | |
---|---|
ช่องการรวม environment_matrix ต้องระบุ เมทริกซ์สภาพแวดล้อม environment_matrix ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
androidMatrix |
เมทริกซ์ของอุปกรณ์ Android |
androidDeviceList |
รายการอุปกรณ์ Android การทดสอบจะทำงานบนอุปกรณ์ที่ระบุเท่านั้น |
iosDeviceList |
รายการอุปกรณ์ iOS |
AndroidMatrix
ชุดการเรียงสับเปลี่ยนการกำหนดค่าอุปกรณ์ Android จะกำหนดโดยการข้ามผลิตภัณฑ์ของแกนที่ระบุ AndroidMatrix ที่ระบุจะขยายไปสู่ชุดอุปกรณ์ Android เป็นการภายใน
ระบบจะสร้างอินสแตนซ์เฉพาะการเรียงสับเปลี่ยนที่รองรับเท่านั้น ระบบจะไม่สนใจการเรียงสับเปลี่ยนที่ไม่ถูกต้อง (เช่น โมเดล/เวอร์ชันที่เข้ากันไม่ได้)
การแสดง JSON |
---|
{ "androidModelIds": [ string ], "androidVersionIds": [ string ], "locales": [ string ], "orientations": [ string ] } |
ช่อง | |
---|---|
androidModelIds[] |
ต้องระบุ รหัสของชุดอุปกรณ์ Android ที่จะใช้ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ |
androidVersionIds[] |
ต้องระบุ รหัสของชุดเวอร์ชันของระบบปฏิบัติการ Android ที่จะใช้ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ |
locales[] |
ต้องระบุ ชุดภาษาที่อุปกรณ์ทดสอบจะเปิดใช้สำหรับการทดสอบ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ |
orientations[] |
ต้องระบุ ชุดการวางแนวที่จะทดสอบ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ |
รายการอุปกรณ์ Android
รายการการกำหนดค่าอุปกรณ์ Android ที่จะทำการทดสอบ
การแสดง JSON |
---|
{
"androidDevices": [
{
object ( |
ช่อง | |
---|---|
androidDevices[] |
ต้องระบุ รายการอุปกรณ์ Android |
รายการอุปกรณ์ iOS
รายการการกำหนดค่าอุปกรณ์ iOS ที่จะทำการทดสอบ
การแสดง JSON |
---|
{
"iosDevices": [
{
object ( |
ช่อง | |
---|---|
iosDevices[] |
ต้องระบุ รายการอุปกรณ์ iOS |
อุปกรณ์ iOS
อุปกรณ์ iOS เครื่องเดียว
การแสดง JSON |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
ช่อง | |
---|---|
iosModelId |
ต้องระบุ รหัสของอุปกรณ์ iOS ที่จะใช้ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ |
iosVersionId |
ต้องระบุ รหัสของเวอร์ชันซอฟต์แวร์หลักของ iOS ที่จะใช้ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ |
locale |
ต้องระบุ ภาษาที่อุปกรณ์ทดสอบใช้ในการทดสอบ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ |
orientation |
ต้องระบุ วิธีจัดแนวอุปกรณ์ในระหว่างการทดสอบ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ |
การดำเนินการทดสอบ
การทดสอบรายการเดียวที่ดำเนินการในสภาพแวดล้อมเดียว
การแสดง JSON |
---|
{ "id": string, "matrixId": string, "projectId": string, "testSpecification": { object ( |
ช่อง | |
---|---|
id |
เอาต์พุตเท่านั้น รหัสที่ไม่ซ้ำกันที่บริการกำหนด |
matrixId |
เอาต์พุตเท่านั้น รหัสของ TestMatrix ที่มี |
projectId |
เอาต์พุตเท่านั้น โปรเจ็กต์ระบบคลาวด์ที่เป็นเจ้าของการดำเนินการทดสอบ |
testSpecification |
เอาต์พุตเท่านั้น วิธีทำการทดสอบ |
shard |
เอาต์พุตเท่านั้น รายละเอียดเกี่ยวกับชาร์ด |
environment |
เอาต์พุตเท่านั้น วิธีกำหนดค่าเครื่องโฮสต์ |
state |
เอาต์พุตเท่านั้น ระบุความคืบหน้าปัจจุบันของการดำเนินการทดสอบ (เช่น FINISHED) |
toolResultsStep |
เอาต์พุตเท่านั้น ตำแหน่งที่เขียนผลลัพธ์ของการดำเนินการนี้ |
timestamp |
เอาต์พุตเท่านั้น เวลาที่การดำเนินการทดสอบนี้สร้างขึ้นเป็นครั้งแรก การประทับเวลาเป็น RFC3339 UTC "Zulu" โดยมีความละเอียดระดับนาโนวินาทีและมีเลขเศษส่วนสูงสุด 9 หลัก ตัวอย่าง: |
testDetails |
เอาต์พุตเท่านั้น รายละเอียดเพิ่มเติมเกี่ยวกับการทดสอบที่ทำงานอยู่ |
ชาร์ด
เอาต์พุตเท่านั้น รายละเอียดเกี่ยวกับชาร์ด
การแสดง JSON |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
ช่อง | |
---|---|
shardIndex |
เอาต์พุตเท่านั้น ดัชนีของชาร์ดจากชาร์ดทั้งหมด |
numShards |
เอาต์พุตเท่านั้น จำนวนชาร์ดทั้งหมด |
testTargetsForShard |
เอาต์พุตเท่านั้น เป้าหมายทดสอบสำหรับชาร์ดแต่ละรายการ ตั้งค่าไว้สำหรับชาร์ดดิ้งด้วยตนเองเท่านั้น |
estimatedShardDuration |
เอาต์พุตเท่านั้น ระยะเวลาชาร์ดโดยประมาณที่อิงตามบันทึกเวลาของกรอบการทดสอบก่อนหน้า หากมี ระยะเวลาเป็นวินาทีโดยมีเลขเศษส่วนไม่เกิน 9 หลัก ลงท้ายด้วย " |
สภาพแวดล้อม
สภาพแวดล้อมที่มีการทดสอบ
การแสดง JSON |
---|
{ // Union field |
ช่อง | |
---|---|
ช่องการรวม environment ต้องระบุ สิ่งแวดล้อม environment ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
androidDevice |
อุปกรณ์ Android ที่ต้องใช้กับการทดสอบ Android |
iosDevice |
อุปกรณ์ iOS ที่ต้องใช้กับการทดสอบ iOS |
สถานะการทดสอบ
สถานะ (เช่น ความคืบหน้า) ของการดำเนินการหรือเมทริกซ์ทดสอบ
Enum | |
---|---|
TEST_STATE_UNSPECIFIED |
โปรดอย่าใช้ สำหรับการกำหนดเวอร์ชัน Proto เท่านั้น |
VALIDATING |
กำลังตรวจสอบการดำเนินการหรือเมทริกซ์ |
PENDING |
การดำเนินการหรือเมทริกซ์กำลังรอให้ทรัพยากรพร้อมใช้งาน |
RUNNING |
กำลังประมวลผลการดำเนินการ ตั้งค่าได้เฉพาะในการดำเนินการเท่านั้น |
FINISHED |
การดำเนินการหรือเมทริกซ์สิ้นสุดลงตามปกติ ในเมทริกซ์ จะหมายความว่าการประมวลผลระดับเมทริกซ์เสร็จสมบูรณ์ตามปกติ แต่การดำเนินการแต่ละรายการอาจอยู่ในสถานะ ERROR |
ERROR |
การดำเนินการหรือเมทริกซ์หยุดทำงานเนื่องจากพบโครงสร้างพื้นฐานล้มเหลว |
UNSUPPORTED_ENVIRONMENT |
เรียกใช้การดำเนินการไม่ได้เนื่องจากสอดคล้องกับสภาพแวดล้อมที่ไม่รองรับ ตั้งค่าได้เฉพาะในการดำเนินการเท่านั้น |
INCOMPATIBLE_ENVIRONMENT |
ไม่สามารถเรียกใช้การดำเนินการเนื่องจากอินพุตที่ระบุเข้ากันไม่ได้กับสภาพแวดล้อมที่ขอ ตัวอย่าง: AndroidVersion ที่ขอต่ำกว่า minSdkVersion ของ APK ตั้งค่าได้เฉพาะในการดำเนินการเท่านั้น |
INCOMPATIBLE_ARCHITECTURE |
ไม่สามารถเรียกใช้การดำเนินการเนื่องจากอินพุตที่ระบุเข้ากันไม่ได้กับสถาปัตยกรรมที่ขอ ตัวอย่าง: อุปกรณ์ที่ขอไม่รองรับการเรียกใช้โค้ดเนทีฟใน APK ที่ให้มา ตั้งค่าได้เฉพาะในการดำเนินการเท่านั้น |
CANCELLED |
ผู้ใช้ยกเลิกการดำเนินการ ตั้งค่าได้เฉพาะในการดำเนินการเท่านั้น |
INVALID |
การเรียกใช้หรือเมทริกซ์ไม่ทำงานเนื่องจากอินพุตที่ระบุไม่ถูกต้อง ตัวอย่าง: ไฟล์อินพุตไม่เป็นไปตามประเภทที่คาดไว้ ผิดรูปแบบ/เสียหาย หรือมีการแจ้งว่าเป็นมัลแวร์ |
ขั้นตอนผลลัพธ์ของเครื่องมือ
แสดงทรัพยากรขั้นตอนผลลัพธ์ของเครื่องมือ
ซึ่งจะผลลัพธ์ของ TestExecution
การแสดง JSON |
---|
{ "projectId": string, "historyId": string, "executionId": string, "stepId": string } |
ช่อง | |
---|---|
projectId |
เอาต์พุตเท่านั้น โปรเจ็กต์ระบบคลาวด์ที่เป็นเจ้าของขั้นตอนผลลัพธ์ของเครื่องมือ |
historyId |
เอาต์พุตเท่านั้น รหัสประวัติผลลัพธ์ของเครื่องมือ |
executionId |
เอาต์พุตเท่านั้น รหัสการดำเนินการผลลัพธ์ของเครื่องมือ |
stepId |
เอาต์พุตเท่านั้น รหัสขั้นตอนของผลการค้นหาเครื่องมือ |
รายละเอียดการทดสอบ
รายละเอียดเพิ่มเติมเกี่ยวกับความคืบหน้าของการทดสอบที่ทำงานอยู่
การแสดง JSON |
---|
{ "progressMessages": [ string ], "errorMessage": string } |
ช่อง | |
---|---|
progressMessages[] |
เอาต์พุตเท่านั้น คำอธิบายรายละเอียดของความคืบหน้าของการทดสอบที่มนุษย์อ่านได้ เช่น "การจัดสรรอุปกรณ์" "การเริ่มต้นการทดสอบ" ในระหว่างการดำเนินการ คุณสามารถมีข้อมูลใหม่ต่อท้าย progressMessages |
errorMessage |
เอาต์พุตเท่านั้น หาก TestState เป็น ERROR สตริงนี้จะมีรายละเอียดข้อผิดพลาดที่มนุษย์อ่านได้ |
ผลลัพธ์พื้นที่เก็บข้อมูล
ตำแหน่งที่จัดเก็บผลการทดสอบ
การแสดง JSON |
---|
{ "googleCloudStorage": { object ( |
ช่อง | |
---|---|
googleCloudStorage |
ต้องระบุ |
toolResultsHistory |
ประวัติผลลัพธ์ของเครื่องมือที่มีการดำเนินการผลลัพธ์ของเครื่องมือที่มีการเขียนผลลัพธ์ถึง หากไม่ได้ระบุไว้ บริการจะเลือกค่าที่เหมาะสม |
toolResultsExecution |
เอาต์พุตเท่านั้น ผลลัพธ์ของเครื่องมือจะดำเนินการกับผลลัพธ์ที่เขียนถึง |
resultsUrl |
เอาต์พุตเท่านั้น URL ไปยังผลลัพธ์ในเว็บคอนโซล Firebase |
พื้นที่เก็บข้อมูล Google Cloud
ตำแหน่งของพื้นที่เก็บข้อมูลภายในพื้นที่เก็บข้อมูลระบบคลาวด์ของ Google (GCS)
การแสดง JSON |
---|
{ "gcsPath": string } |
ช่อง | |
---|---|
gcsPath |
ต้องระบุ เส้นทางไปยังไดเรกทอรีใน GCS ที่จะมีผลลัพธ์ของการทดสอบนี้ ผู้ใช้ที่ส่งคำขอต้องมีสิทธิ์เขียนในที่เก็บข้อมูลในเส้นทางที่ระบุ |
ประวัติผลลัพธ์เครื่องมือ
แสดงทรัพยากรประวัติผลลัพธ์ของเครื่องมือ
การแสดง JSON |
---|
{ "projectId": string, "historyId": string } |
ช่อง | |
---|---|
projectId |
ต้องระบุ โปรเจ็กต์ระบบคลาวด์ที่เป็นเจ้าของประวัติผลลัพธ์ของเครื่องมือ |
historyId |
ต้องระบุ รหัสประวัติผลลัพธ์ของเครื่องมือ |
การเรียกใช้ผลลัพธ์ของเครื่องมือ
แสดงทรัพยากรการดำเนินการผลลัพธ์ของเครื่องมือ
โดยมีผลลัพธ์ของ TestMatrix
การแสดง JSON |
---|
{ "projectId": string, "historyId": string, "executionId": string } |
ช่อง | |
---|---|
projectId |
เอาต์พุตเท่านั้น โปรเจ็กต์ระบบคลาวด์ที่เป็นเจ้าของการดำเนินการผลลัพธ์ของเครื่องมือ |
historyId |
เอาต์พุตเท่านั้น รหัสประวัติผลลัพธ์ของเครื่องมือ |
executionId |
เอาต์พุตเท่านั้น รหัสการดำเนินการผลลัพธ์ของเครื่องมือ |
รายละเอียดเมทริกซ์ไม่ถูกต้อง
เหตุผลโดยละเอียดที่เมทริกซ์ถือว่าไม่ถูกต้อง
Enum | |
---|---|
INVALID_MATRIX_DETAILS_UNSPECIFIED |
โปรดอย่าใช้ สำหรับการกำหนดเวอร์ชัน Proto เท่านั้น |
DETAILS_UNAVAILABLE |
เมทริกซ์ไม่ถูกต้อง แต่ไม่มีรายละเอียดเพิ่มเติม |
MALFORMED_APK |
ไม่สามารถแยกวิเคราะห์ APK ของแอปอินพุต |
MALFORMED_TEST_APK |
ไม่สามารถแยกวิเคราะห์ APK การทดสอบอินพุต |
NO_MANIFEST |
ไม่พบ AndroidManifest.xml |
NO_PACKAGE_NAME |
ไฟล์ Manifest ของ APK ไม่ได้ประกาศชื่อแพ็กเกจ |
INVALID_PACKAGE_NAME |
รหัสแอปพลิเคชัน APK (หรือชื่อแพ็กเกจ) ไม่ถูกต้อง โปรดดู https://developer.android.com/studio/build/application-id |
TEST_SAME_AS_APP |
แพ็กเกจทดสอบและแพ็กเกจแอปเหมือนกัน |
NO_INSTRUMENTATION |
apk การทดสอบไม่ได้ประกาศการใช้เครื่องมือ |
NO_SIGNATURE |
APK ของแอปอินพุตไม่มีลายเซ็น |
INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE |
คลาสตัวดำเนินการทดสอบที่ระบุโดยผู้ใช้หรือในไฟล์ Manifest ของ APK การทดสอบไม่สามารถใช้งานร่วมกับ Android Test Orchestrator ได้ Orchestrator ใช้งานได้กับ AndroidJUnitRunner เวอร์ชัน 1.1 ขึ้นไปเท่านั้น คุณปิดใช้ Orchestrator ได้โดยใช้ DO_NOT_USE_ORCHESTRATOR OrchestratorOption |
NO_TEST_RUNNER_CLASS |
APK การทดสอบไม่มีคลาสตัวดำเนินการทดสอบที่ระบุโดยผู้ใช้หรือในไฟล์ Manifest อาจเกิดจากหนึ่งในสาเหตุต่อไปนี้
|
NO_LAUNCHER_ACTIVITY |
ไม่พบกิจกรรมหลักของ Launcher |
FORBIDDEN_PERMISSIONS |
แอปแจ้งว่ามีสิทธิ์อย่างน้อย 1 รายการที่ไม่ได้รับอนุญาต |
INVALID_ROBO_DIRECTIVES |
มีข้อขัดแย้งใน RoboDirectives ที่ระบุ |
INVALID_RESOURCE_NAME |
มีชื่อทรัพยากรที่ไม่ถูกต้องในคำสั่ง Robo ที่ระบุ |
INVALID_DIRECTIVE_ACTION |
คำจำกัดความของการดำเนินการในคำสั่ง Robo ไม่ถูกต้อง (เช่น การคลิกหรือละเว้นการดำเนินการมีช่องข้อความป้อนข้อมูล) |
TEST_LOOP_INTENT_FILTER_NOT_FOUND |
ไม่มีตัวกรองจุดประสงค์ Test Loop หรือรายการที่กำหนดอยู่ในรูปแบบที่ไม่ถูกต้อง |
SCENARIO_LABEL_NOT_DECLARED |
คำขอมีป้ายกำกับสถานการณ์ที่ไม่ได้ประกาศในไฟล์ Manifest |
SCENARIO_LABEL_MALFORMED |
เกิดข้อผิดพลาดขณะแยกวิเคราะห์ค่าของป้ายกำกับ |
SCENARIO_NOT_DECLARED |
คำขอมีหมายเลขสถานการณ์ที่ไม่ได้ประกาศในไฟล์ Manifest |
DEVICE_ADMIN_RECEIVER |
ไม่อนุญาตให้ใช้แอปพลิเคชันผู้ดูแลระบบอุปกรณ์ |
MALFORMED_XC_TEST_ZIP |
XCTest ที่บีบอัดมีรูปแบบไม่ถูกต้อง ไฟล์ ZIP ไม่มีไฟล์ .xctestrun ไฟล์เดียวและเนื้อหาของไดเรกทอรี DerivedData/Build/Products |
BUILT_FOR_IOS_SIMULATOR |
XCTest ที่เป็นไฟล์ ZIP นั้นสร้างขึ้นสำหรับโปรแกรมจำลอง iOS แทนที่จะเป็นอุปกรณ์จริง |
NO_TESTS_IN_XC_TEST_ZIP |
ไฟล์ .xctestrun ไม่ได้ระบุเป้าหมายการทดสอบใดๆ |
USE_DESTINATION_ARTIFACTS |
เป้าหมายการทดสอบอย่างน้อย 1 รายการที่กำหนดไว้ในไฟล์ .xctestrun ระบุ "UseDestinationArtifacts" ซึ่งไม่ได้รับอนุญาต |
TEST_NOT_APP_HOSTED |
การทดสอบ XC ที่เรียกใช้ในอุปกรณ์จริงต้องมี "IsAppHostedTestBundle" == "จริง" ในไฟล์ xctestrun |
PLIST_CANNOT_BE_PARSED |
แยกวิเคราะห์ไฟล์ Info.plist ในไฟล์ ZIP ของ XCTest ไม่ได้ |
TEST_ONLY_APK |
APK มีการทำเครื่องหมายเป็น "testOnly" เลิกใช้งานแล้วและไม่ได้ใช้งานในปัจจุบัน |
MALFORMED_IPA |
แยกวิเคราะห์ IPA ของอินพุตไม่ได้ |
MISSING_URL_SCHEME |
แอปพลิเคชันไม่ลงทะเบียนรูปแบบ URL ของ Game Loop |
MALFORMED_APP_BUNDLE |
ประมวลผลชุดแอปพลิเคชัน iOS (.app) ไม่ได้ |
NO_CODE_APK |
APK ไม่มีโค้ด และดู https://developer.android.com/guide/topics/manifest/application-element.html#code |
INVALID_INPUT_APK |
เส้นทาง APK ที่ป้อนที่ระบุผิดรูปแบบ ไม่มีไฟล์ APK หรือผู้ใช้ไม่มีสิทธิ์เข้าถึงไฟล์ APK |
INVALID_APK_PREVIEW_SDK |
APK สร้างขึ้นสำหรับ SDK ตัวอย่างซึ่งระบบไม่รองรับ |
MATRIX_TOO_LARGE |
เมทริกซ์ขยายจนมีการดำเนินการมากเกินไป |
TEST_QUOTA_EXCEEDED |
มีโควต้าการทดสอบไม่เพียงพอที่จะเรียกใช้การดำเนินการในเมทริกซ์นี้ |
SERVICE_NOT_ACTIVATED |
ไม่ได้เปิดใช้งาน API บริการระบบคลาวด์ที่จำเป็น ดูที่ https://firebase.google.com/docs/test-lab/android/continuous#requirements |
UNKNOWN_PERMISSION_ERROR |
เกิดปัญหาที่ไม่รู้จักเกี่ยวกับสิทธิ์ขณะดำเนินการทดสอบ |
รายละเอียดข้อผิดพลาดเมทริกซ์
อธิบายข้อผิดพลาดเดี่ยวหรือปัญหาที่เกิดขึ้นกับเมทริกซ์
การแสดง JSON |
---|
{ "reason": string, "message": string } |
ช่อง | |
---|---|
reason |
เอาต์พุตเท่านั้น สาเหตุของข้อผิดพลาด ค่านี้เป็นค่าคงที่ใน UPPER_SNAKE_CASE ที่ระบุสาเหตุของข้อผิดพลาด |
message |
เอาต์พุตเท่านั้น ข้อความที่มนุษย์อ่านได้เกี่ยวกับข้อผิดพลาดของ TestMatrix ขยายในช่อง |
สรุปผลลัพธ์
สรุปผลลัพธ์สำหรับเมทริกซ์การทดสอบที่เสร็จสมบูรณ์
Enum | |
---|---|
OUTCOME_SUMMARY_UNSPECIFIED |
โปรดอย่าใช้ สำหรับการกำหนดเวอร์ชัน Proto เท่านั้น |
SUCCESS |
การดำเนินการทดสอบเมทริกซ์เสร็จสมบูรณ์แล้ว ตัวอย่างเช่น
|
FAILURE |
การเรียกใช้ล้มเหลว เช่น
|
INCONCLUSIVE |
เกิดข้อผิดพลาดที่ไม่คาดคิด การเรียกใช้อาจยังไม่สำเร็จ แต่นี่อาจเป็นปัญหาชั่วคราว และการทดสอบอีกครั้งอาจสำเร็จได้ |
SKIPPED |
ข้ามการทดสอบทั้งหมด เช่น
|
เมธอด |
|
---|---|
|
ยกเลิกการดำเนินการทดสอบที่ยังไม่เสร็จในเมทริกซ์ทดสอบ |
|
สร้างและเรียกใช้เมทริกซ์ของการทดสอบตามข้อกำหนดเฉพาะ |
|
ตรวจสอบสถานะของเมทริกซ์ทดสอบและการดำเนินการเมื่อสร้างเมทริกซ์ทดสอบแล้ว |