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

Khi kho dữ liệu kiểm thử lớn hoặc thời gian thực hiện kéo dài, chúng tôi cung cấp khả năng chia nhỏ các bài kiểm thử trên nhiều thiết bị: sharding .

Sharding có các điều kiện tiên quyết để người chạy thử nghiệm hỗ trợ sharding.

Phần lớn các trình chạy thử nghiệm chính đã hỗ trợ sharding nên không cần thực hiện thêm thao tác nào. Những thứ này đã hỗ trợ phân đoạn: kiểm tra thiết bị đo, kiểm tra điều khiển phía máy chủ, GTest.

Có hai loại sharding mà chúng tôi hỗ trợ trong Tradefed: cục bộ và phân phối. Chúng 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à chi tiết cụ thể của từng loại.

Tài sản chung

Cả hai hình thức phân đoạn đều có các thuộc tính giống nhau từ quá trình chạy thử nghiệm: Phân đoạn cần phải độc lậpmang tính xác định . Bước đầu tiên của cả hai phân đoạn là xây dựng danh sách thử nghiệm được sắp xếp đầy đủ và sau đó chia chúng thành các nhóm/phân đoạn khác nhau.

Sự khác biệt chính của các hình thức shending là ở cách chúng thực hiện các bài kiểm tra. Thêm chi tiết trong các phần dưới đây.

Phân mảnh cục bộ

Phân đoạn cục bộ có nghĩa là tất cả các thiết bị liên quan đến việc thực hiện lệnh gọi phân đoạn được kết nối với cùng một máy chủ vật lý.

Chấp hành

Phân đoạn cục bộ tận dụng lợi thế của 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 thử nghiệm cần được thực thi và yêu cầu mỗi thiết bị kiểm tra vòng thăm dò khi nó rảnh (nghĩa là được thực hiện với thử nghiệm trước đó). Điều này dẫn đến việc sử dụng thiết bị được tối ưu hóa. Chúng tôi còn gọi nó là phân mảnh độ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ị liên quan đến việc thực hiện 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 các máy chủ vật lý khác nhau.

Chấp hành

Phân đoạn phân tán diễn ra khi xây dựng danh sách thử nghiệm 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 phân đoạn được phân phối lúc đầu đều xây dựng cùng một danh sách, sau đó thực thi một tập hợp con loại trừ lẫn nhau của danh sách đó, dẫn đến tất cả các thử nghiệm đều được thực thi.

Thuộc tính chính của hình thức này là các phân đoạn hoàn toàn không biết về nhau và có thể bị lỗi một cách độ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 đơn giản vì chúng tôi không thể dự đoán trước thời gian chạy của mỗi thử nghiệm 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 thử nghiệm xấp xỉ bằng nhau trong mỗi phân đoạn.

Tùy chọn

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

Phân mảnh mã thông báo

Phân mảnh mã thông báo chỉ có thể được sử dụng với phân mảnh cục bộ. Cờ 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ị liên quan đến sharding 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ố thử nghiệm có thể chỉ hoạt động khi có sẵn tài nguyên đặc biệt đó và nếu không thì sẽ thất bại.

Phân mảnh 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 thử nghiệm có thể khai báo tài nguyên đặc biệt nào chúng cần trong AndroidTest.xml và Tradefed định tuyến các thử nghiệm đến 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 trình xử lý trong TokenProviderHelper .

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

Điều gì sẽ xảy ra nếu không có thiết bị nào có thể chạy thử nghiệm?

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

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

Thực hiện

Chuyển cờ tính năng này tới dòng lệnh Tradefed chính:

--enable-token-sharding