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

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

  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 รายการต่อกลุ่มย่อย ทั้งนี้ขึ้นอยู่กับระยะเวลาที่เฟรมทดสอบแต่ละรายการใช้เวลาในการเรียกใช้

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