- แหล่งข้อมูล: TestMatrix
- ข้อมูลลูกค้า
- ข้อมูลลูกค้ารายละเอียด
- ข้อกำหนดการทดสอบ
- ทดสอบการตั้งค่า
- ไฟล์อุปกรณ์
- ObbFile
- ไฟล์อ้างอิง
- RegularFile
- เอพีเค
- บัญชี
- Googleออโต้
- ตัวแปรสภาพแวดล้อม
- SystraceSetup
- IosTestตั้งค่า
- ไฟล์อุปกรณ์ iOS
- การทดสอบเครื่องมือ Android
- แอพบันเดิล
- ตัวเลือกออร์เคสตรา
- ShardingOption
- เครื่องแบบชาร์ดดิ้ง
- การแบ่งส่วนด้วยตนเอง
- ทดสอบ TargetsForShard
- SmartSharding
- การทดสอบหุ่นยนต์โรโบ
- RoboDirective
- ประเภทโรโบแอคชั่น
- โรโบโหมด
- RoboStartingIntent
- LauncherActivityIntent
- StartActivityIntent
- AndroidTestLoop
- IosXcTest
- IosTestLoop
- สิ่งแวดล้อมเมทริกซ์
- ระบบปฏิบัติการ AndroidMatrix
- รายการอุปกรณ์ Android
- อุปกรณ์ Android
- รายการอุปกรณ์ iOS
- อุปกรณ์ iOS
- การทดสอบการดำเนินการ
- เศษ
- สิ่งแวดล้อม
- รัฐทดสอบ
- เครื่องมือผลลัพธ์ขั้นตอน
- รายละเอียดการทดสอบ
- การจัดเก็บผลลัพธ์
- GoogleCloudStorage
- ประวัติผลลัพธ์เครื่องมือ
- การดำเนินการผลลัพธ์ของเครื่องมือ
- รายละเอียดเมทริกซ์ไม่ถูกต้อง
- สรุปผล
- วิธีการ
แหล่งข้อมูล: TestMatrix
TestMatrix รวบรวมรายละเอียดทั้งหมดเกี่ยวกับการทดสอบ ประกอบด้วยการกำหนดค่าสภาพแวดล้อม ข้อกำหนดการทดสอบ การดำเนินการทดสอบ ตลอดจนสถานะและผลลัพธ์โดยรวม
การเป็นตัวแทน JSON |
---|
{ "testMatrixId": string, "projectId": string, "clientInfo": { object ( |
เขตข้อมูล | |
---|---|
testMatrixId | เอาท์พุทเท่านั้น รหัสเฉพาะที่กำหนดโดยบริการ |
projectId | โปรเจ็กต์ระบบคลาวด์ที่เป็นเจ้าของเมทริกซ์ทดสอบ |
clientInfo | ข้อมูลเกี่ยวกับไคลเอนต์ที่เรียกใช้การทดสอบ |
testSpecification | ที่จำเป็น. วิธีดำเนินการทดสอบ |
environmentMatrix | ที่จำเป็น. อุปกรณ์ที่กำลังดำเนินการทดสอบ |
testExecutions[] | เอาท์พุทเท่านั้น รายการการดำเนินการทดสอบที่บริการสร้างขึ้นสำหรับเมทริกซ์นี้ |
resultStorage | ที่จำเป็น. ตำแหน่งที่เขียนผลลัพธ์สำหรับเมทริกซ์ |
state | เอาท์พุทเท่านั้น ระบุความคืบหน้าปัจจุบันของเมทริกซ์ทดสอบ |
timestamp | เอาท์พุทเท่านั้น เวลาที่เมทริกซ์ทดสอบนี้ถูกสร้างขึ้นครั้งแรก การประทับเวลาในรูปแบบ RFC3339 UTC "Zulu" ที่มีความละเอียดระดับนาโนวินาทีและเศษส่วนสูงสุดเก้าหลัก ตัวอย่าง: |
invalidMatrixDetails | เอาท์พุทเท่านั้น อธิบายว่าเหตุใดเมทริกซ์จึงถือว่าไม่ถูกต้อง มีประโยชน์สำหรับเมทริกซ์ในสถานะ INVALID เท่านั้น |
flakyTestAttempts | จำนวนครั้งที่ TestExecution ควรพยายามอีกครั้ง หากกรณีทดสอบอย่างน้อย 1 กรณีล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม จำนวนการฉายซ้ำสูงสุดที่อนุญาตคือ 10 ค่าเริ่มต้นคือ 0 ซึ่งหมายถึงไม่มีการฉายซ้ำ |
outcomeSummary | เอาท์พุทเท่านั้น ผลการทดสอบโดยรวม ตั้งค่าเมื่อสถานะเมทริกซ์ทดสอบเสร็จสิ้นแล้วเท่านั้น |
failFast | หากเป็นจริง จะมีการดำเนินการสูงสุดเพียงครั้งเดียวเท่านั้นเพื่อเรียกใช้การประมวลผล/ส่วนแบ่งข้อมูลในเมทริกซ์ ความพยายามในการทดสอบที่ไม่สม่ำเสมอจะไม่ได้รับผลกระทบ โดยปกติแล้ว จะมีการพยายามดำเนินการ 2 ครั้งขึ้นไปหากตรวจพบปัญหาโครงสร้างพื้นฐานที่อาจเกิดขึ้น คุณลักษณะนี้มีไว้สำหรับปริมาณงานที่มีความละเอียดอ่อนด้านเวลาแฝง อุบัติการณ์ของความล้มเหลวในการดำเนินการอาจมากขึ้นอย่างมีนัยสำคัญสำหรับเมทริกซ์ที่เร็วเมื่อล้มเหลว และการสนับสนุนมีจำกัดมากขึ้นเนื่องจากความคาดหวังนั้น |
ข้อมูลลูกค้า
ข้อมูลเกี่ยวกับไคลเอนต์ที่เรียกใช้การทดสอบ
การเป็นตัวแทน JSON |
---|
{
"name": string,
"clientInfoDetails": [
{
object ( |
เขตข้อมูล | |
---|---|
name | ที่จำเป็น. ชื่อลูกค้า เช่น gcloud |
clientInfoDetails[] | รายการข้อมูลโดยละเอียดเกี่ยวกับลูกค้า |
ข้อมูลลูกค้ารายละเอียด
คู่คีย์-ค่าของข้อมูลโดยละเอียดเกี่ยวกับไคลเอนต์ที่เรียกใช้การทดสอบ ตัวอย่าง: {'เวอร์ชัน', '1.0'}, {'ช่องทางการเผยแพร่', 'เบต้า'}
การเป็นตัวแทน JSON |
---|
{ "key": string, "value": string } |
เขตข้อมูล | |
---|---|
key | ที่จำเป็น. กุญแจสำคัญของข้อมูลลูกค้าโดยละเอียด |
value | ที่จำเป็น. คุณค่าของข้อมูลลูกค้าโดยละเอียด |
ข้อกำหนดการทดสอบ
คำอธิบายวิธีดำเนินการทดสอบ
การเป็นตัวแทน JSON |
---|
{ "testTimeout": string, "disableVideoRecording": boolean, "disablePerformanceMetrics": boolean, // Union field |
เขตข้อมูล | |
---|---|
testTimeout | เวลาสูงสุดที่อนุญาตให้ดำเนินการทดสอบก่อนที่จะถูกยกเลิกโดยอัตโนมัติ ค่าเริ่มต้นคือ 5 นาที ระยะเวลาเป็นวินาทีโดยมีเศษส่วนไม่เกินเก้าหลัก และลงท้ายด้วย ' |
disableVideoRecording | ปิดใช้งานการบันทึกวิดีโอ อาจลดเวลาในการตอบสนองของการทดสอบ |
disablePerformanceMetrics | ปิดใช้งานการบันทึกการวัดประสิทธิภาพ อาจลดเวลาในการตอบสนองของการทดสอบ |
setup ค่าฟิลด์ยูเนี่ยน ข้อกำหนดการตั้งค่าการทดสอบ setup สามารถเป็นได้เพียงอย่างใดอย่างหนึ่งต่อไปนี้: | |
testSetup | ทดสอบข้อกำหนดการตั้งค่าสำหรับ Android เช่น ไฟล์ที่จะติดตั้ง สคริปต์บูตสแตรป |
iosTestSetup | ทดสอบข้อกำหนดการตั้งค่าสำหรับ iOS |
test ภาคสนามของสหภาพ ที่จำเป็น. ประเภทของการทดสอบที่จะรัน test สามารถเป็นได้เพียงอย่างใดอย่างหนึ่งต่อไปนี้: | |
androidInstrumentationTest | การทดสอบเครื่องมือ Android |
androidRoboTest | การทดสอบโรโบ Android |
androidTestLoop | แอปพลิเคชัน Android พร้อม Test Loop |
iosXcTest | iOS XCTest ผ่านไฟล์ .xctestrun |
iosTestLoop | แอปพลิเคชัน iOS พร้อมลูปทดสอบ |
ทดสอบการตั้งค่า
คำอธิบายวิธีตั้งค่าอุปกรณ์ Android ก่อนทำการทดสอบ
การเป็นตัวแทน JSON |
---|
{ "filesToPush": [ { object ( |
เขตข้อมูล | |
---|---|
filesToPush[] | รายการไฟล์ที่จะพุชไปที่อุปกรณ์ก่อนเริ่มการทดสอบ |
directoriesToPull[] | รายการไดเรกทอรีบนอุปกรณ์ที่จะอัปโหลดไปยัง GCS เมื่อสิ้นสุดการทดสอบ ต้องเป็นพาธสัมบูรณ์ภายใต้ /sdcard, /storage หรือ /data/local/tmp ชื่อพาธจำกัดอยู่ที่อักขระ az AZ 0-9 _ - + และ / หมายเหตุ: เส้นทาง /sdcard และ /data จะพร้อมใช้งานและถือเป็นการทดแทนเส้นทางโดยนัย เช่น หาก /sdcard บนอุปกรณ์ใดอุปกรณ์หนึ่งไม่ได้แมปกับที่จัดเก็บข้อมูลภายนอก ระบบจะแทนที่ด้วยคำนำหน้าเส้นทางที่จัดเก็บข้อมูลภายนอกสำหรับอุปกรณ์นั้น |
additionalApks[] | APK ที่จะติดตั้งเพิ่มเติมจากที่ได้รับการทดสอบโดยตรง ปัจจุบันจำกัดอยู่ที่ 100 |
account | อุปกรณ์จะเข้าสู่ระบบด้วยบัญชีนี้ตลอดระยะเวลาการทดสอบ |
networkProfile | โปรไฟล์การรับส่งข้อมูลเครือข่ายที่ใช้สำหรับเรียกใช้การทดสอบ สามารถสอบถามโปรไฟล์เครือข่ายที่พร้อมใช้งานได้โดยใช้ประเภทสภาพแวดล้อม NETWORK_CONFIGURATION เมื่อเรียก TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog |
environmentVariables[] | ตัวแปรสภาพแวดล้อมที่จะตั้งค่าสำหรับการทดสอบ (ใช้ได้กับการทดสอบเครื่องมือวัดเท่านั้น) |
systrace | การกำหนดค่า Systrace สำหรับการรัน เลิกใช้แล้ว: Systrace ใช้ Python 2 ซึ่งเลิกใช้งานในวันที่ 2020-01-01 Cloud Testing API ไม่รองรับ Systrace อีกต่อไป และจะไม่มีการระบุไฟล์ Systrace ในผลลัพธ์ |
dontAutograntPermissions | ว่าจะป้องกันการให้สิทธิ์รันไทม์ทั้งหมดเมื่อติดตั้งแอปหรือไม่ |
ไฟล์อุปกรณ์
คำอธิบายไฟล์อุปกรณ์เดียว
การเป็นตัวแทน JSON |
---|
{ // Union field |
เขตข้อมูล | |
---|---|
ยูเนี่ยนฟิลด์ device_file ที่จำเป็น. device_file สามารถเป็นได้เพียงอย่างใดอย่างหนึ่งต่อไปนี้: | |
obbFile | การอ้างอิงถึงไฟล์หยดไบนารีทึบแสง |
regularFile | การอ้างอิงถึงไฟล์ปกติ |
ObbFile
ไฟล์ Blob ไบนารี่ทึบแสงที่จะติดตั้งบนอุปกรณ์ก่อนเริ่มการทดสอบ
การเป็นตัวแทน JSON |
---|
{
"obbFileName": string,
"obb": {
object ( |
เขตข้อมูล | |
---|---|
obbFileName | ที่จำเป็น. ชื่อไฟล์ OBB จะต้องเป็นไปตามรูปแบบที่ Android กำหนด เช่น [main|patch].0300110.com.example.android.obb ซึ่งจะถูกติดตั้งลงใน <shared-storage>/Android/obb/<package-name>/ บนอุปกรณ์ |
obb | ที่จำเป็น. ไฟล์ OBB ทึบแสงเพื่อติดตั้งบนอุปกรณ์ |
ไฟล์อ้างอิง
การอ้างอิงถึงไฟล์ที่ใช้สำหรับการป้อนข้อมูลของผู้ใช้
การเป็นตัวแทน JSON |
---|
{ // Union field |
เขตข้อมูล | |
---|---|
file ฟิลด์ยูเนี่ยน . ที่จำเป็น. การอ้างอิงไฟล์. file สามารถมีได้เพียงอย่างใดอย่างหนึ่งต่อไปนี้: | |
gcsPath | เส้นทางไปยังไฟล์ใน Google Cloud Storage ตัวอย่าง: gs://build-app-1414623860166/app%40debug-unaligned.apk เส้นทางเหล่านี้คาดว่าจะมีการเข้ารหัส URL (การเข้ารหัสเป็นเปอร์เซ็นต์) |
RegularFile
ไฟล์หรือไดเร็กทอรีที่จะติดตั้งบนอุปกรณ์ก่อนเริ่มการทดสอบ
การเป็นตัวแทน JSON |
---|
{
"content": {
object ( |
เขตข้อมูล | |
---|---|
content | ที่จำเป็น. ไฟล์ต้นฉบับ |
devicePath | ที่จำเป็น. ตำแหน่งที่จะวางเนื้อหาบนอุปกรณ์ ต้องเป็นเส้นทางที่สมบูรณ์และอยู่ในรายการที่อนุญาต หากมีไฟล์อยู่ ไฟล์นั้นจะถูกแทนที่ ไดเรกทอรีฝั่งอุปกรณ์ต่อไปนี้และไดเรกทอรีย่อยใดๆ ได้รับอนุญาต: ${EXTERNAL_STORAGE}, /sdcard หรือ /storage ${ANDROID_DATA}/local/tmp หรือ /data/local/tmp การระบุเส้นทางภายนอกแผนผังไดเร็กทอรีเหล่านี้ไม่ถูกต้อง เส้นทาง /sdcard และ /data จะพร้อมใช้งานและถือเป็นการทดแทนเส้นทางโดยนัย เช่น หาก /sdcard บนอุปกรณ์ใดอุปกรณ์หนึ่งไม่ได้แมปกับที่จัดเก็บข้อมูลภายนอก ระบบจะแทนที่ด้วยคำนำหน้าเส้นทางที่จัดเก็บข้อมูลภายนอกสำหรับอุปกรณ์นั้นและคัดลอกไฟล์ไปที่นั่น ขอแนะนำอย่างยิ่งให้ใช้ Environment API ในแอปและทดสอบโค้ดเพื่อเข้าถึงไฟล์บนอุปกรณ์ด้วยวิธีพกพา |
เอพีเค
ไฟล์แพ็คเกจ Android ที่จะติดตั้ง
การเป็นตัวแทน JSON |
---|
{
"location": {
object ( |
เขตข้อมูล | |
---|---|
location | เส้นทางไปยัง APK ที่จะติดตั้งบนอุปกรณ์ก่อนเริ่มการทดสอบ |
packageName | แพ็คเกจ Java สำหรับ APK ที่จะติดตั้ง ค่าจะถูกกำหนดโดยการตรวจสอบรายการของแอปพลิเคชัน |
บัญชี
ระบุบัญชีและวิธีการเข้าสู่ระบบ
การเป็นตัวแทน JSON |
---|
{ // Union field |
เขตข้อมูล | |
---|---|
account_type ฟิลด์ยูเนี่ยน ที่จำเป็น. ประเภทบัญชี ขึ้นอยู่กับวัตถุประสงค์ (เช่น Google) และกลไกการเข้าสู่ระบบ (เช่น ชื่อผู้ใช้และรหัสผ่าน) account_type สามารถมีได้เพียงอย่างใดอย่างหนึ่งต่อไปนี้: | |
googleAuto | บัญชีเข้าสู่ระบบ Google อัตโนมัติ |
Googleออโต้
เปิดใช้งานการเข้าสู่ระบบบัญชี Google อัตโนมัติ หากตั้งค่าไว้ บริการจะสร้างบัญชีทดสอบของ Google โดยอัตโนมัติและเพิ่มลงในอุปกรณ์ก่อนดำเนินการทดสอบ โปรดทราบว่าบัญชีทดสอบอาจถูกนำมาใช้ซ้ำ แอปพลิเคชั่นจำนวนมากแสดงฟังก์ชันการทำงานทั้งหมดเมื่อมีบัญชีอยู่ในอุปกรณ์ การลงชื่อเข้าใช้อุปกรณ์ด้วยบัญชีที่สร้างขึ้นเหล่านี้ทำให้สามารถทดสอบฟังก์ชันการทำงานได้มากขึ้น
ตัวแปรสภาพแวดล้อม
คู่คีย์-ค่าที่ส่งผ่านเป็นตัวแปรสภาพแวดล้อมในการทดสอบ
การเป็นตัวแทน JSON |
---|
{ "key": string, "value": string } |
เขตข้อมูล | |
---|---|
key | คีย์สำหรับตัวแปรสภาพแวดล้อม |
value | ค่าสำหรับตัวแปรสภาพแวดล้อม |
SystraceSetup
การเป็นตัวแทน JSON |
---|
{ "durationSeconds": integer } |
เขตข้อมูล | |
---|---|
durationSeconds | ระยะเวลา Systrace เป็นวินาที ควรอยู่ระหว่าง 1 ถึง 30 วินาที 0 ปิดการใช้งานระบบ |
IosTestตั้งค่า
คำอธิบายวิธีตั้งค่าอุปกรณ์ iOS ก่อนทำการทดสอบ
การเป็นตัวแทน JSON |
---|
{ "networkProfile": string, "additionalIpas": [ { object ( |
เขตข้อมูล | |
---|---|
networkProfile | โปรไฟล์การรับส่งข้อมูลเครือข่ายที่ใช้สำหรับเรียกใช้การทดสอบ สามารถสอบถามโปรไฟล์เครือข่ายที่พร้อมใช้งานได้โดยใช้ประเภทสภาพแวดล้อม NETWORK_CONFIGURATION เมื่อเรียก TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog |
additionalIpas[] | แอพ iOS ที่จะติดตั้งเพิ่มเติมจากที่ทดสอบโดยตรง |
pushFiles[] | รายการไฟล์ที่จะพุชไปที่อุปกรณ์ก่อนเริ่มการทดสอบ |
pullDirectories[] | รายการไดเรกทอรีบนอุปกรณ์ที่จะอัปโหลดไปยัง Cloud Storage เมื่อสิ้นสุดการทดสอบ ไดเรกทอรีควรอยู่ในไดเรกทอรีที่ใช้ร่วมกัน (เช่น /private/var/mobile/Media) หรือภายในไดเรกทอรีที่สามารถเข้าถึงได้ภายในระบบไฟล์ของแอป (เช่น /Documents) โดยการระบุ ID บันเดิล |
ไฟล์อุปกรณ์ iOS
ไฟล์หรือไดเร็กทอรีที่จะติดตั้งบนอุปกรณ์ก่อนเริ่มการทดสอบ
การเป็นตัวแทน JSON |
---|
{
"content": {
object ( |
เขตข้อมูล | |
---|---|
content | ไฟล์ต้นฉบับ |
bundleId | รหัสบันเดิลของแอปที่มีไฟล์นี้อยู่ แอพ iOS แซนด์บ็อกซ์ระบบไฟล์ของตัวเอง ดังนั้นไฟล์แอพจะต้องระบุแอพที่ติดตั้งบนอุปกรณ์ |
devicePath | ตำแหน่งของไฟล์บนอุปกรณ์ ภายในระบบไฟล์แซนด์บ็อกซ์ของแอป |
การทดสอบเครื่องมือ Android
การทดสอบแอปพลิเคชัน Android ที่สามารถควบคุมส่วนประกอบ Android โดยไม่ขึ้นอยู่กับวงจรการใช้งานปกติ การทดสอบเครื่องมือ Android เรียกใช้แอปพลิเคชัน APK และทดสอบ APK ภายในกระบวนการเดียวกันบนอุปกรณ์ Android เสมือนหรือจริง นอกจากนี้ยังระบุคลาสตัวดำเนินการทดสอบ เช่น com.google.GoogleTestRunner ซึ่งอาจแตกต่างกันไปตามกรอบงานเครื่องมือเฉพาะที่เลือก
ดู https://developer.android.com/training/testing/fundamentals สำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทของการทดสอบ Android
การเป็นตัวแทน JSON |
---|
{ "testApk": { object ( |
เขตข้อมูล | |
---|---|
testApk | ที่จำเป็น. APK ที่มีโค้ดทดสอบที่จะดำเนินการ |
appPackageId | แพ็คเกจ Java สำหรับแอปพลิเคชันภายใต้การทดสอบ ค่าเริ่มต้นถูกกำหนดโดยการตรวจสอบรายการของแอปพลิเคชัน |
testPackageId | แพ็คเกจ Java สำหรับการทดสอบที่จะดำเนินการ ค่าเริ่มต้นถูกกำหนดโดยการตรวจสอบรายการของแอปพลิเคชัน |
testRunnerClass | คลาส InstrumentationTestRunner ค่าเริ่มต้นถูกกำหนดโดยการตรวจสอบรายการของแอปพลิเคชัน |
testTargets[] | แต่ละเป้าหมายต้องมีคุณสมบัติครบถ้วนด้วยชื่อแพ็กเกจหรือชื่อคลาส ในรูปแบบใดรูปแบบหนึ่งเหล่านี้:
หากว่างเปล่า เป้าหมายทั้งหมดในโมดูลจะถูกเรียกใช้ |
orchestratorOption | ตัวเลือกว่าจะรันการทดสอบแต่ละครั้งภายในการเรียกใช้เครื่องมือของตัวเองด้วย Android Test Orchestrator หรือไม่ ** Orchestrator ใช้งานได้กับ AndroidJUnitRunner เวอร์ชัน 1.1 หรือสูงกว่าเท่านั้น! ** Orchestrator มอบสิทธิประโยชน์ดังต่อไปนี้:
ดู https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Android Test Orchestrator หากไม่ได้ตั้งค่า การทดสอบจะดำเนินการโดยไม่มีออเคสตรา |
shardingOption | ตัวเลือกในการทำการทดสอบในหลายส่วนพร้อมกัน |
ฟิลด์ยูเนี่ยน app_under_test ที่จำเป็น. app_under_test สามารถเป็นได้เพียงอย่างใดอย่างหนึ่งต่อไปนี้: | |
appApk | APK สำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ |
appBundle | ชุดแอปหลาย apk สำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ |
แอพบันเดิล
รูปแบบไฟล์ Android App Bundle ที่มีไฟล์ BundleConfig.pb, ไดเร็กทอรีโมดูลฐาน, ไดเร็กทอรีโมดูลคุณลักษณะไดนามิกเป็นศูนย์หรือมากกว่า
ดู https://developer.android.com/guide/app-bundle/build สำหรับคำแนะนำในการสร้าง App Bundle
การเป็นตัวแทน JSON |
---|
{ // Union field |
เขตข้อมูล | |
---|---|
bundle สนามยูเนี่ยน ที่จำเป็น. ข้อมูลสถานที่รวมกลุ่ม bundle สามารถมีได้เพียงอย่างใดอย่างหนึ่งต่อไปนี้: | |
bundleLocation | ไฟล์ .aab แสดงถึง App Bundle ที่อยู่ระหว่างการทดสอบ |
ตัวเลือกออร์เคสตรา
ระบุวิธีดำเนินการทดสอบ
เอนัม | |
---|---|
ORCHESTRATOR_OPTION_UNSPECIFIED | ค่าเริ่มต้น: เซิร์ฟเวอร์จะเลือกโหมด ปัจจุบันบอกเป็นนัยว่าการทดสอบจะดำเนินการโดยไม่มีผู้จัดทำ ในอนาคต การทดสอบเครื่องมือวัดทั้งหมดจะดำเนินการร่วมกับผู้จัดทำ แนะนำให้ใช้ orchestrator เป็นอย่างยิ่งเนื่องจากคุณประโยชน์ทั้งหมดที่มีให้ |
USE_ORCHESTRATOR | รันการทดสอบโดยใช้ออเคสตรา ** ใช้งานได้กับ AndroidJUnitRunner เวอร์ชัน 1.1 หรือสูงกว่าเท่านั้น! ** ที่แนะนำ. |
DO_NOT_USE_ORCHESTRATOR | รันการทดสอบโดยไม่ต้องใช้ orchestrator |
ShardingOption
ตัวเลือกสำหรับการเปิดใช้งานการแบ่งส่วน
การเป็นตัวแทน JSON |
---|
{ // Union field |
เขตข้อมูล | |
---|---|
| |
uniformSharding | กรณีทดสอบชาร์ดสม่ำเสมอโดยให้มีจำนวนชาร์ดทั้งหมด |
manualSharding | กรณีทดสอบชิ้นส่วนเป็นกลุ่มของแพ็กเกจ คลาส และ/หรือเมธอดที่ระบุ |
smartSharding | การทดสอบชิ้นส่วนตามบันทึกเวลาของกรณีทดสอบก่อนหน้า |
เครื่องแบบชาร์ดดิ้ง
กรณีทดสอบชาร์ดสม่ำเสมอโดยให้มีจำนวนชาร์ดทั้งหมด
สำหรับการทดสอบเครื่องมือวัด จะมีการแปลเป็นอาร์กิวเมนต์ AndroidJUnitRunner "-e numShard" และ "-e shardIndex" เมื่อเปิดใช้งานการแบ่งกลุ่มย่อยแบบเดียวกัน การระบุอาร์กิวเมนต์การแบ่งกลุ่มย่อยอย่างใดอย่างหนึ่งเหล่านี้ผ่าน environmentVariables
ไม่ถูกต้อง
ตามกลไกการแบ่งส่วนข้อมูลที่ AndroidJUnitRunner ใช้ ไม่มีการรับประกันว่ากรณีทดสอบจะมีการกระจายอย่างสม่ำเสมอทั่วทั้งส่วนย่อยทั้งหมด
การเป็นตัวแทน JSON |
---|
{ "numShards": integer } |
เขตข้อมูล | |
---|---|
numShards | ที่จำเป็น. จำนวนชาร์ดทั้งหมดที่จะสร้าง ซึ่งต้องเป็นจำนวนบวกซึ่งไม่เกินจำนวนกรณีทดสอบทั้งหมดเสมอ เมื่อคุณเลือกอุปกรณ์ทางกายภาพตั้งแต่หนึ่งเครื่องขึ้นไป จำนวนชาร์ดจะต้องเท่ากับ <= 50 เมื่อคุณเลือกอุปกรณ์เสมือน ARM หนึ่งเครื่องขึ้นไป จะต้องเท่ากับ <= 200 เมื่อคุณเลือกเฉพาะอุปกรณ์เสมือน x86 เท่านั้น จะต้องเท่ากับ <= 500 . |
การแบ่งส่วนด้วยตนเอง
กรณีทดสอบชิ้นส่วนเป็นกลุ่มของแพ็กเกจ คลาส และ/หรือเมธอดที่ระบุ
เมื่อเปิดใช้งานการแบ่งส่วนข้อมูลด้วยตนเอง การระบุเป้าหมายการทดสอบผ่านตัวแปรสภาพแวดล้อมหรือใน InstrumentationTest จะไม่ถูกต้อง
การเป็นตัวแทน JSON |
---|
{
"testTargetsForShard": [
{
object ( |
เขตข้อมูล | |
---|---|
testTargetsForShard[] | ที่จำเป็น. กลุ่มของแพ็กเกจ คลาส และ/หรือวิธีทดสอบที่จะเรียกใช้สำหรับชาร์ดแต่ละส่วนที่สร้างขึ้นด้วยตนเอง คุณต้องระบุอย่างน้อยหนึ่งส่วนข้อมูลหากมีช่องนี้ เมื่อคุณเลือกอุปกรณ์ทางกายภาพตั้งแต่หนึ่งเครื่องขึ้นไป จำนวน testTargetsForShard ซ้ำจะต้องเป็น <= 50 เมื่อคุณเลือกอุปกรณ์เสมือน ARM หนึ่งเครื่องขึ้นไป จะต้องเป็น <= 200 เมื่อคุณเลือกเฉพาะอุปกรณ์เสมือน x86 เท่านั้น อุปกรณ์นั้นจะต้องเป็น <= 500. |
ทดสอบ TargetsForShard
ทดสอบเป้าหมายสำหรับชิ้นส่วน
การเป็นตัวแทน JSON |
---|
{ "testTargets": [ string ] } |
เขตข้อมูล | |
---|---|
testTargets[] | กลุ่มของแพ็คเกจ คลาส และ/หรือวิธีทดสอบที่จะรันสำหรับแต่ละชาร์ด ต้องระบุเป้าหมายในรูปแบบอาร์กิวเมนต์ AndroidJUnitRunner ตัวอย่างเช่น "แพ็คเกจ com.my.packages" "class com.my.package.MyClass" จำนวนเป้าหมายการทดสอบต้องมากกว่า 0 |
SmartSharding
การทดสอบชิ้นส่วนตามบันทึกเวลาของกรณีทดสอบก่อนหน้า
การเป็นตัวแทน JSON |
---|
{ "targetedShardDuration": string } |
เขตข้อมูล | |
---|---|
targetedShardDuration | ระยะเวลาในการทดสอบภายในชิ้นส่วนที่ควรทำ ค่าเริ่มต้น: 300 วินาที (5 นาที) ขั้นต่ำที่อนุญาต: 120 วินาที (2 นาที) จำนวนชาร์ดจะถูกตั้งค่าแบบไดนามิกตามเวลา จนถึงขีดจำกัดสูงสุดของชาร์ด (อธิบายไว้ด้านล่าง) เพื่อรับประกันกรณีทดสอบอย่างน้อยหนึ่งกรณีสำหรับแต่ละชิ้นส่วน จำนวนชิ้นส่วนจะต้องไม่เกินจำนวนกรณีทดสอบ ระยะเวลาของชิ้นส่วนจะเกินหาก:
ไม่รับประกันระยะเวลาของชาร์ดดิ้งเนื่องจากสมาร์ทชาร์ดดิ้งใช้ประวัติกรณีทดสอบและระยะเวลาเริ่มต้นซึ่งอาจไม่ถูกต้อง กฎในการค้นหาบันทึกเวลาของกรณีทดสอบคือ:
เนื่องจากระยะเวลาส่วนแบ่งข้อมูลจริงอาจเกินระยะเวลาส่วนแบ่งข้อมูลเป้าหมายได้ เราขอแนะนำให้คุณตั้งค่าเป้าหมายให้น้อยกว่าการหมดเวลาทดสอบสูงสุดที่อนุญาตอย่างน้อย 5 นาที (45 นาทีสำหรับอุปกรณ์จริงและ 60 นาทีสำหรับเสมือน) หรือคุณใช้แบบกำหนดเอง ทดสอบค่าการหมดเวลาที่คุณตั้งไว้ วิธีการนี้จะหลีกเลี่ยงการยกเลิกชาร์ดก่อนที่การทดสอบทั้งหมดจะเสร็จสิ้น โปรดทราบว่ามีการจำกัดจำนวนชาร์ดสูงสุด เมื่อคุณเลือกอุปกรณ์ทางกายภาพตั้งแต่หนึ่งเครื่องขึ้นไป จำนวนชาร์ดจะต้องเท่ากับ <= 50 เมื่อคุณเลือกอุปกรณ์เสมือน ARM หนึ่งเครื่องขึ้นไป จะต้องเท่ากับ <= 200 เมื่อคุณเลือกเฉพาะอุปกรณ์เสมือน x86 เท่านั้น จะต้องเท่ากับ <= 500 เพื่อรับประกันกรณีทดสอบอย่างน้อยหนึ่งกรณีต่อชาร์ด จำนวนชาร์ดจะต้องไม่เกินจำนวนกรณีทดสอบ แต่ละชาร์ดที่สร้างขึ้นจะนับรวมในโควต้าการทดสอบรายวัน ระยะเวลาเป็นวินาทีโดยมีเศษส่วนไม่เกินเก้าหลัก และลงท้ายด้วย ' |
การทดสอบหุ่นยนต์โรโบ
การทดสอบแอปพลิเคชัน Android ที่สำรวจแอปพลิเคชันบนอุปกรณ์ Android เสมือนหรือจริง ค้นหาผู้กระทำผิดและข้อขัดข้องในขณะนั้น
การเป็นตัวแทน JSON |
---|
{ "appPackageId": string, "appInitialActivity": string, "maxDepth": integer, "maxSteps": integer, "roboDirectives": [ { object ( |
เขตข้อมูล | |
---|---|
appPackageId | แพ็คเกจ Java สำหรับแอปพลิเคชันภายใต้การทดสอบ ค่าเริ่มต้นถูกกำหนดโดยการตรวจสอบรายการของแอปพลิเคชัน |
appInitialActivity | กิจกรรมเริ่มต้นที่ควรใช้ในการเริ่มแอป |
maxDepth | ความลึกสูงสุดของกองการสำรวจที่ Robo สามารถสำรวจได้ ต้องมีอย่างน้อย 2 ตัวเพื่อให้ Robo สำรวจแอปได้นอกเหนือจากกิจกรรมแรก ค่าเริ่มต้นคือ 50 |
maxSteps | จำนวนขั้นตอนสูงสุดที่ Robo สามารถดำเนินการได้ ค่าเริ่มต้นไม่มีขีดจำกัด |
roboDirectives[] | ชุดคำสั่งที่ Robo ควรใช้ระหว่างการรวบรวมข้อมูล ซึ่งจะทำให้ผู้ใช้สามารถปรับแต่งการรวบรวมข้อมูลได้ ตัวอย่างเช่น สามารถระบุชื่อผู้ใช้และรหัสผ่านสำหรับบัญชีทดสอบได้ |
roboMode | โหมดที่ Robo ควรทำงาน ไคลเอนต์ส่วนใหญ่ควรอนุญาตให้เซิร์ฟเวอร์เติมฟิลด์นี้โดยอัตโนมัติ |
roboScript | ไฟล์ JSON ที่มีลำดับการดำเนินการ Robo ควรทำหน้าที่เป็นบทนำสำหรับการรวบรวมข้อมูล |
startingIntents[] | Intent ที่ใช้ในการเปิดแอปสำหรับการรวบรวมข้อมูล หากไม่มีการระบุ กิจกรรมตัวเรียกใช้งานหลักจะถูกเปิดใช้งาน หากมีการระบุบางส่วนไว้ จะมีการเปิดตัวเฉพาะกิจกรรมที่ให้ไว้เท่านั้น (ต้องระบุกิจกรรมตัวเรียกใช้งานหลักอย่างชัดเจน) |
ฟิลด์ยูเนี่ยน app_under_test ที่จำเป็น. app_under_test สามารถเป็นได้เพียงอย่างใดอย่างหนึ่งต่อไปนี้: | |
appApk | APK สำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ |
appBundle | ชุดแอปหลาย apk สำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ |
RoboDirective
สั่งให้ Robo โต้ตอบกับองค์ประกอบ UI ที่เฉพาะเจาะจง หากพบในระหว่างการรวบรวมข้อมูล ปัจจุบัน 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 ถูกส่งไปตั้งค่า หากเว้นว่างไว้ คำสั่งจะถือเป็นการคลิกบนองค์ประกอบที่ตรงกับชื่อทรัพยากร |
actionType | ที่จำเป็น. ประเภทของการกระทำที่ Robo ควรทำกับองค์ประกอบที่ระบุ |
ประเภทโรโบแอคชั่น
การดำเนินการที่ Robo สามารถทำได้บนองค์ประกอบ UI
เอนัม | |
---|---|
ACTION_TYPE_UNSPECIFIED | ไม่ได้ใช้. สำหรับเวอร์ชันโปรโตเท่านั้น |
SINGLE_CLICK | สั่งให้ Robo คลิกที่องค์ประกอบที่ระบุ No-op หากองค์ประกอบที่ระบุไม่สามารถคลิกได้ |
ENTER_TEXT | สั่ง Robo ให้ป้อนข้อความในองค์ประกอบที่ระบุ No-op หากไม่ได้เปิดใช้งานองค์ประกอบที่ระบุหรือไม่อนุญาตให้ป้อนข้อความ |
IGNORE | สั่ง Robo ให้ละเว้นการโต้ตอบกับองค์ประกอบเฉพาะ |
โรโบโหมด
โหมดที่ Robo ควรทำงาน
เอนัม | |
---|---|
ROBO_MODE_UNSPECIFIED | ซึ่งหมายความว่าเซิร์ฟเวอร์ควรเลือกโหมด ที่แนะนำ. |
ROBO_VERSION_1 | รัน Robo ในโหมด UIAutomator เท่านั้น โดยที่แอปไม่ลาออก |
ROBO_VERSION_2 | รัน Robo ใน Espresso มาตรฐานพร้อม UIAutomator ทางเลือก |
RoboStartingIntent
ข้อความสำหรับระบุกิจกรรมเริ่มต้นที่จะรวบรวมข้อมูล
การเป็นตัวแทน JSON |
---|
{ "timeout": string, // Union field |
เขตข้อมูล | |
---|---|
timeout | หมดเวลาเป็นวินาทีสำหรับแต่ละ Intent ระยะเวลาเป็นวินาทีโดยมีเศษส่วนไม่เกินเก้าหลัก และลงท้ายด้วย ' |
ฟิลด์ยูเนี่ starting_intent ที่จำเป็น. รายละเอียดความตั้งใจในการเริ่มกิจกรรม starting_intent สามารถมีได้เพียงอย่างใดอย่างหนึ่งต่อไปนี้: | |
launcherActivity | เจตนาที่เริ่มต้นกิจกรรมตัวเรียกใช้งานหลัก |
startActivity | เจตนาที่เริ่มกิจกรรมโดยมีรายละเอียดเฉพาะเจาะจง |
LauncherActivityIntent
ระบุเจตนาที่เริ่มต้นกิจกรรมตัวเรียกใช้งานหลัก
StartActivityIntent
ความตั้งใจเริ่มต้นที่ระบุโดยการกระทำ uri และหมวดหมู่
การเป็นตัวแทน JSON |
---|
{ "action": string, "uri": string, "categories": [ string ] } |
เขตข้อมูล | |
---|---|
action | ชื่อการดำเนินการ จำเป็นสำหรับ START_ACTIVITY |
uri | URI สำหรับการดำเนินการ |
categories[] | หมวดหมู่เจตนาที่จะกำหนดตามเจตนา |
AndroidTestLoop
การทดสอบแอปพลิเคชัน Android ด้วย Test Loop เจตนา <intent-name> จะถูกเพิ่มโดยปริยาย เนื่องจาก Games เป็นผู้ใช้ API นี้เพียงรายเดียวในขณะนี้
การเป็นตัวแทน JSON |
---|
{ "appPackageId": string, "scenarios": [ integer ], "scenarioLabels": [ string ], // Union field |
เขตข้อมูล | |
---|---|
appPackageId | แพ็คเกจ Java สำหรับแอปพลิเคชันภายใต้การทดสอบ ค่าเริ่มต้นถูกกำหนดโดยการตรวจสอบรายการของแอปพลิเคชัน |
scenarios[] | รายการสถานการณ์ที่ควรรันระหว่างการทดสอบ ค่าเริ่มต้นคือลูปทดสอบทั้งหมด ซึ่งได้มาจากรายการของแอปพลิเคชัน |
scenarioLabels[] | รายการป้ายกำกับสถานการณ์ที่ควรเรียกใช้ระหว่างการทดสอบ ป้ายกำกับสถานการณ์ควรแมปกับป้ายกำกับที่กำหนดไว้ในรายการของแอปพลิเคชัน ตัวอย่างเช่น 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 | ชุดแอปหลาย apk สำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ |
IosXcTest
การทดสอบแอปพลิเคชัน 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 | ตัวเลือกในการทดสอบการให้สิทธิ์แอปพิเศษ การตั้งค่านี้จะลงนามแอปอีกครั้งโดยมีสิทธิ์พิเศษพร้อมตัวระบุแอปพลิเคชันที่ชัดเจน ปัจจุบันรองรับการทดสอบการให้สิทธิ์สภาพแวดล้อม aps |
IosTestLoop
การทดสอบแอปพลิเคชัน iOS ที่ใช้สถานการณ์ Game Loop ตั้งแต่หนึ่งสถานการณ์ขึ้นไป ประเภทการทดสอบนี้ยอมรับแอปพลิเคชันที่เก็บถาวร (ไฟล์ .ipa) และรายการสถานการณ์จำนวนเต็มที่จะดำเนินการในแอปตามลำดับ
การเป็นตัวแทน JSON |
---|
{
"appIpa": {
object ( |
เขตข้อมูล | |
---|---|
appIpa | ที่จำเป็น. .ipa ของแอปพลิเคชันที่จะทดสอบ |
scenarios[] | รายการสถานการณ์ที่ควรรันระหว่างการทดสอบ ค่าเริ่มต้นเป็นสถานการณ์เดียว 0 หากไม่ได้ระบุไว้ |
appBundleId | เอาท์พุทเท่านั้น รหัสบันเดิลสำหรับแอปพลิเคชันที่อยู่ระหว่างการทดสอบ |
สิ่งแวดล้อมเมทริกซ์
เมทริกซ์ของสภาพแวดล้อมที่จะทำการทดสอบ
การเป็นตัวแทน JSON |
---|
{ // Union field |
เขตข้อมูล | |
---|---|
สภาพ environment_matrix ฟิลด์ยูเนี่ยน _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 |
อุปกรณ์ Android
อุปกรณ์ Android เครื่องเดียว
การเป็นตัวแทน JSON |
---|
{ "androidModelId": string, "androidVersionId": string, "locale": string, "orientation": string } |
เขตข้อมูล | |
---|---|
androidModelId | ที่จำเป็น. รหัสของอุปกรณ์ Android ที่จะใช้ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ |
androidVersionId | ที่จำเป็น. รหัสของเวอร์ชันระบบปฏิบัติการ Android ที่จะใช้ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ |
locale | ที่จำเป็น. ตำแหน่งที่อุปกรณ์ทดสอบใช้สำหรับการทดสอบ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ |
orientation | ที่จำเป็น. วิธีการวางแนวอุปกรณ์ในระหว่างการทดสอบ ใช้ TestEnvironmentDiscoveryService เพื่อรับตัวเลือกที่รองรับ |
รายการอุปกรณ์ iOS
รายการการกำหนดค่าอุปกรณ์ iOS ที่จะทำการทดสอบ
การเป็นตัวแทน JSON |
---|
{
"iosDevices": [
{
object ( |
เขตข้อมูล | |
---|---|
iosDevices[] | ที่จำเป็น. รายการอุปกรณ์ iOS |
อุปกรณ์ iOS
อุปกรณ์ iOS เครื่องเดียว
การเป็นตัวแทน JSON |
---|
{ "iosModelId": string, "iosVersionId": string, "locale": string, "orientation": string } |
เขตข้อมูล | |
---|---|
iosModelId | ที่จำเป็น. ID ของอุปกรณ์ 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 | เอาท์พุทเท่านั้น ระบุความคืบหน้าปัจจุบันของการดำเนินการทดสอบ (เช่น เสร็จสิ้น) |
toolResultsStep | เอาท์พุทเท่านั้น โดยที่ผลลัพธ์สำหรับการดำเนินการนี้ถูกเขียน |
timestamp | เอาท์พุทเท่านั้น เวลาที่เริ่มสร้างการดำเนินการทดสอบนี้ การประทับเวลาในรูปแบบ RFC3339 UTC "Zulu" ที่มีความละเอียดระดับนาโนวินาทีและเศษส่วนสูงสุดเก้าหลัก ตัวอย่าง: |
testDetails | เอาท์พุทเท่านั้น รายละเอียดเพิ่มเติมเกี่ยวกับการทดสอบการวิ่ง |
เศษ
เอาท์พุทเท่านั้น รายละเอียดเกี่ยวกับเศษ
การเป็นตัวแทน JSON |
---|
{
"shardIndex": integer,
"numShards": integer,
"testTargetsForShard": {
object ( |
เขตข้อมูล | |
---|---|
shardIndex | เอาท์พุทเท่านั้น ดัชนีของชาร์ดในบรรดาชาร์ดทั้งหมด |
numShards | เอาท์พุทเท่านั้น จำนวนชาร์ดทั้งหมด |
testTargetsForShard | เอาท์พุทเท่านั้น ทดสอบเป้าหมายสำหรับแต่ละส่วน ตั้งค่าไว้สำหรับการแบ่งส่วนด้วยตนเองเท่านั้น |
estimatedShardDuration | เอาท์พุทเท่านั้น ระยะเวลาส่วนแบ่งข้อมูลโดยประมาณโดยอิงตามบันทึกเวลาของกรณีทดสอบก่อนหน้า หากมี ระยะเวลาเป็นวินาทีโดยมีเศษส่วนไม่เกินเก้าหลัก และลงท้ายด้วย ' |
สิ่งแวดล้อม
สภาพแวดล้อมที่รันการทดสอบ
การเป็นตัวแทน JSON |
---|
{ // Union field |
เขตข้อมูล | |
---|---|
environment สนามยูเนี่ยน ที่จำเป็น. สิ่งแวดล้อม. environment สามารถเป็นได้เพียงอย่างใดอย่างหนึ่งต่อไปนี้: | |
androidDevice | อุปกรณ์ Android ที่ต้องใช้กับการทดสอบ Android |
iosDevice | อุปกรณ์ iOS ที่ต้องใช้ร่วมกับการทดสอบ iOS |
รัฐทดสอบ
สถานะ (เช่น ความคืบหน้า) ของการดำเนินการทดสอบหรือเมทริกซ์
เอนัม | |
---|---|
TEST_STATE_UNSPECIFIED | ไม่ได้ใช้. สำหรับเวอร์ชันโปรโตเท่านั้น |
VALIDATING | กำลังตรวจสอบการดำเนินการหรือเมทริกซ์ |
PENDING | การดำเนินการหรือเมทริกซ์กำลังรอให้ทรัพยากรพร้อมใช้งาน |
RUNNING | ขณะนี้กำลังดำเนินการดำเนินการ สามารถตั้งค่าได้เฉพาะในการดำเนินการเท่านั้น |
FINISHED | การดำเนินการหรือเมทริกซ์สิ้นสุดลงตามปกติ บนเมทริกซ์หมายความว่าการประมวลผลระดับเมทริกซ์เสร็จสมบูรณ์ตามปกติ แต่การดำเนินการแต่ละรายการอาจอยู่ในสถานะข้อผิดพลาด |
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[] | เอาท์พุทเท่านั้น คำอธิบายโดยละเอียดที่มนุษย์สามารถอ่านได้เกี่ยวกับความคืบหน้าของการทดสอบ ตัวอย่างเช่น: "การจัดเตรียมอุปกรณ์", "เริ่มการทดสอบ" ในระหว่างการดำเนินการข้อมูลใหม่อาจถูกผนวกเข้ากับส่วนท้ายของความคืบหน้าข้อความ |
errorMessage | เอาท์พุทเท่านั้น หาก TestState เป็น ERROR สตริงนี้จะมีรายละเอียดที่มนุษย์สามารถอ่านได้เกี่ยวกับข้อผิดพลาด |
การจัดเก็บผลลัพธ์
สถานที่จัดเก็บผลการทดสอบ
การเป็นตัวแทน JSON |
---|
{ "googleCloudStorage": { object ( |
เขตข้อมูล | |
---|---|
googleCloudStorage | ที่จำเป็น. |
toolResultsHistory | ประวัติผลลัพธ์ของเครื่องมือที่มีการดำเนินการผลลัพธ์ของเครื่องมือที่เขียนผลลัพธ์ไว้ หากไม่มีการให้บริการจะเลือกค่าที่เหมาะสม |
toolResultsExecution | เอาท์พุทเท่านั้น เครื่องมือดำเนินการผลลัพธ์ที่เขียนผลลัพธ์ไว้ |
resultsUrl | เอาท์พุทเท่านั้น URL ไปยังผลลัพธ์ใน Firebase Web Console |
GoogleCloudStorage
ที่เก็บข้อมูลภายในที่เก็บข้อมูลบนคลาวด์ของ 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 | เอาท์พุทเท่านั้น รหัสการดำเนินการผลลัพธ์ของเครื่องมือ |
รายละเอียดเมทริกซ์ไม่ถูกต้อง
เหตุผลโดยละเอียดที่ทำให้เมทริกซ์ถือว่าไม่ถูกต้อง
เอนัม | |
---|---|
INVALID_MATRIX_DETAILS_UNSPECIFIED | ไม่ได้ใช้. สำหรับเวอร์ชันโปรโตเท่านั้น |
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/build/configure-app-module#set-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 | ไม่พบกิจกรรมตัวเรียกใช้งานหลัก |
FORBIDDEN_PERMISSIONS | แอปประกาศสิทธิ์อย่างน้อยหนึ่งรายการที่ไม่ได้รับอนุญาต |
INVALID_ROBO_DIRECTIVES | มีข้อขัดแย้งใน roboDirectives ที่ให้ไว้ |
INVALID_RESOURCE_NAME | มีชื่อทรัพยากรที่ไม่ถูกต้องอย่างน้อยหนึ่งชื่อในคำสั่ง robo ที่ให้ไว้ |
INVALID_DIRECTIVE_ACTION | คำจำกัดความของการกระทำที่ไม่ถูกต้องในคำสั่ง robo (เช่น การคลิกหรือการละเว้นรวมถึงช่องข้อความที่ป้อน) |
TEST_LOOP_INTENT_FILTER_NOT_FOUND | ไม่มีตัวกรอง Intent ของ Test Loop หรือตัวกรองที่ให้มามีรูปแบบไม่ถูกต้อง |
SCENARIO_LABEL_NOT_DECLARED | คำขอมีป้ายกำกับสถานการณ์ที่ไม่ได้ประกาศไว้ในรายการ |
SCENARIO_LABEL_MALFORMED | เกิดข้อผิดพลาดขณะแยกวิเคราะห์ค่าของป้ายกำกับ |
SCENARIO_NOT_DECLARED | คำขอประกอบด้วยหมายเลขสถานการณ์ที่ไม่ได้ประกาศไว้ในรายการ |
DEVICE_ADMIN_RECEIVER | ไม่อนุญาตให้ใช้แอปพลิเคชันผู้ดูแลระบบอุปกรณ์ |
MALFORMED_XC_TEST_ZIP | XCTest ที่บีบอัดมีรูปแบบไม่ถูกต้อง zip ไม่มีไฟล์ .xctestrun ไฟล์เดียวและเนื้อหาของไดเร็กทอรี DerivedData/Build/Products |
BUILT_FOR_IOS_SIMULATOR | XCTest แบบซิปถูกสร้างขึ้นสำหรับเครื่องจำลอง iOS แทนที่จะเป็นอุปกรณ์ทางกายภาพ |
NO_TESTS_IN_XC_TEST_ZIP | ไฟล์ .xctestrun ไม่ได้ระบุเป้าหมายการทดสอบใดๆ |
USE_DESTINATION_ARTIFACTS | เป้าหมายการทดสอบอย่างน้อยหนึ่งรายการที่กำหนดไว้ในไฟล์ .xctestrun ระบุ "UseDestinationArtifacts" ซึ่งไม่ได้รับอนุญาต |
TEST_NOT_APP_HOSTED | การทดสอบ XC ที่ทำงานบนอุปกรณ์จริงต้องมี "IsAppHostedTestBundle" == "true" ในไฟล์ 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 | มีปัญหาการอนุญาตที่ไม่ทราบสาเหตุในการทดสอบนี้ |
สรุปผล
สรุปผลลัพธ์สำหรับเมทริกซ์ทดสอบที่เสร็จสิ้นแล้ว
เอนัม | |
---|---|
OUTCOME_SUMMARY_UNSPECIFIED | ไม่ได้ใช้. สำหรับเวอร์ชันโปรโตเท่านั้น |
SUCCESS | การทดสอบเมทริกซ์รันสำเร็จ เช่น:
|
FAILURE | การรันล้มเหลว เช่น:
|
INCONCLUSIVE | มีบางอย่างที่ไม่คาดคิดเกิดขึ้น การรันควรถือว่าไม่สำเร็จ แต่นี่อาจเป็นปัญหาชั่วคราว และการรันการทดสอบซ้ำอาจสำเร็จ |
SKIPPED | การทดสอบทั้งหมดถูกข้ามไป เช่น:
|
วิธีการ | |
---|---|
| ยกเลิกการดำเนินการทดสอบที่ยังไม่เสร็จสิ้นในเมทริกซ์ทดสอบ |
| สร้างและรันเมทริกซ์การทดสอบตามข้อกำหนดที่กำหนด |
| ตรวจสอบสถานะของเมทริกซ์ทดสอบและการดำเนินการเมื่อสร้างขึ้น |