เริ่มต้นใช้งานการทดสอบการวัดคุม

คู่มือนี้อธิบายวิธีเตรียมความพร้อมและเรียกใช้การทดสอบการใช้เครื่องมือโดยใช้ 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) ให้เพิ่มทรัพยากร Dependency สำหรับคลังภาพหน้าจอ 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

  • ถ่ายภาพหน้าจอแบบเต็มใน 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 สร้างและเรียกใช้การทดสอบ

  1. สร้างแอปและทดสอบ APK (ดูวิธีการที่หัวข้อทดสอบแอป)

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

  3. สุดท้าย ให้ทำการทดสอบ

ขั้นตอนที่ 4 ดูภาพหน้าจอการทดสอบ

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

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

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

(ไม่บังคับ) เปิดใช้ฟีเจอร์การทดสอบเพิ่มเติม

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

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

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

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

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

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

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