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

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

  • ดำเนินการ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. ในคอนโซล Firebase ให้ไปที่ DevOps และการมีส่วนร่วม > Test Lab แล้วอัปโหลดไฟล์ APK

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

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

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

  1. ในคอนโซล Firebase ให้ไปที่ DevOps และการมีส่วนร่วม > Test Lab

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

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

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

คุณสามารถเปิดใช้ฟีเจอร์ต่อไปนี้ในการทดสอบก่อนที่จะเรียกใช้ด้วย 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. ในส่วน Sharding ให้ป้อนจำนวนชาร์ดที่ต้องการเรียกใช้

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

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

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