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, do đó không cần thêm công việc là bắt buộc. Các định dạng này hiện đã hỗ trợ tính năng phân đoạn: kiểm thử đo lường, kiểm thử phía máy chủ, 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ử: Phân đoạn cần phải mang tính độc lập và 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 biểu mẫu phân đoạn là cách thực thi 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ị liên quan đến quá trình thực thi phân đoạn đượ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 được phân phối diễn ra khi xây dựng danh sách các chương trình 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 tập con duy nhất của nó, dẫn đến tất cả các kiểm thử đượ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 bằ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ờ là 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 số các thiết bị tham gia vào việc phân đoạn giữ các tài nguyên đặc biệt mà người khác không có, chẳng hạn như SIM . Một số kiểm thử có thể chỉ hoạt động khi tài nguyên đặc biệt đó khả dụng và nếu không thì sẽ không thành công.
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à
Tradefeed 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 mã thông báo của Trade
TokenProperty
và được liên kết với một trình xử lý trong
TokenProviderHelper
.
Điều này cho phép các mô-đun kiểm thử chạy trên những thiết bị có thể thực thi các chương trình kiểm thử.
Nếu không có thiết bị nào có thể chạy thử nghiệm 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