เริ่มการทดสอบด้วย gcloud CLI

คู่มือนี้อธิบายวิธีเรียกใช้เครื่องมือวัด การทดสอบ Robo หรือ Game Loop โดยใช้ gcloud CLI

สำหรับรายการคำสั่ง gcloud คุณสามารถใช้กับแอป Android ใน Test Lab ให้ไปที่ เอกสารอ้างอิงสำหรับ gcloud firebase test android

ก่อนจะเริ่ม

หากคุณยังไม่ได้ เพิ่ม Firebase ในโครงการ Android ของคุณ

ขั้นตอนที่ 1 ตั้งค่า gcloud CLI

  1. ดาวน์โหลด Google Cloud SDK
  2. ซึ่งรวมถึงเครื่องมือ gcloud CLI

  3. ตรวจสอบให้แน่ใจว่าการติดตั้งของคุณเป็นปัจจุบัน:
    gcloud components update
    
  4. เข้าสู่ระบบ gcloud CLI โดยใช้บัญชี Google ของคุณ:
    gcloud auth login
    
  5. ตั้งค่าโปรเจ็กต์ Firebase ใน gcloud โดยที่ PROJECT_ID คือ ID ของโปรเจ็กต์ Firebase ของคุณ:
    gcloud config set project PROJECT_ID
    

ขั้นตอนที่ 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 มีเวอร์ชันของระบบปฏิบัติการที่อุปกรณ์รองรับ

    ตัวอย่างผลลัพธ์

    gcloud firebase test android models list output

  • models describe : รับข้อมูลเพิ่มเติมเกี่ยวกับ Android MODEL_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

    ตัวอย่างผลลัพธ์

    gcloud android versions list

  • 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:

  1. เปิดลิงก์คอนโซล Firebase ที่เครื่องมือ gcloud พิมพ์อยู่เหนือตารางผลการทดสอบในเทอร์มินัลของคุณ
  2. คลิกการทดสอบการดำเนินการจากรายการที่ลิงก์นั้นเพื่อเปิดหน้ารายละเอียดของการดำเนินการนั้น
  3. คลิก ผลการทดสอบ เพื่อไปที่บัคเก็ต Cloud Storage พร้อมผลการทดสอบการดำเนินการนั้น
  4. เปิด artifacts/coverage.ec เพื่อดูรายงานความครอบคลุมของโค้ด

วิเคราะห์ผลการทดสอบของคุณ

หลังจากผ่านไปสองสามนาที เครื่องมือ gcloud จะพิมพ์สรุปพื้นฐานของผลการทดสอบของคุณ:

Command test results

ผลลัพธ์ของการทดสอบบรรทัดคำสั่งของคุณมีลิงก์เพื่อดูผลการทดสอบด้วย หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการตีความผลลัพธ์เหล่านี้ โปรดดูที่การ วิเคราะห์ 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 เกิดข้อผิดพลาดของโครงสร้างพื้นฐานการทดสอบ