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

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

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

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

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

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

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

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