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

Khi khối liệu kiểm thử lớn hoặc thời gian thực thi lâu, chúng tôi sẽ cung cấp khả năng chia tách bài kiểm thử trên nhiều thiết bị: phân đoạn.

Phân đoạn có điều kiện tiên quyết cho trình chạy kiểm thử để hỗ trợ 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.

Có hai loại phân đoạn mà chúng tôi hỗ trợ trong Tradefeed: 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 và rồi mới xem chi tiết cụ thể của từng yếu tố.

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ân đoạn là để tạo danh sách kiểm thử đầy đủ theo thứ tự, sau đó tách chúng thành các nhóm/phân đoạn khác nhau.

Đ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ử. Bạn có thể xem thêm thông tin chi tiết trong các phần dưới đây.

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ị đang được kết nối với cùng một nền tảng lưu trữ 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à đảm bảo mỗi kiểm thử kiểm thử tính năng thăm dò thiết bị khi rảnh (tức là được thực hiện với bài kiểm thử trước đó). Nhờ đó, tối ưu hoá khả năng sử dụng thiết bị. Chúng tôi cũng gọi nó là phân đoạn động.

Tùy chọn

--shard-count XX

Phân đoạn được phân phối

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

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ậy tất cả phân đoạn được phân phối sẽ tạo cùng một danh sách lúc đầu, sau đó thực thi cùng một phân đoạn riêng biệt, dẫn đến tất cả các 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 phân đoạn hoàn toàn không biết về từng khác và có thể tự hoạt động không thành công.

Nhược điểm chính là độ dài phân đoạn không nhất thiết phải cân bằng bởi vì chúng tôi không thể dự đoán trước thời gian chạy của từng phép kiểm thử trong từng 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 phải 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 họ cần trong AndroidTest.xml, và Thương mại chuyển hướng 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 phù hợp với mô-đun kiểm thử, mô-đun kiểm thử không thành công và bị bỏ qua do 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, mô-đun kiểm tra bị lỗi.

Triển khai

Truyền cờ tính năng này vào dòng lệnh Tradefeed chính:

--enable-token-sharding