คู่มือนี้อธิบายวิธีเรียกใช้การทดสอบเครื่องมือ Robo หรือ Game Loop โดยใช้ gcloud CLI
สำหรับรายการคำสั่ง gcloud
ทั้งหมดที่คุณสามารถใช้กับแอป Android ของคุณใน Test Lab โปรดไปที่ เอกสารอ้างอิงสำหรับ gcloud firebase test android
ก่อนที่คุณจะเริ่มต้น
หากคุณยังไม่ได้ ดำเนินการ ให้เพิ่ม Firebase ในโครงการ Android ของคุณ
ขั้นตอนที่ 1 ตั้งค่า gcloud CLI
- ดาวน์โหลด Google Cloud SDK
- ตรวจสอบให้แน่ใจว่าการติดตั้งของคุณเป็นปัจจุบัน:
gcloud components update
- ลงชื่อเข้าใช้ gcloud CLI โดยใช้บัญชี Google ของคุณ:
gcloud auth login
- ตั้งค่าโครงการ Firebase ของคุณใน gcloud โดยที่ PROJECT_ID คือ ID ของโครงการ Firebase ของคุณ:
gcloud config set project PROJECT_ID
ซึ่งรวมถึงเครื่องมือ gcloud CLI
ขั้นตอนที่ 2 ตรวจสอบอุปกรณ์ทดสอบที่มีอยู่
ใช้คำสั่ง gcloud ต่อไปนี้เพื่อดูอุปกรณ์ทดสอบและภาษาที่พร้อมใช้งานสำหรับการทดสอบของคุณ
คุณสามารถดาวน์โหลด แอป Notepad ตัวอย่างเพื่อเริ่มเรียกใช้คำสั่งได้ทันที ใช้ไฟล์ไบนารี app-debug-unaligned.apk
และไฟล์การทดสอบเครื่องมือ app-debug-test-unaligned.apk
ซึ่งอยู่ใน NotePad/app/build/outputs/apk/
models list
: รับรายการปัจจุบันของอุปกรณ์ Android ที่คุณสามารถทดสอบได้gcloud firebase test android models list
ในเอาต์พุตคำสั่ง:
- คอลัมน์
MODEL_ID
มีตัวระบุที่คุณสามารถใช้เรียกใช้การทดสอบรุ่นอุปกรณ์ในภายหลังได้ - คอลัมน์
OS_VERSION_ID
มีเวอร์ชันของระบบปฏิบัติการที่อุปกรณ์รองรับ
ตัวอย่างเอาต์พุต
- คอลัมน์
models describe
: รับข้อมูลเพิ่มเติมเกี่ยวกับ AndroidMODEL_ID
ที่เฉพาะเจาะจงgcloud firebase test android models describe MODEL_ID
เอาต์พุตประกอบด้วยยี่ห้อรุ่นของอุปกรณ์ ผู้ผลิต เวอร์ชันของระบบปฏิบัติการ ระดับ API ที่รองรับ Application Binary Interfaces (ABI) ที่รองรับ วันที่วางจำหน่าย และอุปกรณ์นั้นเป็นอุปกรณ์จริงหรือเสมือน
versions list
: รับรายการเวอร์ชันของระบบปฏิบัติการที่มีอยู่ในปัจจุบันเพื่อทดสอบgcloud firebase test android versions list
คุณสามารถใช้ตัวระบุจากสองคอลัมน์แรกของเอาต์พุตคำสั่ง (
OS_VERSION_ID
และVERSION
) เพื่อเรียกใช้การทดสอบกับเวอร์ชันของระบบปฏิบัติการ Android ในภายหลัง หากคุณไม่ระบุเวอร์ชันของระบบปฏิบัติการ Android ที่จะทดสอบ ระบบจะใช้ค่าเริ่มต้นที่ระบุไว้ในคอลัมน์TAGS
ตัวอย่างเอาต์พุต
locales list
: รับรายการโลแคลปัจจุบันที่มีให้ทดสอบgcloud firebase test android versions list
คอลัมน์แรกของเอาต์พุตคำสั่ง
LOCALE
มีตัวระบุที่คุณสามารถใช้ในภายหลังเพื่อรันการทดสอบกับโลแคล หากคุณไม่ระบุภาษาที่จะทดสอบ ภาษาอังกฤษจะถูกใช้เป็นภาษาเริ่มต้น
ขั้นตอนที่ 3 เรียกใช้การทดสอบของคุณ
ตอนนี้คุณทราบช่วงของรุ่นอุปกรณ์ ตำแหน่งที่ตั้ง และเวอร์ชันระบบปฏิบัติการที่พร้อมสำหรับการทดสอบแอปของคุณแล้ว คุณสามารถระบุอุปกรณ์โดยใช้คำสั่งเรียกใช้ gcloud firebase test android run
และแฟล็ก --device
เพื่อเรียกใช้การทดสอบ Robo หรือเครื่องมือวัด
เรียกใช้การทดสอบ Robo
แม้ว่าคุณจะไม่มีการทดสอบเครื่องมือ แต่คุณก็ยังสามารถมองหาจุดบกพร่องในแอปของคุณได้ ใช้การทดสอบ Robo เพื่อทำการตรวจสอบอินเทอร์เฟซผู้ใช้ของแอปโดยอัตโนมัติ การทดสอบ Robo ทดสอบแอปโดยทำการวิเคราะห์แบบคงที่ของเส้นทางต่างๆ ผ่านอินเทอร์เฟซผู้ใช้ของแอป จากนั้นรวบรวมข้อมูลผ่านแอปเพื่อค้นหาข้อขัดข้องและปัญหาอื่นๆ ที่อาจเกิดขึ้น
ในการรันการทดสอบ Robo ให้รันคำสั่งตัวอย่างต่อไปนี้:
gcloud firebase test android run \ --type robo \ --app app-debug-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape \ --timeout 90s \ --client-details matrixLabel="Example matrix label"
- พารามิเตอร์
--type robo
เป็นนัยหากไม่มีการระบุค่า--type
- เพื่อช่วยคุณระบุและค้นหาเมทริกซ์ทดสอบของคุณในคอนโซล Firebase คุณสามารถใช้แฟล็กตัวเลือก
--client-details matrixLabel="Example matrix label"
เพื่อติดป้ายกำกับเมทริกซ์ทดสอบของคุณ - คุณสามารถดูชุดตัวเลือกบรรทัดคำสั่งทั้งหมดสำหรับการเรียกใช้การทดสอบโดยพิมพ์:
gcloud help firebase test android run
ทางเลือกอื่นในการระบุอาร์กิวเมนต์เหล่านี้ในบรรทัดคำสั่ง คุณสามารถเลือกระบุอาร์กิวเมนต์ของคุณในไฟล์อาร์กิวเมนต์รูปแบบ YAML เรียกใช้ gcloud topic arg-files
เพื่อเรียนรู้วิธีใช้คุณลักษณะนี้
หากต้องการเรียนรู้วิธีตรวจสอบผลการทดสอบจากการทดสอบ Robo โปรดดู วิเคราะห์ผลการทดสอบของคุณ
เรียกใช้การทดสอบเครื่องมือ
ตอนนี้ใช้เครื่องมือบรรทัดคำสั่ง gcloud
เพื่อเรียกใช้การทดสอบ Espresso ของแอป Notepad ในการกำหนดค่าอุปกรณ์ Android ที่คุณระบุ ใช้ประเภทการทดสอบ instrumentation
เพื่อรันการทดสอบใน app-debug-test-unaligned.apk
ดังนี้:
gcloud firebase test android run \ --type instrumentation \ --app app-debug-unaligned.apk \ --test app-debug-test-unaligned.apk \ --device model=Nexus6,version=21,locale=en,orientation=portrait \ --device model=Nexus7,version=19,locale=fr,orientation=landscape --client-details matrixLabel="Example matrix label"
-
--type
พารามิเตอร์เครื่องมือวัดเป็นนัยหาก APK ทดสอบระบุด้วย--test
- เพื่อช่วยคุณระบุและค้นหาเมทริกซ์ทดสอบของคุณในคอนโซล Firebase คุณสามารถใช้แฟล็กตัวเลือก
--client-details matrixLabel="Example matrix label"
เพื่อติดป้ายกำกับเมทริกซ์ทดสอบของคุณ - คุณสามารถดูชุดตัวเลือกบรรทัดคำสั่งทั้งหมดสำหรับการเรียกใช้การทดสอบโดยการพิมพ์
gcloud help firebase test android run
ทางเลือกอื่นในการระบุอาร์กิวเมนต์เหล่านี้ในบรรทัดคำสั่ง คุณสามารถเลือกระบุอาร์กิวเมนต์ของคุณในไฟล์อาร์กิวเมนต์รูปแบบ YAML เรียกใช้ gcloud topic arg-files
เพื่อเรียนรู้วิธีใช้คุณลักษณะนี้
gcloud CLI รองรับ Android Test Orchestrator Orchestrator ต้องการ AndroidJUnitRunner v1.1 หรือสูงกว่า หากต้องการเปิดใช้งาน ให้ใช้ gcloud firebase test android run
ด้วย
--use-orchestrator
ธง หากต้องการปิดใช้งานให้ใช้แฟล็ก --no-use-orchestrator
คุณยังสามารถควบคุมวิธีที่ Test Lab ทำการทดสอบเครื่องมือของคุณโดยใช้แฟล็กเพิ่มเติมที่ไม่ได้แสดงไว้ด้านบน ตัวอย่างเช่น คุณสามารถใช้แฟล็ก --test-targets
เพื่อทดสอบคลาสเดียวหรือเมธอดของคลาสที่ใช้โดย APK ทดสอบของคุณ คุณยังสามารถทราบได้ว่าการทดสอบของคุณที่ล้มเหลวนั้นล้มเหลวจริงหรือไม่โดยใช้แฟล็ก --num-flaky-test-attempts
ซึ่งจะระบุจำนวนครั้งที่การดำเนินการทดสอบควรได้รับการพยายามใหม่หากกรณีทดสอบอย่างน้อยหนึ่งกรณี ล้มเหลวด้วยเหตุผลใดก็ตาม หากต้องการเรียนรู้เพิ่มเติม โปรดดู gcloud firebase test android run
รายงานความครอบคลุมของรหัสสำหรับการทดสอบเครื่องมือวัด
Test Lab รองรับเครื่องมือการรายงานความครอบคลุมของรหัส EMMA และ JaCoCo หากคุณมีเครื่องมืออย่างใดอย่างหนึ่งที่รวมอยู่ในบิลด์สำหรับแอปของคุณ คุณจะได้รับรายงานการครอบคลุมโค้ดสำหรับการทดสอบ Test Lab โดยเรียกใช้ gcloud firebase test android run
พร้อมอาร์กิวเมนต์เพิ่มเติม หากไม่ได้เปิดใช้งาน Android Test Orchestrator ให้ใช้สิ่งต่อไปนี้:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables coverage=true,coverageFile="/sdcard/Download/coverage.ec" \ --directories-to-pull /sdcard/Download
หากคุณกำลังสร้างรายงานการครอบคลุมรหัสในขณะที่ใช้ Android Test Orchestrator ด้วย ให้แก้ไขตัวแปรสภาพแวดล้อมของคุณดังนี้:
gcloud firebase test android run \ --type instrumentation \ --app your-app.apk \ --test your-app-test.apk \ --device model=TestDevice,version=AndroidVersion \ --environment-variables clearPackageData=true,coverage=true,coverageFilePath="/sdcard/Download/" \ --directories-to-pull /sdcard/Download
เมื่อ Test Lab รันการทดสอบของคุณเสร็จสิ้น ให้ค้นหารายงานการครอบคลุมโค้ดของคุณใน Google Cloud Storage:
- เปิดลิงก์คอนโซล Firebase ที่เครื่องมือ
gcloud
พิมพ์เหนือตารางผลการทดสอบในเทอร์มินัล - คลิกการทดสอบการดำเนินการจากรายการที่ลิงก์นั้นเพื่อเปิดหน้ารายละเอียดของการดำเนินการนั้น
- คลิก ผลการทดสอบ เพื่อไปที่บัคเก็ต Cloud Storage ที่มีผลการทดสอบการดำเนินการนั้น
- เปิด
artifacts/coverage.ec
เพื่อดูรายงานการครอบคลุมรหัสของคุณ
วิเคราะห์ผลการทดสอบของคุณ
หลังจากนั้นไม่กี่นาที ข้อมูลสรุปเบื้องต้นของผลการทดสอบของคุณจะถูกพิมพ์โดยเครื่องมือ gcloud:
ผลลัพธ์ของการเรียกใช้การทดสอบบรรทัดคำสั่งของคุณยังมีลิงก์เพื่อดูผลการทดสอบ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีตีความผลลัพธ์เหล่านี้ โปรดดู ที่การวิเคราะห์ผลลัพธ์ Firebase Test Lab สำหรับ Android
การเข้าสู่ระบบที่กำหนดเองและการป้อนข้อความด้วยการทดสอบ Robo
การทดสอบ Robo จะเสร็จสิ้นการลงชื่อเข้าใช้หน้าจอที่ใช้บัญชี Google สำหรับการตรวจสอบสิทธิ์โดยอัตโนมัติ เว้นแต่คุณจะใช้พารามิเตอร์ --no-auto-google-login
นอกจากนี้ยังสามารถกรอกหน้าจอการเข้าสู่ระบบที่กำหนดเองโดยใช้ข้อมูลรับรองบัญชีทดสอบที่คุณระบุ คุณยังสามารถใช้พารามิเตอร์นี้เพื่อระบุข้อความป้อนแบบกำหนดเองสำหรับช่องข้อความอื่นๆ ที่แอปของคุณใช้
ในการกรอกช่องข้อความในแอปของคุณ ให้ใช้พารามิเตอร์ --robo-directives
และระบุรายการคู่ key-value
ที่คั่นด้วยเครื่องหมายจุลภาค โดยที่ key
คือชื่อทรัพยากร Android ขององค์ประกอบ UI เป้าหมาย และ value
คือสตริงข้อความ . คุณยังสามารถใช้แฟล็กนี้เพื่อบอก Robo ให้ละเว้นองค์ประกอบ UI เฉพาะ (เช่น ปุ่ม "ออกจากระบบ") รองรับช่อง EditText
แต่ไม่รองรับช่องข้อความในองค์ประกอบ WebView
UI
ตัวอย่างเช่น คุณสามารถใช้พารามิเตอร์ต่อไปนี้สำหรับการเข้าสู่ระบบที่กำหนดเอง:
--robo-directives username_resource=username,password_resource=password
คำสั่งและแฟล็กที่มีอยู่
Test Lab gcloud CLI มีคำสั่งและแฟล็กหลายตัวที่ให้คุณเรียกใช้การทดสอบด้วยข้อกำหนดต่างๆ:
แฟล็ก Android Test Orchestrator : แฟล็กสำหรับเปิดใช้งาน Orchestrator ซึ่งเป็นเครื่องมือที่ให้คุณเรียกใช้การทดสอบแอปแต่ละรายการด้วยการเรียกใช้
Instrumentation
Test Lab เรียกใช้ Orchestrator เวอร์ชันล่าสุดเสมอแฟล็กการทดสอบ Game Loop : ชุดของแฟล็กการกำหนดค่าที่เปิดใช้งานและควบคุม "โหมดสาธิต" เพื่อจำลองการกระทำของผู้เล่นในแอพเกม เรียนรู้เพิ่มเติมเกี่ยวกับการรัน การทดสอบ Game Loop ด้วย Test Lab
แฟล็ก Uniform Sharding (ในรุ่นเบต้า) : แฟล็กที่ระบุจำนวนของชาร์ดที่คุณต้องการกระจายกรณีทดสอบเท่าๆ กัน เศษจะทำงานแบบขนานบนอุปกรณ์ที่แยกจากกัน
แฟล็ก Sharding แบบแมนนวล (ในรุ่นเบต้า) : แฟล็กที่ระบุกลุ่มของแพ็กเกจ คลาส และ/หรือกรณีทดสอบที่จะรันในชาร์ด (กลุ่มของกรณีทดสอบ) เศษจะทำงานแบบขนานบนอุปกรณ์ที่แยกจากกัน
ค่าสถานะโปรไฟล์การรับส่งข้อมูลเครือข่าย (ในรุ่นเบต้า) : ค่าสถานะที่ระบุโปรไฟล์เครือข่ายใดที่การทดสอบของคุณใช้กับอุปกรณ์จริง โปรไฟล์เครือข่ายจำลองเงื่อนไขเครือข่ายที่หลากหลาย ทำให้คุณสามารถทดสอบประสิทธิภาพของแอปบนเครือข่ายที่ไม่น่าเชื่อถือหรือคาดเดาไม่ได้
การเขียนสคริปต์คำสั่ง gcloud ด้วย Test Lab
คุณสามารถใช้เชลล์สคริปต์หรือแบตช์ไฟล์เพื่อทำให้คำสั่งการทดสอบแอปบนอุปกรณ์เคลื่อนที่เป็นแบบอัตโนมัติ ซึ่งคุณอาจเรียกใช้โดยใช้บรรทัดคำสั่ง gcloud สคริปต์ทุบตีตัวอย่างต่อไปนี้เรียกใช้การทดสอบเครื่องมือโดยหมดเวลาสองนาที และรายงานว่าการทดสอบดำเนินการเสร็จสมบูรณ์หรือไม่:
if gcloud firebase test android run --app my-app.apk --test my-test.apk --timeout 2m then echo "Test matrix successfully finished" else echo "Test matrix exited abnormally with non-zero exit code: " $? fi
รหัสออกจากสคริปต์
Test Lab มีรหัสทางออกหลายรหัสที่คุณสามารถใช้เพื่อทำความเข้าใจผลลัพธ์ของการทดสอบที่คุณเรียกใช้โดยใช้สคริปต์หรือไฟล์แบตช์ได้ดียิ่งขึ้น
รหัสการออกสคริปต์สำหรับ Test Lab
รหัสทางออก | หมายเหตุ |
---|---|
0 | การดำเนินการทดสอบทั้งหมดผ่าน |
1 | เกิดความล้มเหลวทั่วไป สาเหตุที่เป็นไปได้ ได้แก่ ชื่อไฟล์ที่ไม่มีอยู่หรือข้อผิดพลาด HTTP/เครือข่าย |
2 | ออกจากการทดสอบเนื่องจากมีคำสั่งหรืออาร์กิวเมนต์ที่ไม่รู้จัก |
10 | กรณีทดสอบอย่างน้อยหนึ่งกรณี (คลาสที่ทดสอบหรือเมธอดของคลาส) ภายในการดำเนินการทดสอบไม่ผ่าน |
15 | Firebase Test Lab ไม่สามารถระบุได้ว่าเมทริกซ์ทดสอบผ่านหรือไม่ผ่าน เนื่องจากเกิดข้อผิดพลาดที่ไม่คาดคิด |
18 | ไม่สนับสนุนสภาพแวดล้อมการทดสอบสำหรับการดำเนินการทดสอบนี้เนื่องจากขนาดการทดสอบที่เข้ากันไม่ได้ ข้อผิดพลาดนี้อาจเกิดขึ้นหากระดับ Android API ที่เลือกไม่รองรับโดยประเภทอุปกรณ์ที่เลือก |
19 | เมทริกซ์ทดสอบถูกยกเลิกโดยผู้ใช้ |
20 | เกิดข้อผิดพลาดในการทดสอบโครงสร้างพื้นฐาน |