Làm quen với kiểm thử đo lường

Hướng dẫn này mô tả cách chuẩn bị và chạy kiểm thử đo lường bằng Firebase Test Lab. Để sử dụng hướng dẫn này, bạn cần có một kiểm thử đo lường (do bạn hoặc nhóm của bạn viết) sử dụng khung kiểm thử Android Espresso hoặc UI Automator. Kiểm thử đo lường có thể chạy tối đa 45 phút trên thiết bị thực và tối đa 60 phút trên thiết bị ảo.

Trong các bước sau, bạn sẽ tải APK của ứng dụng và APK của kiểm thử lên Firebase.

(Không bắt buộc) Thêm thư viện ảnh chụp màn hình vào ứng dụng

Firebase Test Lab bao gồm một thư viện (testlab-instr-lib) mà bạn có thể sử dụng để xử lý mọi ảnh chụp màn hình mà bạn chụp bằng ScreenCapture của AndroidX khi chạy kiểm thử đo lường, chẳng hạn như các kiểm thử được viết bằng khung kiểm thử Espresso. Phần này mô tả cách tạo đối tượng ScreenCapture bằng thư viện AndroidX và cách xử lý các đối tượng đó bằng testlab-instr-lib.

Sau khi chạy kiểm thử đo lường, bạn có thể xem ảnh chụp màn hình đã chụp trong bảng điều khiển Firebase.

Dùng thử ứng dụng mẫu

Tải ứng dụng mẫu NotePad xuống để dùng thử chức năng này. Tính năng chụp ảnh màn hình đã được tích hợp vào dự án NotePad.

Bước 1. Thêm thư viện ảnh chụp màn hình vào dự án

  1. Trong tệp Gradle cài đặt cấp gốc của dự án kiểm thử (settings.gradle.kts hoặc settings.gradle), hãy thêm kho lưu trữ Maven của Google vào mọi mục 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. Trong tệp Gradle mô-đun (cấp ứng dụng) (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle), hãy thêm phần phụ thuộc cho thư viện ảnh chụp màn hình Test Lab.

    dependencies {
      // ...
      // Add Test Lab's instrumentation test screenshot library:
      androidTestImplementation("com.google.firebase:testlab-instr-lib:0.2")
      // ...
    
  3. Trong tệp AndroidManifest.xml của kiểm thử, hãy đăng ký FirebaseScreenCaptureProcessor trong thẻ siêu dữ liệu trong phần tử <instrumentation>. Bạn cũng có thể chỉ định bộ xử lý làm đối số trong AndroidJUnitRunner (xem tài liệu tham khảo về AndroidJUnitRunner để biết hướng dẫn cách thực hiện).

    <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. Trong tệp AndroidManifest.xml của ứng dụng, hãy thêm các dòng sau vào phần tử <manifest>:

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  5. Trong tệp AndroidManifest.xml, hãy chỉ định quyền hệ thống cho ứng dụng bằng cách thêm các dòng sau vào thẻ <manifest>. Nếu bạn đang kiểm thử trên Android 10 (API cấp 29) trở lên, hãy bỏ qua quyền WRITE_EXTERNAL_STORAGE (ứng dụng của bạn không yêu cầu quyền này để đọc và ghi ảnh chụp màn hình vào thiết bị).

    <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>

Bước 2. Chụp ảnh màn hình trong quá trình kiểm thử

Bất cứ lúc nào trong quá trình kiểm thử mà bạn muốn chụp ảnh màn hình, hãy gọi phương thức Screenshot.capture() từ thư viện AndroidX. Thao tác này sẽ tạo một đối tượng ScreenCapture. Khi bạn gọi process() trên đối tượng ScreenCapture, đối tượng này sẽ được xử lý bằng cách sử dụng ScreenCaptureProcessor đã đăng ký trong AndroidManifest.xml. Xin lưu ý rằng BasicScreenCaptureProcessor sẽ được sử dụng nếu không có trình xử lý nào được đăng ký. Vì bạn đã đăng ký FirebaseScreenCaptureProcessor, nên ảnh chụp màn hình sẽ được xử lý thông qua FirebaseScreenCaptureProcessor và sẽ có sẵn cho bạn cùng với kết quả khi bạn chạy kiểm thử bằng Firebase Test Lab.

Ví dụ về các trường hợp sử dụng quy tắc tạo ScreenCapture:

  • Chụp toàn bộ ScreenCapture trên API Build.VERSION_CODES.JELLY_BEAN_MR2 trở lên:

    Screenshot.capture()
    
  • Lấy ScreenCapture của Hoạt động ở bất kỳ cấp độ API nào. Xin lưu ý rằng đây là tuỳ chọn duy nhất dành cho các thiết bị thấp hơn Build.VERSION_CODES.JELLY_BEAN_MR2.

    @Rule
      public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class);
    ...
    Screenshot.capture(activityRule.getActivity());
    ...
    

Ví dụ về trường hợp sử dụng để xử lý ScreenCapture

  • Xử lý ScreenCapture thông qua FirebaseScreenCaptureProcessor:

    Screenshot.capture().process();
    
  • Xử lý ScreenCapture thông qua ScreenCaptureProcessor đã chỉ định (điều này cho phép bạn bỏ qua việc đăng ký trình xử lý):

    Set<ScreenCaptureProcessor> processors = new HashSet<>();
    processors.add(new FirebaseScreenCaptureProcessor());
    Screenshot.capture().process(processors);
    
  • Đặt tên và định dạng của ScreenCapture rồi xử lý bằng trình xử lý đã đăng ký:

    Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
    

