คำแนะนำนี้จะอธิบายวิธีเรียกใช้เครื่องมือ, 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 versions list
คอลัมน์แรกของเอาต์พุตคำสั่ง
LOCALE
มีตัวระบุ ที่คุณสามารถใช้เพื่อทำการทดสอบกับภาษาหนึ่งๆ ในภายหลังได้ หากคุณไม่ระบุ ภาษาที่จะทดสอบเทียบกัน จะใช้ภาษาอังกฤษเป็นภาษาเริ่มต้น
ขั้นตอนที่ 3 ทำการทดสอบ
เมื่อคุณทราบรุ่นของอุปกรณ์ ภาษา และเวอร์ชันระบบปฏิบัติการต่างๆ ที่มีให้ใช้งานแล้ว
สำหรับการทดสอบแอปของคุณ คุณสามารถระบุอุปกรณ์ที่ใช้
คำสั่ง gcloud firebase test android run
และ
--device
Flag เพื่อเรียกใช้การทดสอบ 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
- เพื่อช่วยคุณระบุและค้นหาเมทริกซ์ทดสอบในคอนโซล 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
- คุณสามารถใช้ 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 เวอร์ชัน 1.1 ขึ้นไป หากต้องการเปิดใช้ ให้ใช้ gcloud firebase test android run
กับ Flag --use-orchestrator
หากต้องการปิดใช้ ให้ใช้แฟล็ก --no-use-orchestrator
คุณยังควบคุมวิธีที่ Test Lab เรียกใช้การทดสอบการใช้เครื่องมือได้อีกด้วย
โดยใช้แฟล็กเพิ่มเติมที่ไม่ได้แสดงด้านบน ตัวอย่างเช่น คุณสามารถใช้
--test-targets
Flag เพื่อทดสอบชั้นเรียนเดียวหรือวิธีของชั้นเรียนที่การทดสอบใช้อยู่
APK คุณยังสามารถค้นหาได้ว่าการทดสอบที่ล้มเหลวนั้นเป็นการทดสอบที่ไม่สม่ำเสมอหรือไม่
ไม่ใช้แฟล็ก --num-flaky-test-attempts
ซึ่งระบุจำนวนข้อผิดพลาด
ควรลองทำการทดสอบอีกครั้งหากมีกรอบการทดสอบอย่างน้อย 1 รายการ
ล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม ดูข้อมูลเพิ่มเติมได้ที่ gcloud firebase test for 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
เพื่อดูรายงานความครอบคลุมของโค้ด
วิเคราะห์ผลการทดสอบ
หลังจากผ่านไป 2-3 นาที เครื่องมือ 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 มีคำสั่งและการแฟล็กหลายรายการที่ให้คุณ ทำการทดสอบโดยมีข้อมูลจำเพาะที่แตกต่างกันดังนี้
Flag ของ Android Test Orchestrator: Flag เพื่อเปิดใช้ Orchestrator ซึ่งเป็นเครื่องมือที่ช่วยให้คุณทำการทดสอบแอปแต่ละรายการในการเรียกใช้
Instrumentation
ของตนเองได้ Test Lab เสมอ เรียกใช้ Orchestrator เวอร์ชันล่าสุดแฟล็กการทดสอบ Game Loop: ชุดของ Flag การกำหนดค่าที่เปิดใช้และควบคุม "การสาธิต โหมด" เพื่อจำลองการทำงานของผู้เล่นในแอปเกม ดูข้อมูลเพิ่มเติมเกี่ยวกับการวิ่ง การทดสอบ Game Loop ด้วย Test Lab
Uniform Sharding Flag (ในเวอร์ชันเบต้า): แฟล็กที่ระบุจำนวนชาร์ดที่คุณต้องการทำให้เท่าๆ กัน แจกจ่ายกรอบการทดสอบ ชาร์ดจะทำงานพร้อมกันบนอุปกรณ์ที่แยกกัน
ด้วยการแจ้งชาร์ดด้วยตนเอง (ในเวอร์ชันเบต้า): แฟล็กที่ระบุกลุ่มของแพ็กเกจ คลาส และ/หรือกรอบการทดสอบที่เรียกใช้ ในชาร์ด (กลุ่มกรอบการทดสอบ) ชาร์ดจะทำงานพร้อมกันใน อุปกรณ์แยกกัน
การแจ้งโปรไฟล์การเข้าชมเครือข่าย (ในรุ่นเบต้า): ธงที่ระบุว่าโปรไฟล์เครือข่ายใดที่การทดสอบของคุณใช้กับอุปกรณ์จริง อุปกรณ์ โปรไฟล์เครือข่ายจะเลียนแบบเงื่อนไขต่างๆ ของเครือข่าย ทำให้สามารถ เพื่อทดสอบประสิทธิภาพของแอปบนเครือข่าย ที่ไม่น่าเชื่อถือหรือคาดเดาไม่ได้
กำลังเขียนคำสั่ง gcloud ด้วย Test Lab
คุณสามารถใช้สคริปต์ Shell หรือไฟล์กลุ่มเพื่อใช้คำสั่งการทดสอบแอปบนอุปกรณ์เคลื่อนที่โดยอัตโนมัติ ที่คุณจะเรียกใช้โดยใช้บรรทัดคำสั่ง gcloud ดังต่อไปนี้ สคริปต์ Bash ตัวอย่างจะเรียกใช้การทดสอบเครื่องมือที่มีระยะหมดเวลาสองนาที และ หากการทดสอบเสร็จสมบูรณ์
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 | เกิดข้อผิดพลาดในการทดสอบโครงสร้างพื้นฐาน |