Google 致力于为黑人社区推动种族平等。查看具体举措
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

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

Firebase Test Lab มีโครงสร้างพื้นฐานบนคลาวด์สำหรับการทดสอบแอป Android รวมถึงการผสานรวมอย่างสมบูรณ์กับ อินเทอร์เฟซบรรทัดคำสั่ง gcloud (CLI) เอกสารนี้ครอบคลุมการติดตั้งและการกำหนดค่าที่จำเป็นในการเริ่มต้นใช้งาน Test Lab จาก gcloud CLI

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

หากคุณไม่มีโปรเจ็กต์ Firebase สำหรับแอปของคุณให้ไปที่ คอนโซล Firebase แล้วคลิก สร้างโปรเจ็กต์ใหม่ เพื่อสร้าง โปรเจ็กต์ ทันที คุณจะต้องมีสิทธิ์เป็นเจ้าของหรือแก้ไขสิทธิ์ในโปรเจ็กต์ของคุณ

ตั้งค่า 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
    

กำหนดค่าการทดสอบของคุณ

ในตัวอย่างนี้คุณจะทำการทดสอบบางอย่างกับแอป Android สำหรับจดบันทึกแบบง่ายที่ชื่อว่า Notepad

  1. ดาวน์โหลดไฟล์ APK ไบนารีสำหรับแอป Notepad ( app-debug-unaligned.apk ) และการทดสอบเครื่องมือที่เกี่ยวข้อง ( app-debug-test-unaligned.apk ) ที่มีให้ในไดเร็กทอรี NotePad / app / build / outputs / apk / ของ notepad .zip

  2. รับรายการอุปกรณ์ Android ปัจจุบันที่มีให้ทดสอบดังนี้

    
    $ gcloud firebase test android models list
    
    gcloud firebase test android models list output คอลัมน์แรกของเอาต์พุตคำสั่ง MODEL_ID มีตัวระบุที่คุณสามารถใช้ในภายหลังเพื่อเรียกใช้การทดสอบกับโมเดลเฉพาะ คอลัมน์ OS_VERSION_ID แสดงเวอร์ชันของระบบปฏิบัติการที่อุปกรณ์นั้นรองรับ หากคุณไม่ระบุ MODEL_ID ที่จะทดสอบระบบจะใช้ค่าเริ่มต้นที่ระบุไว้ในคอลัมน์ TAGS

  3. เรียนรู้เพิ่มเติมเกี่ยวกับ MODEL_ID เฉพาะของ Android ที่มี firebase test android models describe MODEL_ID firebase test android models describe คำสั่งดังนี้:

    
    $ gcloud firebase test android models describe Nexus5
    
    คำสั่งตัวอย่างที่แสดงด้านบนให้ข้อมูลโดยละเอียดเกี่ยวกับรุ่น Nexus5 รวมถึงยี่ห้อผู้ผลิตและระดับ API ที่รองรับและรุ่นนั้นเป็นจริงหรือไม่ หรือเสมือน

  4. รับรายการเวอร์ชันปัจจุบันของระบบปฏิบัติการ Android ที่มีให้ทดสอบ:

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

  5. รับรายการโลแคลปัจจุบันที่พร้อมให้ทดสอบ:

    
    $ gcloud firebase test android locales list
    
    คอลัมน์แรกของเอาต์พุตคำสั่ง LOCALE มีตัวระบุที่คุณสามารถใช้ในภายหลังเพื่อรันการทดสอบกับโลแคล หากคุณไม่ได้ระบุภาษาที่จะทดสอบระบบจะใช้ภาษาอังกฤษเป็นภาษาเริ่มต้น เอาต์พุตคำสั่งไม่แสดงที่นี่เนื่องจากมีหลายร้อยโลแคล

กำลังดำเนินการทดสอบ

