คำแนะนำนี้จะอธิบายวิธีเรียกใช้การทดสอบเครื่องมือวัดประสิทธิภาพ, 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
: ดูข้อมูลเพิ่มเติมเกี่ยวกับ Android หนึ่งๆMODEL_ID
gcloud firebase test android models describe MODEL_ID
เอาต์พุตประกอบด้วยแบรนด์ ผู้ผลิต เวอร์ชันระบบปฏิบัติการ ระดับ API ที่รองรับ Application Binary Interface (ABI) ที่รองรับ วันที่เผยแพร่ และข้อมูลว่าอุปกรณ์เป็นอุปกรณ์จริงหรือเสมือนจริง
versions list
: ดูรายการระบบปฏิบัติการเวอร์ชันที่ใช้ทดสอบได้ในปัจจุบันgcloud firebase test android versions list
คุณสามารถใช้ตัวระบุจากคอลัมน์แรกของเอาต์พุตคำสั่ง (
OS_VERSION_ID
และVERSION
) เพื่อเรียกใช้การทดสอบกับเวอร์ชัน AndroidOS ในภายหลัง หากไม่ได้ระบุเวอร์ชันระบบปฏิบัติการ Android ที่จะทดสอบ ระบบจะใช้เวอร์ชันเริ่มต้นที่ระบุไว้ในคอลัมน์TAGS
ตัวอย่างเอาต์พุต
locales list
: ดูรายการภาษาปัจจุบันที่ใช้ทดสอบได้gcloud firebase test android versions list
คอลัมน์แรกของเอาต์พุตคําสั่ง
LOCALE
มีตัวระบุที่คุณสามารถใช้ภายหลังเพื่อเรียกใช้การทดสอบกับภาษา หากคุณไม่ได้ระบุภาษาที่จะทดสอบ ระบบจะใช้ภาษาอังกฤษเป็นภาษาเริ่มต้น
ขั้นตอนที่ 3 ทำการทดสอบ
เมื่อทราบช่วงรุ่นอุปกรณ์ ภาษา และเวอร์ชันระบบปฏิบัติการที่ใช้ทดสอบแอปได้แล้ว คุณสามารถระบุอุปกรณ์โดยใช้คำสั่ง gcloud firebase test android run
และ Flag --device
เพื่อเรียกใช้การทดสอบ 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
- คุณสามารถใช้ Flag
--client-details matrixLabel="Example matrix label"
(ไม่บังคับ) เพื่อติดป้ายกำกับเมทริกซ์การทดสอบเพื่อช่วยในการระบุและค้นหาเมทริกซ์การทดสอบในคอนโซล Firebase - คุณดูตัวเลือกบรรทัดคำสั่งทั้งหมดสําหรับการเรียกใช้การทดสอบได้โดยพิมพ์
gcloud help firebase test android run
คุณสามารถระบุอาร์กิวเมนต์ในไฟล์อาร์กิวเมนต์รูปแบบ YAML (ไม่บังคับ) แทนการระบุอาร์กิวเมนต์เหล่านี้ในบรรทัดคำสั่ง เรียกใช้
gcloud topic arg-files
เพื่อดูวิธีใช้ฟีเจอร์นี้
ดูวิธีตรวจสอบผลการทดสอบจากการทดสอบด้วยโรโบได้ที่หัวข้อวิเคราะห์ผลการทดสอบ
ทำการทดสอบการใช้เครื่องมือ
ตอนนี้ให้ใช้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
- คุณสามารถใช้ Flag
--client-details matrixLabel="Example matrix label"
(ไม่บังคับ) เพื่อติดป้ายกำกับเมทริกซ์การทดสอบเพื่อช่วยในการระบุและค้นหาเมทริกซ์การทดสอบในFirebaseคอนโซล - คุณดูชุดตัวเลือกบรรทัดคำสั่งทั้งหมดสําหรับการเรียกใช้การทดสอบได้โดยพิมพ์
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
กับ Flag --use-orchestrator
หากต้องการปิดใช้ ให้ใช้ Flag --no-use-orchestrator
นอกจากนี้ คุณยังควบคุมวิธีที่ Test Lab เรียกใช้การทดสอบเครื่องมือวัดได้ด้วยโดยใช้ Flag เพิ่มเติมที่ไม่ได้แสดงด้านบน เช่น คุณสามารถใช้ Flag --test-targets
เพื่อทดสอบคลาสเดียวหรือเมธอดคลาสที่ใช้โดย APK ทดสอบ นอกจากนี้ คุณยังดูได้ว่าการทดสอบที่ไม่สําเร็จนั้นทำงานไม่สอดคล้องกันจริงหรือไม่โดยใช้ Flag --num-flaky-test-attempts
ซึ่งระบุจํานวนครั้งที่ควรพยายามเรียกใช้การทดสอบอีกครั้งหาก Test Case อย่างน้อย 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 TestOrchestrator ด้วย ให้แก้ไขตัวแปรสภาพแวดล้อมดังนี้
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
เพื่อดูรายงานการครอบคลุมโค้ด
วิเคราะห์ผลการทดสอบ
หลังจากผ่านไป 2-3 นาที เครื่องมือ gcloud จะพิมพ์สรุปพื้นฐานของผลการทดสอบ
เอาต์พุตของการทดสอบบรรทัดคำสั่งยังมีลิงก์สำหรับดูผลการทดสอบด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีตีความผลลัพธ์เหล่านี้ได้ที่การวิเคราะห์ Firebase Test Lab สำหรับผลลัพธ์ของ Android
การเข้าสู่ระบบและการป้อนข้อความที่กำหนดเองด้วยการทดสอบ Robo
การทดสอบ Robo จะดำเนินการในหน้าจอลงชื่อเข้าใช้ที่ใช้บัญชี Google เพื่อทำการตรวจสอบสิทธิ์ให้เสร็จสมบูรณ์โดยอัตโนมัติ เว้นแต่คุณจะใช้พารามิเตอร์ --no-auto-google-login
นอกจากนี้ยังสร้างหน้าจอการเข้าสู่ระบบที่กำหนดเองโดยใช้ข้อมูลเข้าสู่ระบบของบัญชีทดสอบที่คุณให้ไว้ได้อีกด้วย นอกจากนี้ คุณยังใช้พารามิเตอร์นี้เพื่อระบุข้อความป้อนที่กำหนดเองสำหรับช่องข้อความอื่นๆ ที่แอปใช้ได้ด้วย
หากต้องการกรอกช่องข้อความในแอป ให้ใช้พารามิเตอร์ --robo-directives
และระบุรายการคู่ key-value
ที่คั่นด้วยคอมมา โดยที่ key
คือชื่อทรัพยากร Android ขององค์ประกอบ UI เป้าหมาย และ value
คือสตริงข้อความ นอกจากนี้ คุณยังใช้ Flag นี้เพื่อบอก Robo ให้ละเว้นองค์ประกอบ UI ที่เฉพาะเจาะจงได้ด้วย (เช่น ปุ่ม "ออกจากระบบ")
ระบบรองรับช่อง EditText
แต่จะไม่รองรับช่องข้อความในองค์ประกอบ UI ของ WebView
เช่น คุณอาจใช้พารามิเตอร์ต่อไปนี้สำหรับการเข้าสู่ระบบที่กำหนดเอง
--robo-directives username_resource=username,password_resource=password
คำสั่งและ Flag ที่พร้อมใช้งาน
Test Lab gcloud CLI มีคำสั่งและ Flag หลายรายการที่ช่วยให้คุณทำการทดสอบตามข้อกำหนดต่างๆ ได้ ดังนี้
Flag ของ Android Test Orchestrator: Flag เพื่อเปิดใช้ Orchestrator ซึ่งเป็นเครื่องมือที่ช่วยให้คุณทำการทดสอบแอปแต่ละรายการในการเรียกใช้
Instrumentation
ของตนเองได้ Test Lab ทำงานด้วย Orchestrator เวอร์ชันล่าสุดเสมอFlag การทดสอบ Game Loop: กลุ่ม Flag การกําหนดค่าที่เปิดใช้และควบคุม "โหมดสาธิต" เพื่อจําลองการดําเนินการของผู้เล่นในแอปเกม ดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้การทดสอบ Game Loop ด้วย Test Lab
Flag การแยกกลุ่มแบบสัดส่วนเท่าๆ กัน (เบต้า): Flag ที่ระบุจํานวนชาร์ดที่คุณต้องการกระจายกรณีทดสอบอย่างเท่าๆ กัน ชาร์ดจะทํางานพร้อมกันในอุปกรณ์แยกต่างหาก
ด้วยFlag การแยกกลุ่มด้วยตนเอง (เบต้า): Flag ที่ระบุกลุ่มแพ็กเกจ คลาส และ/หรือกรณีทดสอบที่จะเรียกใช้ในกลุ่ม (กลุ่มกรณีทดสอบ) ชาร์ดจะทํางานพร้อมกันในอุปกรณ์แยกต่างหาก
Flag โปรไฟล์การเข้าชมเครือข่าย (เบต้า): Flag ที่ระบุโปรไฟล์เครือข่ายที่การทดสอบใช้กับอุปกรณ์จริง โปรไฟล์เครือข่ายจะจำลองสภาพเครือข่ายที่หลากหลาย ซึ่งช่วยให้คุณทดสอบประสิทธิภาพของแอปในเครือข่ายที่ไม่เสถียรหรือคาดเดาไม่ได้
การใช้สคริปต์คำสั่ง gcloud ด้วย Test Lab
คุณสามารถใช้สคริปต์เชลล์หรือไฟล์แบตช์เพื่อทำให้คำสั่งทดสอบแอปบนอุปกรณ์เคลื่อนที่ทำงานอัตโนมัติ ซึ่งปกติจะต้องเรียกใช้โดยใช้บรรทัดคำสั่ง 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 มีรหัสออกหลายรหัสที่คุณสามารถใช้เพื่อทำความเข้าใจผลการทดสอบที่เรียกใช้โดยใช้สคริปต์หรือไฟล์กลุ่มได้ดียิ่งขึ้น
รหัสออกสําหรับสคริปต์ Test Lab
โค้ดสิ้นสุด | หมายเหตุ |
---|---|
0 | การดำเนินการทดสอบทั้งหมดผ่าน |
1 | เกิดความล้มเหลวทั่วไป สาเหตุที่เป็นไปได้ ได้แก่ ชื่อไฟล์ที่ไม่มีอยู่หรือข้อผิดพลาด HTTP/เครือข่าย |
2 | การทดสอบออกเนื่องจากมีการระบุคำสั่งหรืออาร์กิวเมนต์ที่ไม่รู้จัก |
10 | เฟรมเวิร์กการทดสอบไม่ผ่านอย่างน้อย 1 รายการ (คลาสหรือเมธอดของคลาสที่ทดสอบ) ในการเรียกใช้การทดสอบ |
15 | Firebase Test Lab ไม่สามารถระบุได้ว่าตารางทดสอบผ่านหรือไม่เนื่องจากเกิดข้อผิดพลาดที่ไม่คาดคิด |
18 | ระบบไม่รองรับสภาพแวดล้อมการทดสอบสําหรับการดําเนินการทดสอบนี้เนื่องจากมิติข้อมูลการทดสอบใช้ร่วมกันไม่ได้ ข้อผิดพลาดนี้อาจเกิดขึ้นหากประเภทอุปกรณ์ที่เลือกไม่รองรับระดับ Android API ที่เลือก |
19 | ผู้ใช้ยกเลิกตารางการทดสอบ |
20 | เกิดข้อผิดพลาดเกี่ยวกับโครงสร้างพื้นฐานการทดสอบ |