เริ่มการทดสอบด้วย 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 ที่รองรับ Application Binary Interfaces (ABI) ที่รองรับ วันที่เผยแพร่ และอุปกรณ์นั้นเป็นอุปกรณ์จริงหรือเสมือน

  • versions list : รับรายการเวอร์ชันระบบปฏิบัติการที่มีอยู่ในปัจจุบันเพื่อทดสอบ

    gcloud firebase test android versions list
    

    คุณสามารถใช้ตัวระบุจากสองคอลัมน์แรกของเอาต์พุตคำสั่ง ( OS_VERSION_ID และ VERSION ) เพื่อรันการทดสอบกับเวอร์ชันระบบปฏิบัติการ Android ในภายหลัง หากคุณไม่ระบุเวอร์ชันของระบบปฏิบัติการ Android ที่จะทดสอบ ระบบจะใช้ค่าเริ่มต้นที่ระบุไว้ใต้คอลัมน์ TAGS

    ตัวอย่างเอาต์พุต

    gcloud android versions list

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

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

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

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

Command test results

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