ตอนนี้คุณรู้ช่วงของรุ่นอุปกรณ์รุ่นระบบปฏิบัติการและตำแหน่งที่ตั้งพร้อมที่จะใช้เมื่อการทดสอบแอปของคุณคุณสามารถใช้ข้อมูลที่จะระบุอุปกรณ์การทดสอบโดยใช้ gcloud firebase test android run คำสั่งและ --device ธง คำสั่งและการตั้งค่าสถานะนี้ใช้ไม่ว่าคุณจะใช้การทดสอบ 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 ค่า --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.0 ขึ้นไป ในการเปิดใช้งานให้ใช้ gcloud firebase test android run ด้วย
--use-orchestrator ธง --use-orchestrator หากต้องการปิดใช้งานให้ --no-use-orchestrator แฟ --no-use-orchestrator

หมายเหตุ: คุณยังสามารถควบคุมวิธีที่ Test Lab เรียกใช้การทดสอบเครื่องมือของคุณโดยใช้แฟล็กเพิ่มเติมที่ไม่ได้แสดงไว้ด้านบน ตัวอย่างเช่นคุณสามารถใช้ --test-targets ทดสอบ --test-targets เพื่อทดสอบคลาสเดียวหรือวิธีคลาสที่ APK ทดสอบของคุณใช้ นอกจากนี้คุณยังสามารถตรวจสอบว่าการทดสอบของคุณที่ล้มเหลวนั้นเป็นขุยจริงหรือไม่โดยใช้แฟล็ก '--num-flaky-test-พยายามs' ซึ่งระบุจำนวนครั้งที่ควรทำการทดสอบอีกครั้งหากมีอย่างน้อยหนึ่งครั้ง กรณีทดสอบล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม หากต้องการเรียนรู้เพิ่มเติมโปรดดู การรัน Android ของ gcloud firebase

รายงานความครอบคลุมของรหัสสำหรับการทดสอบเครื่องมือวัด

Test Lab รองรับเครื่องมือรายงานความครอบคลุมของโค้ด EMMA และ JaCoCo หากคุณมีเครื่องมือใดที่รวมอยู่ใน gcloud firebase test android run สำหรับแอปของคุณคุณสามารถรับรายงานความครอบคลุมของโค้ดสำหรับการทดสอบ Test Lab ได้โดย gcloud firebase test android run คำสั่ง gcloud firebase test android run โดยมีอาร์กิวเมนต์ดังนี้

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/coverage.ec" \
  --directories-to-pull /sdcard

เมื่อ 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 flag (ในเบต้า) : แฟล็กที่ระบุจำนวน ชาร์ด ที่คุณต้องการกระจายกรณีทดสอบอย่างเท่าเทียมกัน ชิ้นส่วนจะทำงานแบบขนานบนอุปกรณ์ที่แยกจากกัน

  • Manual Sharding flag (ในเบต้า) : แฟล็กที่ระบุกลุ่มของแพ็กเกจคลาสและ / หรือกรณีทดสอบเพื่อรันในชาร์ด (กลุ่มของกรณีทดสอบ) ชิ้นส่วนจะทำงานแบบขนานบนอุปกรณ์ที่แยกจากกัน

  • แฟล็กโปรไฟล์การรับส่งข้อมูลเครือข่าย (ในรุ่นเบต้า) : แฟล็กที่ระบุโปรไฟล์เครือข่ายที่คุณทดสอบใช้กับอุปกรณ์ทางกายภาพ โปรไฟล์เครือข่ายจำลองเงื่อนไขเครือข่ายที่หลากหลายทำให้คุณสามารถทดสอบประสิทธิภาพของแอปบนเครือข่ายที่ไม่น่าเชื่อถือหรือไม่สามารถคาดเดาได้

การเขียนสคริปต์คำสั่ง gcloud ด้วย Test Lab

คุณสามารถใช้เชลล์สคริปต์หรือไฟล์แบตช์เพื่อทำให้คำสั่งทดสอบแอปบนอุปกรณ์เคลื่อนที่โดยอัตโนมัติซึ่งคุณจะเรียกใช้โดยใช้บรรทัดคำสั่ง gcloud ได้ ตัวอย่าง bash script ต่อไปนี้รันการทดสอบเครื่องมือวัดด้วยการหมดเวลาสองนาทีและรายงานว่าการทดสอบรันเสร็จสมบูรณ์หรือไม่:

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 เกิดข้อผิดพลาดในการทดสอบโครงสร้างพื้นฐาน