Phân đoạn kiểm thử

Khi tập hợp kiểm thử lớn hoặc thời gian thực thi trở nên dài, chúng tôi có thể phân tách các kiểm thử trên một số thiết bị: phân đoạn.

Tính năng phân đoạn có các điều kiện tiên quyết để trình chạy kiểm thử hỗ trợ tính năng phân đoạn.

Phần lớn trình chạy kiểm thử chính đã hỗ trợ tính năng phân đoạn nên bạn không cần làm gì thêm. Các phương thức này đã hỗ trợ tính năng phân đoạn: kiểm thử đo lường, kiểm thử do phía máy chủ điều khiển, GTest.

Chúng tôi hỗ trợ hai loại phân đoạn trong Tradefed: cục bộ và phân tán. Các lớp này có một số điểm tương đồng, vì vậy, trang này mô tả các thuộc tính chung và sau đó là thông tin cụ thể của từng lớp.

Thuộc tính phổ biến

Cả hai hình thức phân đoạn đều giả định các thuộc tính giống nhau từ trình chạy kiểm thử: Các phân đoạn cần độc lậpcó tính xác định. Bước đầu tiên của cả hai phương thức phân đoạn là tạo danh sách đầy đủ các bài kiểm thử theo thứ tự, sau đó chia các bài kiểm thử đó thành nhiều nhóm/phân đoạn.

Điểm khác biệt chính của các hình thức phân đoạn là cách chúng thực thi các chương trình kiểm thử. Xem thêm thông tin chi tiết trong các phần bên dưới.

Phân đoạn cục bộ

Phân đoạn cục bộ có nghĩa là tất cả các thiết bị tham gia vào quá trình thực thi lệnh gọi phân đoạn đều được kết nối với cùng một máy chủ thực.

Thực thi

Tính năng phân đoạn cục bộ tận dụng tất cả các thiết bị được kết nối với cùng một máy chủ bằng cách tạo một nhóm các chương trình kiểm thử cần được thực thi và yêu cầu mỗi thiết bị thăm dò ý kiến về các chương trình kiểm thử khi thiết bị đó rảnh (tức là đã hoàn tất chương trình kiểm thử trước đó). Điều này giúp tối ưu hoá mức sử dụng thiết bị. Chúng tôi cũng gọi đây là phân đoạn động.

Tùy chọn

--shard-count XX

Phân đoạn phân tán

Phân đoạn phân tán có nghĩa là tất cả các thiết bị tham gia vào quá trình thực thi lệnh gọi phân đoạn có thể tồn tại ở bất kỳ đâu và được kết nối với nhiều máy chủ thực.

Thực thi

Quá trình phân đoạn phân tán xảy ra khi tạo danh sách kiểm thử và nội dung của mỗi phân đoạn chỉ thực thi phân đoạn hiện được yêu cầu. Vì vậy, tất cả các mảnh được phân phối đều tạo cùng một danh sách lúc đầu, sau đó thực thi một tập hợp con riêng biệt của danh sách đó, dẫn đến việc tất cả các chương trình kiểm thử đều được thực thi.

Thuộc tính chính của biểu mẫu này là các mảnh hoàn toàn không biết đến nhau và có thể gặp lỗi độc lập.

Hạn chế chính là độ dài phân đoạn không nhất thiết phải cân bằng chỉ vì chúng ta không thể dự đoán trước thời gian chạy của mỗi chương trình kiểm thử trong mỗi phân đoạn. Việc phân phối được thực hiện để có số lượng trường hợp kiểm thử gần như tương đương nhau trong mỗi phân đoạn.

Tùy chọn

--shard-count XX --shard-index XX

Phân đoạn mã thông báo

Bạn chỉ có thể sử dụng tính năng phân đoạn mã thông báo với tính năng phân đoạn cục bộ. Cờ này không hoạt động trong các trường hợp sử dụng phân đoạn không cục bộ. Đôi khi, một trong các thiết bị tham gia phân đoạn sẽ chứa các tài nguyên đặc biệt mà các thiết bị khác không có, chẳng hạn như thẻ SIM. Một số kiểm thử có thể chỉ hoạt động khi có tài nguyên đặc biệt đó và sẽ không hoạt động nếu không có.

Phân đoạn mã thông báo là giải pháp của chúng tôi cho những trường hợp sử dụng như vậy. Các mô-đun kiểm thử có thể khai báo tài nguyên đặc biệt mà chúng cần trong AndroidTest.xml và Tradefed sẽ định tuyến các bài kiểm thử đến một thiết bị có tài nguyên đó.

Cấu hình XML

<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />

value của mã thông báo khớp với TokenProperty của Tradefed và được liên kết với một trình xử lý trong TokenProviderHelper.

Điều này cho phép chạy các mô-đun kiểm thử trên các thiết bị có thể thực thi các kiểm thử đúng cách.

Nếu không có thiết bị nào có thể chạy kiểm thử thì sao?

Nếu không có thiết bị nào có tài nguyên khớp với mô-đun kiểm thử, thì mô-đun kiểm thử sẽ không thành công và bị bỏ qua vì không thể thực thi đúng cách.

Ví dụ: nếu một mô-đun kiểm thử yêu cầu thẻ SIM để chạy nhưng không có thiết bị nào có thẻ SIM, thì mô-đun kiểm thử sẽ không thành công.

Triển khai

Truyền cờ tính năng này đến dòng lệnh Tradefed chính:

--enable-token-sharding