เริ่มการทดสอบด้วย 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 คือ รหัสของโปรเจ็กต์ 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: รับข้อมูลเพิ่มเติมเกี่ยวกับ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

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

    gcloud android versions list

  • 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

  1. เปิดลิงก์คอนโซล Firebase ที่เครื่องมือ gcloud พิมพ์อยู่ด้านบน ตารางผลการทดสอบในเทอร์มินัลของคุณ
  2. คลิกการดำเนินการทดสอบจากรายการในลิงก์นั้นเพื่อเปิด หน้ารายละเอียด
  3. คลิกผลการทดสอบเพื่อไปยังที่เก็บข้อมูล Cloud Storage ที่มีข้อมูลดังกล่าว ของผลการทดสอบ
  4. เปิด 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 เกิดข้อผิดพลาดในการทดสอบโครงสร้างพื้นฐาน