Một bộ kiểm thử thường bao gồm một số mô-đun kiểm thử và có thể đạt đến kích thước khá lớn của tập hợp kiểm thử. Ví dụ: Bộ kiểm tra tính tương thích (CTS) với Android bao gồm hàng trăm mô-đun và hàng trăm nghìn trường hợp kiểm thử.
Có thể một lượng lớn các kiểm thử sẽ không thành công do khả năng cách ly kém hoặc thiết bị chuyển sang trạng thái không tốt.
Tính năng thử lại bộ kiểm thử được thiết kế để giải quyết những trường hợp đó: Tính năng này cho phép bạn chỉ thử lại các lỗi thay vì toàn bộ bộ kiểm thử để loại bỏ sự không ổn định và khả năng cách ly kém. Nếu một kiểm thử liên tục không đạt, thì lần thử lại cũng không đạt; và bạn sẽ nhận được tín hiệu mạnh hơn nhiều cho thấy có vấn đề thực sự.
Triển khai tính năng thử lại bộ
Việc thử lại kết quả liên quan đến việc đọc các kết quả trước đó và chạy lại lệnh gọi trước đó.
Giao diện chính điều khiển việc thử lại là ITestSuiteResultLoader
, cho phép bạn tải một kết quả trước đó và dòng lệnh trước đó.
RetryRescheduler
sau đó sử dụng thông tin này để tạo lại lệnh trước đó và điền sẵn một số bộ lọc để chỉ chạy lại các thử nghiệm không thành công hoặc chưa được thực thi trước đó.
Ví dụ về việc thử lại bộ kiểm thử: CTS
Cấu hình thử lại trong CTS là:
<configuration description="Runs a retry of a previous CTS session.">
<object type="previous_loader" class="com.android.compatibility.common.tradefed.result.suite.PreviousResultLoader" />
<test class="com.android.tradefed.testtype.suite.retry.RetryRescheduler" />
<logger class="com.android.tradefed.log.FileLogger">
<option name="log-level-display" value="WARN" />
</logger>
</configuration>
Điều này áp dụng cho hầu hết các bộ kiểm thử mở rộng nó, chẳng hạn như VTS.
Bạn có thể gọi hàm này bằng:
cts-tradefed run retry --retry <session>
Bạn có thể tìm thấy phiên này bằng cách liệt kê các kết quả trước đó trong bảng điều khiển CTS:
cts-tf > l r
Session Pass Fail Modules Complete Result Directory Test Plan Device serial(s) Build ID Product
0 2092 30 148 of 999 2018.10.29_14.12.57 cts [serial] P Pixel
Lệnh gốc chính xác sẽ được tải lại và chạy lại với các bộ lọc bổ sung. Điều này có nghĩa là nếu lệnh ban đầu của bạn có một số lựa chọn, thì các lựa chọn đó cũng là một phần của lệnh thử lại.
Ví dụ:
cts-tradefed run cts-dev -m CtsGestureTestCases
Việc thử lại thao tác trên luôn được liên kết với CtsGestureTestCases
vì chúng ta đang thử lại một lệnh chỉ liên quan đến thao tác đó.
Định cấu hình tính năng thử lại cho bộ kiểm thử theo kiểu CTS
Để thử lại, bạn cần xuất các kết quả trước đó ở định dạng proto. Bạn cần thêm những thông tin sau:
<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />
Bạn cần thêm thông tin này vào cấu hình XML của lệnh chính và thông tin này sẽ tạo ra một tệp test-record.pb
trong thư mục kết quả.
Sau đó, CTS retry sẽ tải dữ liệu từ sự kết hợp của test-record.pb
và test_result.xml
hiện có để chuẩn bị cho lệnh gọi retry.