Kiểm thử đo lường

Trước tiên, hãy đọc bài viết Kiểm thử ứng dụng trên developer.android.com. Xin lưu ý rằng có một số điểm khác biệt về cách sử dụng kiểm thử đo lường trong quá trình kiểm thử nền tảng.

Tóm lại, kiểm thử đo lường cung cấp một môi trường phiên chạy thử nghiệm đặc biệt được khởi chạy thông qua lệnh am instrument. Trong đó, quy trình ứng dụng được nhắm mục tiêu sẽ khởi động lại và khởi chạy bằng ngữ cảnh ứng dụng cơ bản, đồng thời một luồng đo lường sẽ bắt đầu bên trong quy trình ứng dụng VM. Mã kiểm thử của bạn bắt đầu thực thi trên luồng đo lường này và được cung cấp một thực thể Instrumentation giúp truy cập vào ngữ cảnh ứng dụng và API để thao tác với quy trình ứng dụng đang kiểm thử.

Khái niệm chính

  • một đo lường phải được khai báo trong gói ứng dụng, với <instrumentation> được lồng trong <manifest> của tệp kê khai gói ứng dụng.
  • tệp kê khai gói ứng dụng có thể chứa nhiều <instrumentation> thẻ, mặc dù cách này không được dùng phổ biến.
  • mỗi <instrumentation> phải chứa:
    • thuộc tính android:name: đây phải là tên của một lớp con của Instrumentation có trong ứng dụng kiểm thử, thường là trình chạy kiểm thử đang được sử dụng, ví dụ: android.support.test.runner.AndroidJUnitRunner
    • phải xác định thuộc tính android:targetPackage. Giá trị của thuộc tính này phải được đặt thành gói ứng dụng đang kiểm thử.

Tóm tắt các bước

  1. Dưới đây là các đích đến phổ biến cho các kiểm thử khép kín đối với các dịch vụ khung:

    frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
    

    Nếu bạn đang thêm một mô-đun đo lường hoàn toàn mới cho thành phần của mình, hãy xem

  2. Tuân theo quy ước hiện có nếu bạn đang thêm các kiểm thử vào một trong các vị trí ở trên. Nếu bạn đang thiết lập một mô-đun kiểm thử mới, vui lòng làm theo quy trình thiết lập AndroidManifest.xmlAndroid.mk ở một trong các vị trí ở trên

  3. Hãy xem frameworks/base/core/tests/coretests/ để biết ví dụ. Xin lưu ý rằng các dòng này cài đặt các ứng dụng bổ sung:

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. Đừng quên đánh dấu kiểm thử của bạn là @SmallTest, @MediumTest hoặc @LargeTest

  5. Tạo mô-đun kiểm thử bằng m, ví dụ:

    m FrameworksCoreTests
    
  6. Chạy các kiểm thử:

    • Giải pháp đơn giản nhất là sử dụng Atest như sau:

      atest FrameworksCoreTests
      
    • Hoặc đối với các kiểm thử phức tạp hơn, hãy sử dụng Bộ kiểm thử Trade Federation:

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. Nếu không sử dụng Tradefed, hãy cài đặt và chạy các kiểm thử theo cách thủ công:

    1. Cài đặt apk đã tạo:
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    
    1. Chạy các kiểm thử với nhiều lựa chọn:

      1. tất cả các kiểm thử trong apk

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. tất cả các kiểm thử trong một gói Java cụ thể

        adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      3. tất cả các kiểm thử trong một lớp cụ thể

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      4. một phương thức kiểm thử cụ thể

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        

Kiểm thử của bạn có thể đưa ra một khẳng định rõ ràng về việc vượt qua hoặc không vượt qua bằng cách sử dụng API JUnit; ngoài ra, mọi ngoại lệ chưa được xử lý cũng sẽ gây ra lỗi chức năng.

Để phát ra các chỉ số hiệu suất, mã kiểm thử của bạn có thể gọi Instrumentation#sendStatus để gửi danh sách các cặp khoá-giá trị. Điều quan trọng cần lưu ý là:

  1. các chỉ số có thể là số nguyên hoặc số dấu phẩy động
  2. mọi giá trị không phải là số sẽ bị loại bỏ
  3. apk kiểm thử của bạn có thể là kiểm thử chức năng hoặc kiểm thử chỉ số, tuy nhiên, hiện không hỗ trợ kết hợp cả hai