Bước 3. Tạo và chạy kiểm thử

  1. Tạo ứng dụng và kiểm thử APK (xem phần Kiểm thử ứng dụng để biết hướng dẫn).

  2. Tải tệp APK lên trang tổng quan Test Lab của bảng điều khiển Firebase.

  3. Cuối cùng, hãy chạy kiểm thử.

Bước 4. Xem ảnh chụp màn hình kiểm thử

Sau khi kiểm thử xong, bạn có thể xem mọi ảnh chụp màn hình được chụp trong bảng điều khiển Firebase.

  1. Trong thẻ Tests (Kiểm thử), hãy chọn kiểm thử đã hoàn tất, sau đó nhấp vào thẻ Results (Kết quả).

  2. Chọn lại thử nghiệm của bạn, rồi nhấp vào thẻ Ảnh chụp màn hình xuất hiện.

(Không bắt buộc) Bật các tính năng kiểm thử bổ sung

Bạn có thể bật các tính năng sau trong kiểm thử trước khi chạy kiểm thử bằng Test Lab:

Bật Trình điều phối

Android Test Orchestrator là một công cụ chạy độc lập từng bài kiểm thử đo lường của ứng dụng. Test Lab luôn sử dụng phiên bản mới nhất của Trình điều phối.

Để bật Orchestrator cho Test Lab, trong phần thiết lập kiểm thử đo lường, hãy nhấp vào Tuỳ chọn bổ sung > Chạy bằng Orchestrator.

Khi sử dụng Orchestrator, bạn sẽ được hưởng những lợi ích sau:

  • Không có trạng thái dùng chung. Mỗi bài kiểm thử chạy trong một thực thể đo lường riêng, vì vậy, trạng thái dùng chung sẽ không tích luỹ giữa các bài kiểm thử.
  • Sự cố riêng lẻ. Nếu một bài kiểm thử gặp sự cố, thì chỉ có quy trình đo lường đó bị chấm dứt và các bài kiểm thử khác trong bộ kiểm thử của bạn vẫn có thể chạy.

Xin lưu ý rằng khi bạn sử dụng Trình điều phối, mỗi lần kiểm thử sẽ chạy một thực thể đo lường riêng, tức là quy trình ứng dụng sẽ được khởi động lại sau mỗi trường hợp kiểm thử. Thời gian chạy tăng lên có thể ảnh hưởng đến mức sử dụng hạn mức hoặc thời gian tính phí và có thể khiến bạn vượt quá giới hạn thời gian chờ của thiết bị. Nếu bạn giảm thời gian khởi động của ứng dụng, thì mức hao tổn này sẽ ngắn hơn.

Để đặt các tuỳ chọn bổ sung cho Trình điều phối, hãy chỉ định các tuỳ chọn đó thông qua trường environmentVariables. Ví dụ: để sử dụng clearPackageData, hãy sử dụng tuỳ chọn này trong gcloud:

--environment-variables clearPackageData=true

Bật tính năng phân đoạn

Tính năng phân đoạn kiểm thử chia một tập hợp kiểm thử thành các nhóm con (phân đoạn) chạy riêng biệt. Test Lab tự động chạy song song từng phân đoạn bằng nhiều thiết bị và hoàn tất toàn bộ bộ kiểm thử trong thời gian ngắn hơn.

Ví dụ: nếu bạn tạo N phân đoạn, thì đối với mỗi thiết bị bạn chọn, Test Lab sẽ khởi động N thiết bị giống hệt nhau và chạy một tập hợp con các chương trình kiểm thử trên mỗi thiết bị. Điều này có nghĩa là các trường hợp kiểm thử được phân đoạn có thể dẫn đến nhiều lần thực thi kiểm thử trên mỗi thiết bị. Tuy nhiên, các trường hợp kiểm thử không phân đoạn sẽ dẫn đến một lần thực thi kiểm thử trên mỗi thiết bị. Để tìm hiểu các khái niệm về Test Lab, hãy xem phần Các khái niệm chính.

Để bật tính năng phân đoạn kiểm thử trong bảng điều khiển Firebase, hãy làm theo các bước sau:

  1. Trong phần thiết lập kiểm thử đo lường,hãy nhấp vào Tuỳ chọn bổ sung.

  2. Trong phần Phân đoạn, hãy nhập số lượng phân đoạn mà bạn muốn chạy.

Thanh toán cho các phân đoạn kiểm thử

Test Lab triển khai các mảnh bằng cách tận dụng cơ chế phân mảnh tích hợp sẵn của AndroidJUnitRunner. Để tránh bị tính phí khi tạo các phân đoạn trống (phân đoạn không có trường hợp kiểm thử được chỉ định), số lượng phân đoạn bạn tạo phải ít hơn tổng số trường hợp kiểm thử. Tuỳ thuộc vào thời gian chạy của mỗi trường hợp kiểm thử, bạn nên chỉ định 2-10 trường hợp kiểm thử cho mỗi phân mảnh.

Để biết thêm thông tin về việc thanh toán, hãy đọc bài viết Mức sử dụng, hạn mức và việc thanh toán.