บทความนี้จะอธิบายวิธีเรียกใช้การทดสอบการใช้เครื่องมือ การทดสอบ 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 คือ
รหัสของโปรเจ็กต์ 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: ดูข้อมูลเพิ่มเติมเกี่ยวกับMODEL_IDของ Android ที่เฉพาะเจาะจงgcloud firebase test android models describe MODEL_IDเอาต์พุตจะมีแบรนด์ ผู้ผลิต เวอร์ชันระบบปฏิบัติการ ระดับ API ที่รองรับ อินเทอร์เฟซไบนารีของแอปพลิเคชัน (ABI) ที่รองรับ วันที่วางจำหน่าย และระบุว่าอุปกรณ์เป็นอุปกรณ์จริงหรืออุปกรณ์เสมือน
versions list: รับรายการเวอร์ชันระบบปฏิบัติการที่พร้อมให้ทดสอบgcloud firebase test android versions listคุณสามารถใช้ตัวระบุจาก 2 คอลัมน์แรกของเอาต์พุตคำสั่ง (
OS_VERSION_IDและVERSION) เพื่อเรียกใช้การทดสอบกับเวอร์ชันระบบปฏิบัติการ Android ได้ในภายหลัง หากไม่ได้ระบุเวอร์ชันระบบปฏิบัติการ Android ที่จะทดสอบ ระบบจะใช้เวอร์ชันเริ่มต้นที่ระบุไว้ในคอลัมน์TAGSเอาต์พุตตัวอย่าง

