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

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

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

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

Firebase Test Lab มีไลบรารี (testlab-instr-lib) ที่คุณสามารถ เพื่อประมวลผลภาพหน้าจอที่คุณถ่ายด้วย การจับภาพหน้าจอ เมื่อเรียกใช้การทดสอบเครื่องมือ เช่น การทดสอบที่เขียนโดยใช้ เฟรมเวิร์กการทดสอบ 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 ครั้ง ต่อชาร์ด

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