หน้านี้ให้ความช่วยเหลือในการแก้ปัญหาและคำตอบสำหรับคำถามที่พบบ่อยเกี่ยวกับการทดสอบกับ Firebase Test Lab ปัญหาที่ทราบยังได้รับการบันทึกไว้ด้วย หากคุณไม่พบสิ่งที่คุณกำลังมองหาหรือต้องการความช่วยเหลือเพิ่มเติม เข้าร่วม ช่อง #test-lab บน Firebase Slack หรือติดต่อ ฝ่ายสนับสนุนของ Firebase
การแก้ไขปัญหา
เมื่อคุณเลือกอุปกรณ์ที่มีระดับความจุสูงในแค็ตตาล็อก Test Lab การทดสอบอาจเริ่มเร็วขึ้น เมื่ออุปกรณ์มีความจุต่ำ การทดสอบอาจใช้เวลานานกว่าในการทำงาน หากจำนวนการทดสอบที่เรียกใช้มากกว่าความจุของอุปกรณ์ที่เลือกมาก การทดสอบอาจใช้เวลานานกว่าจึงจะเสร็จสิ้น
การทดสอบที่ทำงานในระดับความจุของอุปกรณ์ทุกระดับอาจใช้เวลานานกว่าเนื่องจากปัจจัยต่อไปนี้:
- การรับส่งข้อมูลซึ่งส่งผลต่อความพร้อมใช้งานของอุปกรณ์และความเร็วในการทดสอบ
- ความล้มเหลวของอุปกรณ์หรือโครงสร้างพื้นฐานซึ่งอาจเกิดขึ้นได้ตลอดเวลา หากต้องการตรวจสอบว่ามีโครงสร้างพื้นฐานที่รายงานสำหรับ Test Lab หรือไม่ โปรดดู แดชบอร์ดสถานะ Firebase
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับความจุของอุปกรณ์ใน Test Lab โปรดดูข้อมูลความจุของอุปกรณ์สำหรับ Android และ iOS
โดยทั่วไปผลการทดสอบที่ไม่สามารถสรุปได้อาจเกิดขึ้นเนื่องจากการรันการทดสอบที่ถูกยกเลิกหรือข้อผิดพลาดของโครงสร้างพื้นฐาน
ข้อผิดพลาดเกี่ยวกับโครงสร้างพื้นฐานเกิดจากปัญหาภายใน Test Lab เช่น ข้อผิดพลาดของเครือข่ายหรือพฤติกรรมของอุปกรณ์ที่ไม่คาดคิด Test Lab ยกเลิกการทดสอบภายในที่ก่อให้เกิดข้อผิดพลาดของโครงสร้างพื้นฐานหลายครั้งก่อนที่จะรายงานผลลัพธ์ที่ไม่สามารถสรุปได้ อย่างไรก็ตาม คุณสามารถปิดใช้งานการลองใหม่เหล่านี้ได้โดยใช้ FailFast
เมื่อต้องการระบุสาเหตุของข้อผิดพลาด ให้ทำตามขั้นตอนเหล่านี้:
- ตรวจสอบการหยุดทำงานที่ทราบใน หน้าแดชบอร์ดสถานะ Firebase
ลองทดสอบอีกครั้งใน Test Lab เพื่อตรวจสอบว่าสามารถทำซ้ำได้
ลองทำการทดสอบบนอุปกรณ์หรือประเภทอุปกรณ์อื่น ถ้ามี
หากปัญหายังคงอยู่ โปรดติดต่อทีม Test Lab ใน ช่องทาง #test-lab บน Firebase Slack
การแบ่งส่วนอาจทำให้การทดสอบของคุณทำงานนานขึ้นเมื่อจำนวนชาร์ดที่คุณระบุเกินจำนวนอุปกรณ์ที่พร้อมใช้งานใน Test Lab เพื่อหลีกเลี่ยงสถานการณ์นี้ ให้ลองเปลี่ยนไปใช้อุปกรณ์อื่น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเลือกอุปกรณ์อื่น โปรดดูที่Device Capacity
เมื่อคุณส่งคำขอทดสอบ แอปของคุณจะได้รับการตรวจสอบความถูกต้องในครั้งแรก ลงนามใหม่ ฯลฯ เพื่อเตรียมพร้อมสำหรับการทดสอบบนอุปกรณ์ โดยปกติ กระบวนการนี้จะเสร็จสิ้นภายในไม่กี่วินาที แต่อาจได้รับผลกระทบจากปัจจัยต่างๆ เช่น ขนาดของแอป
หลังจากที่แอปของคุณเตรียมพร้อมแล้ว ระบบจะกำหนดเวลาการดำเนินการทดสอบและยังคงอยู่ในคิวจนกว่าอุปกรณ์จะพร้อมที่จะเรียกใช้ จนกว่าการดำเนินการทดสอบทั้งหมดจะเสร็จสิ้น สถานะเมทริกซ์จะเป็น "รอดำเนินการ" (ไม่ว่าการดำเนินการทดสอบจะอยู่ในคิวหรือกำลังทำงานอยู่ก็ตาม)
หลังจากดำเนินการทดสอบเสร็จสิ้น อาร์ติแฟกต์ทดสอบจะถูกดาวน์โหลดจากอุปกรณ์ ประมวลผล และอัปโหลดไปยัง Cloud Storage ระยะเวลาของขั้นตอนนี้อาจได้รับผลกระทบจากจำนวนและขนาดของอาร์ติแฟกต์
อาร์ติแฟกต์การดำเนินการทดสอบ (เช่น ภาพหน้าจอและไฟล์บันทึก) จะถูกจัดเก็บไว้ใน Google Cloud Storage และแสดงผลโดยตรงในคอนโซล Firebase หากดำเนินการทดสอบของคุณภายใน 90 วันที่ผ่านมา โปรดตรวจสอบว่าคุณได้กำหนดบทบาทระดับโครงการแล้ว (เจ้าของโครงการ ผู้แก้ไขโครงการ หรือผู้ดูโครงการ) โปรดตรวจสอบให้แน่ใจด้วยว่าไม่ได้เปิดใช้ Cloud Audit Logging สำหรับโปรเจ็กต์หรือองค์กรของคุณ
หากดำเนินการนานกว่า 90 วันที่ผ่านมา เป็นไปได้มากว่าส่วนทดสอบจะถูกลบโดยอัตโนมัติ คุณสามารถตรวจสอบการกำหนดค่าบัคเก็ตผลลัพธ์ได้โดยคลิกแท็บ ผลการทดสอบ ในแดชบอร์ด Test Lab ที่เก็บข้อมูลผลลัพธ์เริ่มต้นได้รับการกำหนดค่าให้เก็บออบเจ็กต์เป็นเวลา 90 วัน
หากต้องการคงส่วนทดสอบของคุณไว้ให้นานขึ้น ให้รันคำสั่ง gcloud firebase test android run
พร้อมกับแฟล็ก --results-bucket
และส่งผ่านในชื่อของที่เก็บข้อมูลผลลัพธ์ สำหรับข้อมูลเพิ่มเติม โปรดไปที่ เอกสารอ้างอิง gcloud firebase test android run
เมื่อคุณรันการทดสอบเครื่องมือ คุณอาจเห็นข้อผิดพลาดในการทดสอบซึ่งระบุผลลัพธ์บางส่วนที่มีข้อความ เช่น Test run failed to complete. Expected x tests, received y
(โดยที่ y
น้อยกว่า x
) ข้อผิดพลาดนี้หมายความว่า Test Lab ไม่สามารถแยกวิเคราะห์ logcat สำหรับเครื่องหมายเริ่มต้นหรือสิ้นสุดกรณีการทดสอบที่โดยปกติแล้วจะสร้างโดย AndroidJUnitRunner
ต่อไปนี้เป็นสาเหตุทั่วไปของปัญหานี้:
คำอธิบายปัญหา | ความละเอียดที่เป็นไปได้ |
---|---|
กรณีทดสอบไม่ทำงานเนื่องจากการหมดเวลา หากระยะเวลารวมของการทดสอบนานกว่าระยะหมดเวลาที่คุณระบุ หรือนานกว่า ระยะหมดเวลาสูงสุด Test Lab จะยกเลิกกรณีทดสอบที่เหลือ |
|
กรณีทดสอบไม่สำเร็จเนื่องจากออกก่อนเวลาอันควรหรือค้าง กรณีทดสอบอาจออกก่อนเวลาอันควรเนื่องจากมีข้อยกเว้นที่ตรวจไม่พบหรือข้อผิดพลาดในการยืนยัน กรณีทดสอบอาจติดอยู่ในวงวนไม่สิ้นสุดหรืออาจไม่สามารถดำเนินการต่อได้ ตัวอย่างเช่น หากแอปไม่แสดงมุมมองที่ถูกต้องและกรณีทดสอบไม่สามารถดำเนินการบน UI ได้ | ตรวจสอบวิดีโอและ logcat เพื่อตรวจสอบว่าการทดสอบหยุดลงที่ใด |
ตัวดำเนินการทดสอบแบบกำหนดเอง (รวมถึงส่วนขยาย AndroidJUnitRunner) ขัดข้องโดยไม่คาดคิดหรือเขียนเครื่องหมายเริ่มต้นหรือสิ้นสุดของกรณีทดสอบที่ไม่คาดคิดลงใน logcat | ตรวจสอบรหัสนักวิ่งทดสอบของคุณ |
บันทึกที่มากเกินไปถูกเขียนไปยัง logcat ซึ่งทำให้บัฟเฟอร์ล้นหรือทำให้กระบวนการ logcat หยุดทำงาน | ลดการเขียนลง logcat |
แอปที่อยู่ระหว่างการทดสอบขัดข้อง | แก้ไขข้อบกพร่องแอปของคุณ |
คำถามที่พบบ่อย
Firebase Test Lab เสนอโควต้าที่ไม่มีค่าใช้จ่ายสำหรับการทดสอบบนอุปกรณ์และสำหรับการใช้ Cloud API โปรดทราบว่าโควต้าการทดสอบจะใช้แผนราคา Firebase มาตรฐาน ในขณะที่โควต้า Cloud API ไม่ได้ใช้
โควต้าการทดสอบ
โควต้าการทดสอบจะพิจารณาจากจำนวนอุปกรณ์ที่ใช้ในการทดสอบ แผน Firebase Spark มีโควต้าการทดสอบคงที่โดยไม่มีค่าใช้จ่ายสำหรับผู้ใช้ สำหรับแผน Blaze โควต้าของคุณอาจเพิ่มขึ้นหากการใช้งาน Google Cloud เพิ่มขึ้นเมื่อเวลาผ่านไป หากคุณใช้โควต้าการทดสอบถึงโควต้าแล้ว ให้รอจนถึงวันถัดไปหรืออัปเกรดเป็นแผน Blaze หากคุณใช้แผน Spark อยู่ หากคุณใช้แผน Blaze อยู่แล้ว คุณสามารถขอเพิ่มโควต้าได้ สำหรับข้อมูลเพิ่มเติม โปรดดู โควต้าการทดสอบ
คุณสามารถตรวจสอบการใช้โควต้าการทดสอบของคุณได้ใน คอนโซล Google Cloud
โควต้า API การทดสอบระบบคลาวด์
Cloud Testing API มาพร้อมกับขีดจำกัดโควต้า 2 รายการ: คำขอต่อวันต่อโปรเจ็กต์ และคำขอต่อทุกๆ 100 วินาทีต่อโปรเจ็กต์ คุณสามารถตรวจสอบการใช้งานของคุณได้ใน คอนโซล Google Cloud
โควต้า API ผลลัพธ์ของเครื่องมือคลาวด์
Cloud Tool Results API มาพร้อมกับขีดจำกัดโควต้า 2 รายการ ได้แก่ การสืบค้นต่อวันต่อโปรเจ็กต์ และการสืบค้นต่อทุกๆ 100 วินาทีต่อโปรเจ็กต์ คุณสามารถตรวจสอบการใช้งานของคุณได้ใน คอนโซล Google Cloud
โปรดดู โควต้า Cloud API สำหรับ Test Lab สำหรับข้อมูลเพิ่มเติมเกี่ยวกับขีดจำกัดของ API หากคุณถึงโควต้า API แล้ว:
ส่งคำขอโควต้าที่สูงขึ้นโดย แก้ไขโควต้าของคุณ โดยตรงในคอนโซล Google Cloud (โปรดทราบว่าขีดจำกัดส่วนใหญ่จะตั้งไว้ที่สูงสุดตามค่าเริ่มต้น) หรือ
ขอโควต้า API ที่สูงขึ้นโดยกรอกแบบฟอร์มคำขอในคอนโซล Google Cloud หรือติดต่อ ฝ่ายสนับสนุนของ Firebase
จากแบ็กเอนด์ของคุณ คุณสามารถระบุได้ว่าการรับส่งข้อมูลมาจากอุปกรณ์ทดสอบที่โฮสต์โดย Firebase หรือไม่ โดยตรวจสอบที่อยู่ IP ต้นทางเทียบกับ ช่วง IP ของเรา
Test Lab ไม่ทำงานกับ VPC-SC ซึ่งจะบล็อกการคัดลอกแอปและส่วนทดสอบอื่นๆ ระหว่างที่จัดเก็บข้อมูลภายในของ Test Lab และที่เก็บข้อมูลผลลัพธ์ของผู้ใช้
หากต้องการตรวจจับพฤติกรรมที่ไม่สม่ำเสมอในการทดสอบของคุณ เราขอแนะนำให้ใช้ตัวเลือก--num-flaky-test-attemptsการเรียกใช้ Deflake ซ้ำจะถูกเรียกเก็บเงินหรือนับรวมในโควต้ารายวันของคุณเหมือนกับการดำเนินการทดสอบปกติ
โปรดคำนึงถึงสิ่งต่อไปนี้:
- การดำเนินการทดสอบทั้งหมดจะทำงานอีกครั้งเมื่อตรวจพบความล้มเหลว ไม่มีการสนับสนุนสำหรับการลองใหม่เฉพาะกรณีทดสอบที่ล้มเหลว
- การลอง Deflake อีกครั้งถูกกำหนดให้ทำงานพร้อมกัน แต่ไม่รับประกันว่าจะทำงานแบบขนาน เช่น เมื่อการรับส่งข้อมูลเกินจำนวนอุปกรณ์ที่มีอยู่
ใช่! Test Lab รองรับ Google Pixel Watch ตอนนี้คุณสามารถทำการทดสอบบนแอป Wear แบบสแตนด์อโลนบน Google Pixel Watch ได้แล้ว หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับอุปกรณ์ Test Lab โปรดดูที่ ทดสอบบนอุปกรณ์ที่มีอยู่
ใช่! Test Lab รองรับ Google Pixel Tablet และ Google Pixel Fold คุณสามารถทำการทดสอบบนอุปกรณ์จริงแบบสแตนด์อโลนได้ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับอุปกรณ์ Test Lab โปรดดูที่ ทดสอบบนอุปกรณ์ที่มีอยู่
หากคุณกำลังทดสอบแอปใน Firebase หรือทำการทดสอบสำหรับ รายงานก่อนการเปิดตัว ใน Play Console คุณจะตรวจสอบได้ว่ามีการทดสอบดำเนินการบนอุปกรณ์ที่โฮสต์โดย Firebase หรือไม่โดยตรวจสอบคุณสมบัติของระบบ firebase.test.lab
ใน ไฟล์ MainActivity
ของคุณ จากนั้นคุณสามารถดำเนินการคำสั่งเพิ่มเติมตามค่าบูลีนสำหรับ testLabSetting
สำหรับข้อมูลเพิ่มเติม โปรดดู พฤติกรรมการทดสอบที่ปรับเปลี่ยน
แม้ว่าบางรายการจะอยู่ในแผนงานของเรา แต่ขณะนี้เราไม่สามารถให้คำมั่นสัญญาในการสนับสนุนแพลตฟอร์มการทดสอบและการพัฒนาแอปเหล่านี้ได้ อย่างไรก็ตาม หากคุณสร้างแอปด้วยเฟรมเวิร์กที่รองรับ Espresso (เช่น Flutter) คุณสามารถเขียนการทดสอบเครื่องมือโดยใช้ Espresso จากนั้นรันการทดสอบใน Test Lab
Test Lab ไม่รองรับการสร้างความสับสนหรือลดความสับสนอย่างชัดเจน แม้ว่าแอปจะทำงานได้ แต่ข้อมูลแอปที่สับสน เช่น สแต็กเทรซ จะปรากฏว่าถูกทำให้สับสนในบันทึก
ใช่! คุณสามารถทดสอบอุปกรณ์แบบพับได้ของคุณใน สภาพและท่าทางแบบพับได้
อุปกรณ์แบบพับได้สามารถอยู่ในสถานะพับต่างๆ ได้ เช่น FLAT
(เปิดสุด) หรือ HALF_OPENED
(อยู่ระหว่างเปิดสุดและปิดสุด)
ในทางกลับกัน ท่าทางจะประกอบด้วยการวางแนวอุปกรณ์เฉพาะและสถานะพับได้ ตัวอย่างเช่น ท่าทางบนโต๊ะ ซึ่งเป็นสถานะ HALF_OPENED
ในแนวนอน หรือท่าทางหนังสือ ซึ่งเป็นสถานะ HALF_OPENED
ในแนวตั้ง
หากคุณกำลังรันการทดสอบเครื่องมือ คุณสามารถใช้ไลบรารี Jetpack WindowManager และติดตาม การทดสอบแอปของคุณบนเอกสารประกอบแบบพับได้ เพื่อทดสอบในสถานะและท่าทางที่แตกต่างกัน
อีกทางหนึ่ง สถานะที่ใช้ได้นั้นเป็นสถานะเฉพาะของอุปกรณ์และสามารถโต้ตอบได้โดยใช้ adb shell command cmd device_state
- หากต้องการแสดงรายการสถานะปัจจุบัน ให้รัน
adb shell cmd device_state state
- หากต้องการตั้งค่าหรือแทนที่สถานะปัจจุบัน ให้รัน
adb shell cmd device_state state <IDENTIFIER>
- หากต้องการรีเซ็ตสถานะ ให้รัน
adb shell cmd device_state state reset
- หากต้องการตรวจสอบสถานะที่มีอยู่ ให้รันคำสั่ง
adb shell cmd device_state print-states
บนอุปกรณ์แบบพับได้
Google Pixel Fold (รหัสรุ่น felix
)
$ adb shell cmd device_state print-states Supported states: [ DeviceState{identifier=0, name='CLOSED', app_accessible=true}, DeviceState{identifier=1, name='HALF_OPENED', app_accessible=true}, DeviceState{identifier=2, name='OPENED', app_accessible=true}, DeviceState{identifier=3, name='REAR_DISPLAY_STATE', app_accessible=true}, ]
Samsung Galaxy Z Fold4 (รหัสรุ่น q4q
)
$ adb shell cmd device_state print-states Supported states: [ DeviceState{identifier=0, name='CLOSE', app_accessible=true}, DeviceState{identifier=1, name='TENT', app_accessible=true}, DeviceState{identifier=2, name='HALF_FOLDED', app_accessible=true}, DeviceState{identifier=3, name='OPEN', app_accessible=true}, ]
คุณไม่จำเป็นต้องเพิ่ม Firebase SDK เพื่อใช้ Test Lab ซึ่งต่างจากผลิตภัณฑ์ Firebase อื่นๆ หากคุณยังไม่มีแอป คุณสามารถดาวน์โหลด APK ออนไลน์หรือสร้างแอปและ APK ทดสอบจากตัวอย่างรายการใดรายการหนึ่งใน พื้นที่เก็บข้อมูล AndroidX GitHub โปรดทราบว่าคุณต้องการเพียงไฟล์ APK ของแอปเพื่อเรียกใช้การทดสอบ Robo ในขณะที่การทดสอบเครื่องมือวัดต้องใช้ทั้งแอปและ APK ทดสอบที่สร้างจากซอร์สโค้ด สำหรับข้อมูลเพิ่มเติม โปรดอ่านเกี่ยวกับ การทดสอบด้วยเครื่องมือ
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับฟีเจอร์ Test Lab โปรดดู เริ่มต้นการทดสอบสำหรับ Android ด้วย Firebase Test Lab
การทดสอบผลต่างภาพหน้าจอ คือการยืนยันการทดสอบโดยอิงจากการเปรียบเทียบภาพหน้าจอที่ได้รับขณะทำการทดสอบกับภาพสีทองที่แสดงถึงพฤติกรรมที่คาดหวัง การทดสอบดังกล่าวอาจมีความเปราะบางในอุปกรณ์บางประเภทมากกว่าประเภทอื่นๆ เราขอแนะนำให้กำหนดเป้าหมายอุปกรณ์จำลอง Arm ( *.arm
) สำหรับการทดสอบประเภทนี้ อุปกรณ์จำลอง Arm ใช้รูปภาพที่คล้ายกันหรือเหมือนกันมากกับโปรแกรมจำลอง 'ทั่วไป' ของ Android Studio
เราขอแนะนำให้คุณตรวจสอบไลบรารีทดสอบที่สามารถช่วยทำให้การทดสอบภาพหน้าจอมีประสิทธิภาพมากขึ้นเมื่อมีการเปลี่ยนแปลงที่คาดหวัง
ใช่! อุปกรณ์เสมือนจะได้รับการอัปเดตเมื่อมีการเปลี่ยนแปลงต่อไปนี้:
- อัพเดตรูปภาพที่มีอยู่
- การเลิกใช้งานระดับ API ก่อนหน้า
- มีการเพิ่มระดับ Android API ใหม่
หากต้องการเปิดใช้งานรายงานความครอบคลุม ให้เพิ่ม coverage=true
ลงใน ช่อง environmentVariables
หากคุณใช้ Android Test Orchestrator คุณจะต้องจัดเตรียมไดเร็กทอรีเพื่อจัดเก็บผลลัพธ์การครอบคลุม:
--environment-variables coverage=true,coverageFilePath=/sdcard/Download/
หากคุณไม่ได้ใช้ Orchestrator คุณสามารถระบุเส้นทางของไฟล์ได้:
--environment-variables coverage=true,coverageFile=/sdcard/Download/coverage.ec
ข้อมูลอุปกรณ์โดยละเอียดมีอยู่ผ่าน API และสามารถเข้าถึงได้จากไคลเอนต์ gcloud โดยใช้ คำสั่งอธิบาย :
gcloud firebase test android models describe MODEL
ปัญหาที่ทราบ
การทดสอบ Robo ไม่สามารถข้ามหน้าจอลงชื่อเข้าใช้ที่กำหนดให้ผู้ใช้ดำเนินการเพิ่มเติมนอกเหนือจากการป้อนข้อมูลรับรองเพื่อลงชื่อเข้าใช้ เช่น การกรอก CAPTCHA
การทดสอบ Robo ทำงานได้ดีที่สุดกับแอปที่ใช้องค์ประกอบ UI จากเฟรมเวิร์ก UI ของ Android (รวมถึงออบเจ็กต์ View
, ViewGroup
และ WebView
) หากคุณใช้การทดสอบ Robo เพื่อออกกำลังกายแอปที่ใช้เฟรมเวิร์ก UI อื่นๆ รวมถึงแอปที่ใช้เอ็นจิ้นเกม Unity การทดสอบอาจออกโดยไม่ต้องสำรวจเลยหน้าจอแรก