locales list: รับรายการภาษาที่พร้อมให้ทดสอบgcloud firebase test android locales listคอลัมน์แรกของเอาต์พุตจากคำสั่ง
LOCALEมีตัวระบุที่คุณใช้เรียกใช้การทดสอบกับภาษาได้ในภายหลัง หากไม่ได้ระบุภาษาที่จะทดสอบ ระบบจะใช้ภาษาอังกฤษเป็นภาษาเริ่มต้น
ขั้นตอนที่ 3 เรียกใช้การทดสอบ
เมื่อทราบช่วงของรุ่นอุปกรณ์ ภาษา และเวอร์ชันระบบปฏิบัติการที่พร้อมให้ทดสอบแอปแล้ว คุณสามารถระบุอุปกรณ์ได้โดยใช้คำสั่ง gcloud firebase test android run และแฟล็ก --device เพื่อเรียกใช้การทดสอบ Robo หรือการทดสอบการใช้เครื่องมือ
เรียกใช้การทดสอบ Robo
แม้ว่าคุณจะไม่มีการทดสอบการใช้เครื่องมือ แต่ก็ยังสามารถค้นหาข้อบกพร่องในแอปได้ ใช้การทดสอบ Robo เพื่อทำการตรวจสอบอินเทอร์เฟซผู้ใช้ของแอปโดยอัตโนมัติ การทดสอบ Robo จะทดสอบแอปโดยทำการวิเคราะห์แบบคงที่ของเส้นทางต่างๆ ผ่านอินเทอร์เฟซผู้ใช้ของแอป จากนั้นจะ Crawl ผ่านแอปเพื่อค้นหาข้อขัดข้องและปัญหาอื่นๆ ที่อาจเกิดขึ้น
หากต้องการเรียกใช้การทดสอบ 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 - คุณสามารถใช้แฟล็กที่ไม่บังคับ
เพื่อติดป้ายกำกับเมทริกซ์ทดสอบ
--client-details matrixLabel="Example matrix label"เพื่อช่วยระบุและค้นหาเมทริกซ์ทดสอบในคอนโซล Firebase - คุณสามารถดูชุดตัวเลือกบรรทัดคำสั่งทั้งหมดสำหรับการเรียกใช้การทดสอบได้โดยพิมพ์
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"
- พารามิเตอร์
--typeinstrumentation จะเป็นค่าเริ่มต้นหากระบุ 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 ซึ่งระบุจำนวนครั้งที่ควรลองทำการดำเนินการทดสอบอีกครั้งหากกรอบการทดสอบอย่างน้อย 1 รายการล้มเหลวด้วยเหตุผลใดก็ตาม ดูข้อมูลเพิ่มเติมได้ที่ 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
รองรับช่อง แต่ไม่รองรับช่องข้อความในองค์ประกอบ UI WebView
ตัวอย่างเช่น คุณสามารถใช้พารามิเตอร์ต่อไปนี้สำหรับการเข้าสู่ระบบที่กำหนดเอง
--robo-directives username_resource=username,password_resource=password
คำสั่งและแฟล็กที่พร้อมใช้งาน
gcloud CLI ของ Test Lab มีคำสั่งและแฟล็กหลายรายการที่พร้อมให้คุณ เรียกใช้การทดสอบด้วยข้อกำหนดที่แตกต่างกัน
แฟล็ก Android Test Orchestrator: แฟล็กสำหรับเปิดใช้ Orchestrator ซึ่งเป็นเครื่องมือที่ช่วยให้คุณเรียกใช้การทดสอบแต่ละรายการของ แอปในการเรียกใช้
Instrumentationของตัวเอง Test Lab จะเรียกใช้ Orchestrator เวอร์ชันล่าสุดเสมอแฟล็กการทดสอบ Game Loop: ชุดแฟล็กการกำหนดค่าที่เปิดใช้และควบคุม "โหมด เดโม" เพื่อจำลองการดำเนินการของผู้เล่นในแอปเกม ดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้ การทดสอบ Game Loop ด้วย Test Lab
แฟล็กการแบ่งชาร์ดแบบสม่ำเสมอ (ในเวอร์ชันเบต้า): แฟล็กที่ระบุจำนวนชาร์ดที่คุณต้องการกระจายกรณีทดสอบอย่างเท่าๆ กัน ระบบจะเรียกใช้ชาร์ดแบบขนานในอุปกรณ์แยกกัน
แฟล็กการแบ่งชาร์ดด้วยตนเอง (ในเวอร์ชันเบต้า): แฟล็กที่ระบุกลุ่มแพ็กเกจ คลาส และ/หรือกรณีทดสอบที่จะเรียกใช้ ในชาร์ด (กลุ่มกรณีทดสอบ) ระบบจะเรียกใช้ชาร์ดแบบขนานในอุปกรณ์แยกกัน
แฟล็กโปรไฟล์การจราจรของข้อมูลในเครือข่าย (ในเวอร์ชันเบต้า): แฟล็กที่ระบุโปรไฟล์เครือข่ายที่การทดสอบใช้กับอุปกรณ์จริง โปรไฟล์เครือข่ายจะจำลองสภาพเครือข่ายที่หลากหลาย ซึ่งช่วยให้คุณทดสอบประสิทธิภาพของแอปในเครือข่ายที่ไม่น่าเชื่อถือหรือคาดการณ์ไม่ได้
การเขียนสคริปต์คำสั่ง gcloud ด้วย Test Lab
คุณสามารถใช้สคริปต์เชลล์หรือไฟล์ Batch เพื่อทำให้คำสั่งการทดสอบแอปบนอุปกรณ์เคลื่อนที่ทำงานโดยอัตโนมัติ ซึ่งปกติแล้วคุณจะต้องเรียกใช้โดยใช้บรรทัดคำสั่ง gcloud สคริปต์ Bash ตัวอย่างต่อไปนี้จะเรียกใช้การทดสอบการวัดคุมโดยมีระยะหมดเวลา 2 นาที และรายงานว่าการทดสอบเสร็จสมบูรณ์หรือไม่
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 มีรหัสออกหลายรายการที่คุณใช้เพื่อทำความเข้าใจ ผลการทดสอบที่คุณเรียกใช้โดยใช้สคริปต์หรือไฟล์ Batch ได้ดียิ่งขึ้น
รหัสออกของการเขียนสคริปต์สำหรับ Test Lab
| รหัสออก | หมายเหตุ |
|---|---|
| 0 | การดำเนินการทดสอบทั้งหมดผ่าน |
| 1 | เกิดข้อผิดพลาดทั่วไป สาเหตุที่เป็นไปได้ ได้แก่ ชื่อไฟล์ที่ไม่มีอยู่หรือข้อผิดพลาด HTTP/เครือข่าย |
| 2 | การทดสอบออกเนื่องจากมีการระบุคำสั่งหรืออาร์กิวเมนต์ที่ไม่รู้จัก |
| 10 | กรณีทดสอบอย่างน้อย 1 รายการ (คลาสหรือเมธอดของคลาสที่ทดสอบ) ภายในการดำเนินการทดสอบไม่ผ่าน |
| 15 | Firebase Test Lab ไม่สามารถระบุได้ว่าเมทริกซ์ทดสอบผ่านหรือ ไม่เนื่องจากเกิดข้อผิดพลาดที่ไม่คาดคิด |
| 18 | ระบบไม่รองรับสภาพแวดล้อมการทดสอบสำหรับการดำเนินการทดสอบนี้เนื่องจากมิติข้อมูลการทดสอบเข้ากันไม่ได้ ข้อผิดพลาดนี้อาจเกิดขึ้นหากประเภทอุปกรณ์ที่เลือกไม่รองรับระดับ API ของ Android ที่เลือก |
| 19 | ผู้ใช้ยกเลิกเมทริกซ์ทดสอบ |
| 20 | เกิดข้อผิดพลาดเกี่ยวกับโครงสร้างพื้นฐานการทดสอบ |