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 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 môi trường thực thi kiểm thử đặ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ẽ được 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ẽ được bắt đầu bên trong máy ảo quy trình ứng dụng. 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 cung cấp quyền truy cập vào ngữ cảnh ứng dụng và các API để thao tác với quy trình ứng dụng đang được kiểm thử.

Khái niệm chính

  • bạn phải khai báo một công cụ đo lường trong gói ứng dụng, với thẻ <instrumentation> 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ù tệp này thường không được sử 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 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. Bạn nên đặt giá trị của thuộc tính này 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ử 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. Làm theo quy ước hiện có nếu bạn thêm chương trình 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ụ. Lưu ý rằng các dòng này 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 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 Tradefed, hãy cài đặt và chạy các chương trình kiểm thử theo cách thủ công:

    1. Cài đặt tệp 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 bài 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ử 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 khẳng định rõ ràng về việc đạt hoặc không đạt bằng cách sử dụng API JUnit; 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 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ị. Bạn cần lưu ý rằng:

  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 số sẽ bị loại bỏ
  3. tệp 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, việc kết hợp cả hai hiện không được hỗ trợ