คู่มือนี้อธิบายวิธีเรียกใช้เครื่องมือวัด การทดสอบ 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 ที่รองรับ วันที่เผยแพร่ และอุปกรณ์เป็นแบบจริงหรือเสมือน
versions list
: รับรายการเวอร์ชันระบบปฏิบัติการที่มีอยู่ในปัจจุบันเพื่อทดสอบgcloud firebase test android versions list
คุณสามารถใช้ตัวระบุจากสองคอลัมน์แรกของเอาต์พุตคำสั่ง (
OS_VERSION_ID
และVERSION
) เพื่อเรียกใช้การทดสอบกับเวอร์ชัน Android OS ในภายหลัง หากคุณไม่ได้ระบุเวอร์ชันระบบปฏิบัติการ Android ที่จะทดสอบ ระบบจะใช้ค่าเริ่มต้นที่ระบุไว้ในคอลัมน์TAGS
ตัวอย่างผลลัพธ์
locales list
ที่ : รับรายการสถานที่ปัจจุบันที่สามารถทดสอบได้gcloud firebase test android versions list
คอลัมน์แรกของเอาต์พุตคำสั่ง
LOCALE
มีตัวระบุที่คุณสามารถใช้ในภายหลังเพื่อรันการทดสอบกับโลแคล หากคุณไม่ได้ระบุสถานที่ที่จะทดสอบ ภาษาอังกฤษจะถูกใช้เป็นภาษาเริ่มต้น
วิ่งทดสอบ
เมื่อคุณทราบรุ่นของอุปกรณ์ สถานที่ และเวอร์ชันระบบปฏิบัติการที่พร้อมใช้งานสำหรับการทดสอบแอปของคุณแล้ว คุณสามารถระบุอุปกรณ์โดยใช้คำสั่ง gcloud firebase test android run
และ --device
flag เพื่อเรียกใช้ 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
พารามิเตอร์ --type robo
เป็นนัยหากไม่มีการระบุค่า --type
คุณสามารถดูชุดตัวเลือกบรรทัดคำสั่งทั้งหมดสำหรับการรันการทดสอบโดยพิมพ์: 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
พารามิเตอร์ --type instrumentation
เป็นนัยหากมีการระบุ APK การทดสอบด้วย --test
คุณสามารถเลือกระบุอาร์กิวเมนต์ในไฟล์อาร์กิวเมนต์รูปแบบ 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 test
การทดสอบ 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 (ในรุ่นเบต้า) : แฟล็กที่ระบุจำนวนชาร์ดที่คุณต้องการกระจายกรณีทดสอบเท่าๆ กัน ชาร์ดทำงานแบบขนานบนอุปกรณ์ที่แยกจากกัน
แฟล็ก ชาร์ดด้วยตนเอง (ในรุ่นเบต้า) : แฟล็กที่ระบุกลุ่มของแพ็กเกจ คลาส และ/หรือกรณีทดสอบที่จะรันในชาร์ด (กลุ่มของเคสทดสอบ) ชาร์ดทำงานแบบขนานบนอุปกรณ์ที่แยกจากกัน
แฟล็ก โปรไฟล์การรับส่งข้อมูลเครือข่าย (ในรุ่นเบต้า) : แฟล็กที่ระบุโปรไฟล์เครือข่ายที่การทดสอบของคุณใช้กับอุปกรณ์จริง โปรไฟล์เครือข่ายจำลองเงื่อนไขเครือข่ายที่หลากหลาย ทำให้คุณสามารถทดสอบประสิทธิภาพของแอปบนเครือข่ายที่ไม่น่าเชื่อถือหรือคาดเดาไม่ได้
การเขียนสคริปต์คำสั่ง 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 | เกิดข้อผิดพลาดของโครงสร้างพื้นฐานการทดสอบ |