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. Lưu ý rằng có một số khác biệt trong cách sử dụng kiểm thử đo lường trong kiểm thử nền tảng.

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

Khái niệm chính

  • Bạn phải khai báo khả năng đo lường trong gói ứng dụng, kèm theo <instrumentation> được lồng trong thẻ <manifest> của tệp kê khai gói ứng dụng.
  • về mặt kỹ thuật, tệp kê khai gói ứng dụng có thể chứa nhiều Thẻ <instrumentation>, mặc dù thẻ này không thường được dùng theo cách này.
  • mỗi <instrumentation> phải chứa:
    • thuộc tính android:name: thuộc tính này phải là tên lớp con của Instrumentation có trong ứng dụng kiểm thử, thường là kiểm thử trình chạy đang được sử dụng, ví dụ: android.support.test.runner.AndroidJUnitRunner
    • bạn 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 được kiểm thử.

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

  1. Dưới đây là các đích đến phổ biến cho 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. Theo quy ước hiện có, nếu bạn thêm các bài kiểm thử vào một trong 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 thiết lập AndroidManifest.xmlAndroid.mk tại một trong các vị trí phía trên

  3. Xem frameworks/base/core/tests/coretests/ để xem ví dụ. Lưu ý: các dòng sau sẽ 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 kết quả 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 kiểm thử:

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. Nếu không sử dụng Tradefeed, hãy cài đặt và chạy 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 kiểm thử bằng nhiều tuỳ chọn:

      1. tất cả các bài kiểm thử trong tệp APK

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. tất cả các lượt 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 bài kiểm thử thuộc 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 pháp 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 khẳng định rõ ràng về việc đạt hoặc không đạt bằng cách sử dụng các API JUnit; inch ngoài ra, mọi trường hợp ngoại lệ chưa được nắm bắt cũng sẽ gây ra lỗi chức năng.

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