คู่มือนี้อธิบายวิธีเตรียมความพร้อมและเรียกใช้การทดสอบการใช้เครื่องมือโดยใช้ Firebase Test Lab หากต้องการใช้คู่มือนี้ คุณจะต้องมี การทดสอบการใช้เครื่องมือ (ที่คุณหรือทีมของคุณเป็นผู้เขียน) ที่ใช้ เอสเพรสโซ หรือตัวดำเนินการ UI อัตโนมัติ เฟรมเวิร์กการทดสอบของ Android การทดสอบเครื่องมือวัดจะทํางานได้สูงสุด 45 นาทีในอุปกรณ์จริง และสูงสุด 60 นาทีในอุปกรณ์เสมือน
ในขั้นตอนต่อๆ ไป คุณจะอัปโหลด APK ของแอปและ APK ของการทดสอบไปยัง Firebase
(ไม่บังคับ) เพิ่มคลังภาพหน้าจอลงในแอป
Firebase Test Lab มีไลบรารี (testlab-instr-lib) ที่คุณสามารถใช้เพื่อประมวลผลภาพหน้าจอที่ถ่ายด้วย ScreenCapture ของ AndroidX เมื่อทำการทดสอบเครื่องมือวัดผล เช่น การทดสอบที่เขียนโดยใช้เฟรมเวิร์กการทดสอบ Espresso
ส่วนนี้จะอธิบายวิธีสร้างออบเจ็กต์ ScreenCapture
ด้วย AndroidX
ไลบรารีและวิธีประมวลผลโดยใช้ testlab-instr-lib
หลังจากการทดสอบเครื่องมือวัดผลทํางานแล้ว คุณสามารถดูภาพหน้าจอที่บันทึกไว้ได้ในคอนโซล Firebase
ลองใช้แอปตัวอย่าง
ดาวน์โหลดแอปตัวอย่างของ NotePad เพื่อลองใช้ฟังก์ชันนี้ ความสามารถในการจับภาพหน้าจอมีอยู่แล้ว ซึ่งรวมอยู่ในโครงการ NotePad
ขั้นตอนที่ 1 เพิ่มไลบรารีภาพหน้าจอลงในโปรเจ็กต์
ในไฟล์ Gradle แบบการตั้งค่าระดับรากของโปรเจ็กต์ทดสอบ (
settings.gradle.kts
หรือsettings.gradle
) เพิ่มที่เก็บ Maven ของ Google ของทุกส่วนrepositories
:pluginManagement { repositories { // Add the following line: google() // Google's Maven repository mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { // Add the following line: google() // Google's Maven repository mavenCentral() } } // ...
ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติแล้ว
<project>/<app-module>/build.gradle.kts
หรือ<project>/<app-module>/build.gradle
) ให้เพิ่มทรัพยากร Dependency สำหรับ คลังภาพหน้าจอ Test Labdependencies { // ... // Add Test Lab's instrumentation test screenshot library: androidTestImplementation("com.google.firebase:testlab-instr-lib:0.2") // ...
ในไฟล์
AndroidManifest.xml
ของการทดสอบ ให้ลงทะเบียนFirebaseScreenCaptureProcessor
ในแท็กข้อมูลเมตาภายในแท็ก องค์ประกอบ<instrumentation>
นอกจากนี้ คุณยังระบุตัวประมวลผลเป็นอาร์กิวเมนต์ใน AndroidJUnitRunner แทนได้ด้วย (ดูวิธีการได้ในเอกสารอ้างอิง AndroidJUnitRunner)<instrumentation // Check that you have the following line (if not, add it): android:name="androidx.test.runner.AndroidJUnitRunner" // Specifies AndroidJUnitRunner as the test runner android:targetPackage="com.your.package.name"> // Add the following: <meta-data android:name="screenCaptureProcessors" android:value="com.google.firebase.testlab.screenshot.FirebaseScreenCaptureProcessor" /> </instrumentation> ...
ในไฟล์
AndroidManifest.xml
ของแอป ให้เพิ่มบรรทัดต่อไปนี้ภายในส่วน องค์ประกอบ<manifest>
:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
ในไฟล์
AndroidManifest.xml
ให้ระบุสิทธิ์ของระบบสำหรับแอป ด้วยการเพิ่มบรรทัดต่อไปนี้ภายในแท็ก<manifest>
หากคุณกำลังทดสอบ ใน Android 10 (API ระดับ 29) ขึ้นไป ให้ละเว้นWRITE_EXTERNAL_STORAGE
(แอปของคุณไม่ต้องใช้สิทธิ์นี้เพื่ออ่านและ เขียนภาพหน้าจอไปยังอุปกรณ์)<manifest ... > <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> ... </manifest>
ขั้นตอนที่ 2 ถ่ายภาพหน้าจอระหว่างการทดสอบ
เมื่อใดก็ได้ของการทดสอบที่คุณต้องการจับภาพหน้าจอ ให้เรียกใช้
Screenshot.capture()
จากไลบรารี AndroidX ซึ่งจะสร้าง
ScreenCapture
ออบเจ็กต์
เมื่อคุณเรียกใช้ process()
ในออบเจ็กต์ ScreenCapture
ระบบจะประมวลผลออบเจ็กต์ดังกล่าว
โดยใช้ ScreenCaptureProcessor
ซึ่งลงทะเบียนในAndroidManifest.xml
โปรดทราบว่า
ระบบจะใช้ BasicScreenCaptureProcessor
หากไม่มีการลงทะเบียนผู้ประมวลผลข้อมูล
เนื่องจากคุณได้ลงทะเบียน FirebaseScreenCaptureProcessor
ภาพหน้าจอของคุณจะ
ประมวลผลผ่าน FirebaseScreenCaptureProcessor
และจะพร้อมใช้งาน
ให้คุณด้วยผลลัพธ์เมื่อทำการทดสอบกับ Firebase Test Lab
ตัวอย่างกรณีการใช้งานสำหรับการสร้าง ScreenCapture
จับภาพหน้าจอแบบเต็มบน API Build.VERSION_CODES.JELLY_BEAN_MR2 และ ด้านบน:
Screenshot.capture()
ทำกิจกรรม
ScreenCapture
ในทุกระดับ API โปรดทราบว่านี่คือ ตัวเลือกเฉพาะสำหรับอุปกรณ์ที่อยู่ต่ำกว่า Build.VERSION_CODES.JELLY_BEAN_MR2@Rule public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class); ... Screenshot.capture(activityRule.getActivity()); ...
ตัวอย่างกรณีการใช้งานสำหรับการประมวลผลการจับภาพหน้าจอ
ประมวลผล
ScreenCapture
ผ่านFirebaseScreenCaptureProcessor
Screenshot.capture().process();
ประมวลผล
ScreenCapture
ผ่านScreenCaptureProcessor
ที่ระบุ (ซึ่งจะช่วยให้ไม่ต้องลงทะเบียนโปรเซสเซอร์)Set<ScreenCaptureProcessor> processors = new HashSet<>(); processors.add(new FirebaseScreenCaptureProcessor()); Screenshot.capture().process(processors);
ตั้งชื่อและรูปแบบของ
ScreenCapture
และประมวลผลโดยใช้ ผู้ประมวลผลข้อมูลที่ลงทะเบียน:Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
ขั้นตอนที่ 3 สร้างและทำการทดสอบ
สร้างแอปและทดสอบ APK (ดู ทดสอบแอป )
อัปโหลดไฟล์ APK ไปยังหน้าแดชบอร์ด Test Lab ของคอนโซล Firebase
ขั้นตอนสุดท้าย ให้เรียกใช้การทดสอบ
ขั้นตอนที่ 4 ดูภาพหน้าจอการทดสอบ
หลังจากการทดสอบเสร็จสิ้นแล้ว คุณสามารถดูภาพหน้าจอที่ถ่ายไว้ในคอนโซล Firebase
ในแท็บการทดสอบ ให้เลือกการทดสอบที่เสร็จสมบูรณ์ แล้วคลิกแท็บผลลัพธ์
เลือกการทดสอบอีกครั้ง แล้วคลิกแท็บภาพหน้าจอที่ปรากฏขึ้น
(ไม่บังคับ) เปิดใช้ฟีเจอร์ทดสอบเพิ่มเติม
คุณสามารถเปิดใช้งานคุณลักษณะต่อไปนี้ในการทดสอบก่อนที่จะใช้กับ Test Lab:
เปิดใช้ Orchestrator
Android Test Orchestrator เป็นเครื่องมือที่เรียกใช้การทดสอบการใช้เครื่องมือแต่ละรายการของแอปอย่างอิสระ Test Lab ใช้ Orchestrator เวอร์ชันล่าสุดเสมอ
หากต้องการเปิดใช้ Orchestrator สำหรับ Test Lab ในการทดสอบการใช้เครื่องมือ การตั้งค่า คลิกตัวเลือกเพิ่มเติม > เรียกใช้ด้วย Orchestrator
เมื่อใช้ Orchestrator คุณจะได้รับสิทธิประโยชน์ต่อไปนี้
- ไม่มีสถานะที่แชร์ การทดสอบแต่ละรายการจะทำงานของตัวเอง อินสแตนซ์การวัดคุม ดังนั้นสถานะที่แชร์จะไม่รวบรวมจากการทดสอบต่างๆ
- ข้อขัดข้องที่แยกไว้ หากการทดสอบขัดข้อง จะมีเพียง การใช้เครื่องมือจะสิ้นสุดลง และการทดสอบอื่นๆ ในชุดโปรแกรมของคุณจะยังคงทำงานอยู่
โปรดทราบว่าเมื่อใช้ Orchestrator การทดสอบแต่ละรายการจะเรียกใช้ด้วยตัวเอง อินสแตนซ์การวัดคุม ซึ่งหมายความว่า กระบวนการของแอปจะเริ่มต้นใหม่หลังจาก กรอบการทดสอบทั้งหมด ซึ่งส่งผลให้เวลาทำงานเพิ่มขึ้นอาจส่งผลต่อ การใช้งานโควต้าหรือเวลาที่เรียกเก็บเงิน และอาจ ทำให้คุณใช้อุปกรณ์เกินจำนวน ขีดจำกัดการหมดเวลา หากคุณลดจำนวนแอป ระยะเวลาเริ่มต้น ค่าใช้จ่ายในการดำเนินการนี้จะสั้นลง
หากต้องการตั้งค่าตัวเลือกเพิ่มเติมสำหรับ Orchestrator ให้ระบุตัวเลือกดังกล่าวผ่าน
ช่อง environmentVariables
เช่น หากต้องการใช้ clearPackageData
ให้ใช้
ใน gcloud:
--environment-variables clearPackageData=true
เปิดใช้การแยกข้อมูล
การชาร์ดทดสอบจะแบ่งชุดการทดสอบออกเป็นกลุ่มย่อย (ชาร์ด) ที่เรียกใช้ อย่างโดดเดี่ยว Test Lab จะเรียกใช้ชาร์ดแต่ละรายการพร้อมกันโดยอัตโนมัติ โดยใช้อุปกรณ์หลายเครื่องและทําการทดสอบทั้งชุดได้ในเวลาน้อยลง
ตัวอย่างเช่น หากคุณสร้างชาร์ด N ชาร์ด สำหรับอุปกรณ์แต่ละเครื่องที่คุณเลือก Test Lab จะหมุน N อุปกรณ์ที่เหมือนกันและทำการทดสอบชุดย่อยบนอุปกรณ์แต่ละเครื่อง ซึ่งหมายความว่า กรอบการทดสอบที่ชาร์ดอาจส่งผลให้เกิดการดำเนินการทดสอบหลายครั้งต่ออุปกรณ์ 1 เครื่อง อย่างไรก็ตาม กรอบการทดสอบที่ไม่ได้แบ่งกลุ่มจะส่งผลให้มีการดำเนินการทดสอบ 1 ครั้งต่ออุปกรณ์ หากต้องการดูแนวคิด Test Lab โปรดดูแนวคิดหลัก
หากต้องการเปิดใช้ทดสอบชาร์ดดิ้งในคอนโซล Firebase ให้ทำตามขั้นตอนต่อไปนี้
ในการตั้งค่าการทดสอบการใช้เครื่องมือ คลิกตัวเลือกเพิ่มเติม
ในส่วนชาร์ด ให้ป้อนจำนวนชาร์ดที่ต้องการเรียกใช้
การเรียกเก็บเงินสำหรับชาร์ดทดสอบ
Test Lab นำชาร์ดของคุณไปใช้โดยใช้ประโยชน์จาก AndroidJUnitRunner ที่มีมาในตัว กลไกชาร์ดดิ้ง เพื่อหลีกเลี่ยงการเรียกเก็บเงินสำหรับปั่นชาร์ดว่าง (ชาร์ดที่ไม่มีการกำหนด กรอบการทดสอบ) จำนวนชาร์ดที่คุณ สร้างควรน้อยกว่าจำนวนกรอบการทดสอบทั้งหมด โดยปกติแล้ว คุณควรกำหนดเฟรมทดสอบ 2-10 รายการต่อกลุ่มย่อย ทั้งนี้ขึ้นอยู่กับระยะเวลาที่เฟรมทดสอบแต่ละรายการใช้เวลาในการเรียกใช้
อ่านข้อมูลเพิ่มเติมเกี่ยวกับการเรียกเก็บเงินได้ที่การใช้งาน โควต้า และการเรียกเก็บเงิน