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

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

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

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

Firebase ห้องปฏิบัติการทดสอบรวมถึงห้องสมุด (testlab-INSTR-lib) ที่คุณสามารถใช้ในการประมวลผลหน้าจอใด ๆ ที่คุณใช้เวลากับ AndroidX ของ ScreenCapture เมื่อใช้การทดสอบวัดเช่นการทดสอบเขียนโดยใช้ กรอบทดสอบเอสเพรสโซ่ ในส่วนนี้จะอธิบายวิธีการสร้าง 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. ในโมดูลของคุณ (app ระดับ) ไฟล์ Gradle (ปกติ app/build.gradle ), เพิ่มการพึ่งพาห้องสมุดห้องปฏิบัติการทดสอบหน้าจอ

    dependencies {
      // ...
      // Add Test Lab's instrumentation test screenshot library:
      androidTestCompile `com.google.firebase:testlab-instr-lib:02`
      // ...
    }
  3. ในไฟล์ AndroidManifest.xml ทดสอบของคุณลงทะเบียน FirebaseScreenCaptureProcessor ในแท็ก meta ข้อมูลภายใน <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 ได้รับอนุญาต (app ของคุณไม่ต้องได้รับอนุญาตนี้เพื่อที่จะอ่านและเขียนภาพหน้าจอไปยังอุปกรณ์)

    <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 ห้องปฏิบัติการทดสอบ

ตัวอย่างเช่นกรณีการใช้งานสำหรับการสร้าง ScreenCapture :

  • ใช้ 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. สร้าง app และการทดสอบ APK ที่คุณ (ดู การทดสอบแอปของคุณ สำหรับคำแนะนำ)

  2. อัปโหลดไฟล์ APK ไปยัง แผงควบคุมห้องปฏิบัติการทดสอบ ของคอนโซล Firebase

  3. สุดท้าย ทำการทดสอบของคุณ

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

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

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

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

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

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

เปิดใช้งาน Orchestrator

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

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

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

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

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

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

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

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

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

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

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

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

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

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