Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

คู่มือนี้อธิบายวิธีเตรียมและเรียกใช้การทดสอบเครื่องมือโดยใช้ Firebase Test Lab หากต้องการใช้คู่มือนี้ คุณต้องมี การทดสอบเครื่องมือวัด (เขียนโดยคุณหรือทีมของคุณ) ที่ใช้กรอบการทดสอบ Espresso หรือ UI Automator 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 ระดับรูท (ระดับโครงการ) ของโครงการทดสอบของคุณ ( build.gradle ) ให้เพิ่มที่เก็บ Maven ของ Google ลงในส่วนที่เก็บทุกส่วน:

    buildscript {
    
      repositories {
        // Add the following line:
        google()  // Google's Maven repository
      }
    
      dependencies {
        // ...
    
        // Check that you have the following line (if not, add it):
        classpath 'com.google.gms:google-services:4.3.8'  // Google Services plugin
      }
    }
    
    allprojects {
      // ...
    
      repositories {
        // Add the following line:
        google()  // Google's Maven repository
        // ...
      }
    }
  2. ในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ app/build.gradle ) ให้เพิ่มการอ้างอิงสำหรับไลบรารีภาพหน้าจอของ 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. อัปโหลดไฟล์ APK ไปยัง แดชบอร์ด Test Lab ของคอนโซล Firebase

  3. สุดท้าย เรียกใช้การทดสอบของคุณ

ขั้นตอนที่ 4 ดูภาพหน้าจอทดสอบของคุณ

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

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

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

(ไม่บังคับ) เปิดใช้งานคุณสมบัติการทดสอบเพิ่มเติม

คุณสามารถเปิดใช้งานคุณสมบัติต่อไปนี้ในการทดสอบของคุณก่อนที่จะรันด้วย Test Lab:

เปิดใช้งาน Orchestrator

Android Test Orchestrator เป็นเครื่องมือที่เรียกใช้การทดสอบเครื่องมือแต่ละรายการของแอปโดยแยกจากกัน Test Lab ใช้ Orchestrator เวอร์ชันล่าสุดเสมอ

ในการเปิดใช้งาน Orchestrator สำหรับ Test Lab ใน การตั้งค่าการทดสอบเครื่องมือ ให้ คลิก ตัวเลือกเพิ่มเติม > เรียกใช้ด้วย Orchestrator

ประโยชน์และข้อเสีย

  • ประโยชน์: ไม่มีสถานะที่ใช้ร่วมกัน การทดสอบแต่ละครั้งทำงานในอินสแตนซ์เครื่องมือวัดของตนเอง ดังนั้นสถานะที่ใช้ร่วมกันจะไม่สะสมในการทดสอบ
  • ประโยชน์: เกิดการขัดข้องแบบแยกส่วน หากการทดสอบขัดข้อง เฉพาะเครื่องมือนั้นเท่านั้นที่จะยุติ และการทดสอบอื่นๆ ในชุดของคุณยังคงสามารถทำงานได้
  • ข้อเสียเปรียบ: รันไทม์ได้นาน ขึ้น การทดสอบแต่ละครั้งเรียกใช้อินสแตนซ์เครื่องมือวัดของตัวเอง หมายความว่ากระบวนการทดสอบโดยรวมจะใช้เวลานานกว่าเล็กน้อย หากไม่เลือก เวลาทำงานที่เพิ่มขึ้นอาจส่งผลต่อ การใช้โควต้าหรือเวลาที่เรียกเก็บเงิน และอาจทำให้อุปกรณ์ ถึงขีดจำกัดการหมดเวลา

เปิดใช้การแบ่งกลุ่ม

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

การแบ่งกลุ่มการทดสอบทำงานอย่างไร

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

คุณสามารถเปิดใช้การแบ่งกลุ่มการทดสอบในคอนโซล Firebase:

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

  2. ในส่วน Sharding ให้ป้อนจำนวนของ Sharding ที่คุณต้องการเรียกใช้

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

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

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