เริ่มต้นด้วยการทดสอบเครื่องมือวัด

คู่มือนี้จะอธิบายวิธีเตรียมและดำเนินการทดสอบเครื่องมือโดยใช้ Firebase Test Lab หากต้องการใช้คู่มือนี้ คุณจะต้องมี การทดสอบการใช้เครื่องมือ (เขียนโดยคุณหรือทีมของคุณ) ที่ใช้เฟรมเวิร์กการทดสอบ Android ของ Espresso หรือ UI Automator การทดสอบเครื่องมือวัดสามารถทำงานได้สูงสุด 45 นาทีบนอุปกรณ์จริง และสูงสุด 60 นาทีบน อุปกรณ์เสมือน

ในขั้นตอนต่อมา คุณจะต้องอัปโหลด APK ของแอปและ APK ของการทดสอบไปยัง Firebase

(ไม่บังคับ) เพิ่มไลบรารีภาพหน้าจอลงในแอปของคุณ

Firebase Test Lab มีไลบรารี (testlab-instr-lib) ที่คุณสามารถใช้เพื่อประมวลผลภาพหน้าจอที่คุณถ่ายด้วย ScreenCapture ของ AndroidX เมื่อเรียกใช้การทดสอบเครื่องมือ เช่น การทดสอบที่เขียนโดยใช้ เฟรมเวิร์กการทดสอบ Espresso ส่วนนี้จะอธิบายวิธีสร้างออบเจ็กต์ ScreenCapture ด้วยไลบรารี AndroidX และวิธีการประมวลผลโดยใช้ testlab-instr-lib

หลังจากรันการทดสอบเครื่องมือแล้ว คุณจะดูภาพหน้าจอที่บันทึกไว้ได้ในคอนโซล Firebase

ลองใช้แอปตัวอย่าง

ดาวน์โหลด แอปตัวอย่าง NotePad เพื่อลองใช้ฟังก์ชันนี้ ความสามารถในการจับภาพหน้าจอได้รวมอยู่ในโครงการ NotePad แล้ว

ขั้นตอนที่ 1 เพิ่มไลบรารีภาพหน้าจอในโครงการของคุณ

  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()
        }
    }
    // ...
    
  2. ในไฟล์ Gradle ของ โมดูล (ระดับแอป) (โดยปกติคือ <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle ) ให้เพิ่มการพึ่งพาสำหรับ Test Lab ไลบรารีภาพหน้าจอ

    dependencies {
      // ...
      // Add Test Lab's instrumentation test screenshot library:
      androidTestImplementation("com.google.firebase:testlab-instr-lib:0.2")
      // ...
    
  3. ในไฟล์ 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>
    ...
    
  4. ในไฟล์ AndroidManifest.xml ของแอป ให้เพิ่มบรรทัดต่อไปนี้ภายในองค์ประกอบ <manifest> :

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  5. ในไฟล์ 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 :

  • ถ่ายภาพ 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

  • ประมวลผล 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 สร้างและรันการทดสอบของคุณ

  1. สร้างแอปของคุณและทดสอบ APK (ดูคำแนะนำใน การทดสอบแอปของคุณ )

  2. อัปโหลดไฟล์ APK ไปยัง แดชบอร์ด Test Lab ของคอนโซล Firebase

  3. สุดท้าย ทำการทดสอบของคุณ

ขั้นตอนที่ 4 ดูภาพหน้าจอทดสอบของคุณ

หลังจากการทดสอบเสร็จสิ้น คุณจะดูภาพหน้าจอที่ถ่ายในคอนโซล Firebase ได้

  1. ในแท็บ การทดสอบ ให้เลือกการทดสอบที่เสร็จสิ้นแล้ว จากนั้นคลิกแท็บ ผลลัพธ์

  2. เลือกการทดสอบของคุณอีกครั้ง จากนั้นคลิกแท็บ ภาพหน้าจอ ที่ปรากฏขึ้น

(ไม่บังคับ) เปิดใช้งานคุณสมบัติการทดสอบเพิ่มเติม

คุณสามารถเปิดใช้งานฟีเจอร์ต่อไปนี้ในการทดสอบของคุณก่อนที่จะรันด้วย Test Lab:

เปิดใช้งานออเคสตรา

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 เครื่องและเรียกใช้ชุดย่อยของการทดสอบบนอุปกรณ์แต่ละเครื่อง ซึ่งหมายความว่ากรณีการทดสอบแบบแยกส่วนอาจส่งผลให้เกิดการดำเนินการทดสอบหลายรายการต่ออุปกรณ์ อย่างไรก็ตาม กรณีทดสอบที่ไม่ใช่การแบ่งส่วนจะส่งผลให้มีการดำเนินการทดสอบหนึ่งครั้งต่ออุปกรณ์ หากต้องการเรียนรู้แนวคิด Test Lab โปรดดู แนวคิดหลัก

หากต้องการเปิดใช้งานการแบ่งส่วนการทดสอบในคอนโซล Firebase ให้ทำตามขั้นตอนเหล่านี้:

  1. ใน การตั้งค่าการทดสอบเครื่องมือวัด คลิก ตัวเลือกเพิ่มเติม

  2. ในส่วน ชาร์ด ให้ป้อนจำนวนชาร์ดที่คุณต้องการเรียกใช้

การเรียกเก็บเงินสำหรับชิ้นส่วนทดสอบ

Test Lab ใช้งานชาร์ดของคุณโดยใช้ประโยชน์จาก กลไกการแบ่งชาร์ดในตัวของ AndroidJUnitRunner เพื่อหลีกเลี่ยงไม่ให้ถูกเรียกเก็บเงินสำหรับการปั่นชิ้นส่วนเปล่า (ชิ้นส่วนที่ไม่มีกรณีทดสอบที่กำหนด) จำนวนชิ้นส่วนที่คุณสร้างควรน้อยกว่าจำนวนกรณีทดสอบทั้งหมด โดยทั่วไปเป็นความคิดที่ดีที่จะกำหนดกรณีทดสอบ 2-10 กรณีต่อชาร์ด ทั้งนี้ขึ้นอยู่กับระยะเวลาในการรันกรณีทดสอบแต่ละกรณี

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเรียกเก็บเงิน โปรดอ่าน การใช้งาน โควต้า และการเรียกเก็บเงิน