คู่มือนี้จะอธิบายวิธีเรียกใช้การทดสอบเครื่องมือ, 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 (ในรุ่นเบต้า) : ธงที่ระบุจำนวนชิ้นส่วนที่คุณต้องการกระจายกรณีทดสอบให้เท่าๆ กัน ชาร์ดจะทำงานแบบขนานบนอุปกรณ์ที่แยกจากกัน
การตั้งค่าสถานะการแบ่งส่วนด้วยตนเอง (ในรุ่นเบต้า) : การตั้งค่าสถานะที่ระบุกลุ่มของแพ็กเกจ คลาส และ/หรือกรณีทดสอบที่จะเรียกใช้ในส่วนแบ่งข้อมูล (กลุ่มของกรณีทดสอบ) ชาร์ดจะทำงานแบบขนานบนอุปกรณ์ที่แยกจากกัน
การตั้งค่าสถานะโปรไฟล์การรับส่งข้อมูลเครือข่าย (ในรุ่นเบต้า) : การตั้งค่าสถานะที่ระบุโปรไฟล์เครือข่ายที่คุณทดสอบใช้กับอุปกรณ์ทางกายภาพ โปรไฟล์เครือข่ายจำลองสภาพเครือข่ายที่หลากหลาย ทำให้คุณสามารถทดสอบประสิทธิภาพของแอปบนเครือข่ายที่ไม่น่าเชื่อถือหรือคาดเดาไม่ได้
การเขียนสคริปต์คำสั่ง 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 | เกิดข้อผิดพลาดเกี่ยวกับโครงสร้างพื้นฐานการทดสอบ |