Chương trình tương thích của Android là yếu tố chính giúp duy trì phản hồi tích cực cho hệ sinh thái Android. CTS là công cụ chính để đảm bảo chất lượng tương thích ở quy mô lớn. Nhóm Android tiếp tục cải thiện công cụ CTS và phạm vi kiểm thử. Việc thường xuyên bổ sung các trường hợp kiểm thử giúp cải thiện đáng kể chất lượng của các thiết bị tương thích.
Câu hỏi chung
Phần này cung cấp các câu hỏi thường gặp chung về CTS.
CTS kiểm thử những loại nội dung nào?
CTS kiểm thử để đảm bảo rằng tất cả các API được hỗ trợ của Android đều có mặt và hoạt động đúng cách. CTS cũng kiểm thử các hành vi khác của hệ thống không phải API, chẳng hạn như vòng đời và hiệu suất của ứng dụng.
CTS được cấp phép như thế nào?
CTS được cấp phép theo cùng một Giấy phép phần mềm Apache 2.0 mà phần lớn Android sử dụng.
CTS có xác minh codec không?
Có. Tất cả các codec bắt buộc đều được CTS xác minh.
Câu hỏi cụ thể về kiểm thử
Phần này cung cấp các câu hỏi thường gặp giúp chạy kiểm thử CTS hiệu quả hơn.
Sự khác biệt giữa CTS Sharding và TF Sharding là gì?
CTS Sharding và TF Sharding là các kế hoạch kiểm thử hoàn toàn khác nhau, được hỗ trợ bởi cơ sở mã cơ sở hạ tầng kiểm thử khác nhau. Mặc dù lệnh chạy giống nhau trên các phiên bản khác nhau, nhưng kết quả phân mảnh lại hoạt động khác nhau. CTS Sharding chỉ định tĩnh các trường hợp kiểm thử cho Thiết bị đang kiểm thử (DUT) như sau:
- Lệnh: run cts
- Cấu hình cho Android 8.1 trở xuống: /tools/cts-tradefed/res/config/cts.xml
TF Sharding chỉ định động các trường hợp kiểm thử cho các DUT có sẵn như sau:
- Lệnh: run cts
- Cấu hình cho Android 9: /platform/test/suite_harness/+/pie-cts-dev/tools/cts-tradefed/res/config/cts-suite.xml
Thiết bị hỗ trợ nhiều ABI cần đáp ứng những yêu cầu nào?
Thiết bị phải vượt qua tất cả các bài kiểm thử CTS và CTS Verifier cho từng chế độ ABI mà thiết bị đó tuyên bố hỗ trợ. Do đó, bạn cần thực thi một ứng dụng cho các ABI cụ thể. Dưới đây là các nguyên tắc cho nhiều ABI:
- Đối với CTS và CTS Verifier, có các bản phát hành ARM và x86 cho từng kiến trúc. Mỗi bản phát hành có thể hỗ trợ chế độ 32 hoặc 64 bit.
- Đối với các bài kiểm thử CTS, nếu một thiết bị hỗ trợ cả ARM và x86, thì thiết bị đó phải chạy và vượt qua cả bài kiểm thử ARM và x86 CTS.
Xem CDD 3.3.1. Giao diện nhị phân của ứng dụng cho các yêu cầu của CDD về ABI.
Chỉ chạy kiểm thử trên ABI chính (ví dụ: 64 bit) có đủ để giảm thời gian thực thi kiểm thử không?
Không. Ứng dụng Android chạy trên thời gian chạy 32 bit hoặc 64 bit riêng. Mã máy thực tế, đường dẫn mã và trạng thái khác nhau giữa 32 và 64. Nếu bạn bỏ qua một chế độ, bạn chỉ bao phủ được 50% ABI của thiết bị.
Tại sao có nhiều trường hợp kiểm thử được báo cáo là Chưa thực thi?
Bạn nên kiểm tra số Mô-đun đã hoàn tất thay vì số Chưa thực thi.
Trong các phiên bản trước, các mô-đun CTS được báo cáo là Mô-đun đã hoàn tất quá sớm trước khi hoàn thành. Do đó, số Mô-đun đã hoàn tất được báo cáo mà không có tất cả các trường hợp kiểm thử hoàn tất, ngay cả khi một số thiết bị gặp vấn đề. Hệ thống kiểm thử mới thận trọng hơn và báo cáo số lượng bài kiểm thử Chưa thực thi cao hơn khi có vấn đề xảy ra.
Một mô-đun chạy đến khi hoàn tất sẽ báo cáo Mô-đun chưa hoàn tất trong lần gọi gần đây nhất (done="false") trong báo cáo trong các trường hợp sau:
- Một lần chạy kiểm thử cho mô-đun bị gián đoạn do vấn đề về kết nối thiết bị.
- Không phải tất cả các lần chạy kiểm thử dự kiến cho mô-đun đều được thực hiện.
Đã thử lại (sử dụng tuỳ chọn
-r/--retry) với các tuỳ chọn lọc bổ sung, chẳng hạn như:- --include-filter
- --exclude-filter
- -t/--test (Tuỳ chọn chưa được hỗ trợ khi thử lại)
- --retry-type failed
- --subplan
Để nhận được trạng thái Mô-đun đã hoàn tất (done="true") cho các mô-đun này, hãy thử lại các thao tác sau cho lần gọi gần đây nhất:
run retry --retry <session_id> for Android 9 and later versionsrun cts --retry <session_id> for Android 8.1 and previous versionsMột mô-đun được thực thi mà không gặp bất kỳ vấn đề nào đã đề cập trước đó (ngay cả khi còn 0 bài kiểm thử) sẽ được đánh dấu là Mô-đun đã hoàn tất trong báo cáo mới.
Ngoại lệ
- CtsNNAPITestCases gặp một vấn đề đã biết do giới hạn của linux/OS về đối số.
Bạn có thể chạy lại mô-đun này riêng biệt thông qua
run cts -m CtsNNAPITestCasestrực tiếp.
Làm cách nào để tránh việc chuẩn bị kiểm thử không thành công sau tường lửa của công ty?
Tất cả các bộ kiểm thử tự động đều cố gắng tải tệp đa phương tiện CTS hoặc tệp logic nghiệp vụ xuống trong thời gian chạy. Trong nhiều môi trường công ty, tường lửa và proxy là điển hình, điều này khiến việc chuẩn bị kiểm thử không thành công. Thực thi dòng sau hoặc thêm dòng đó vào .profile (trên Ubuntu).
export JAVA_TOOL_OPTIONS='-Djava.net.useSystemProxies=true'Tôi có cần thẻ SIM cho CTS cho Phần tử bảo mật không?
Việc có cần thẻ SIM cho kiểm thử hay không phụ thuộc vào việc bạn có hiểu rõ tính năng này được hỗ trợ trong thiết bị thử nghiệm hay không.
- Nếu thiết bị của bạn KHÔNG CẦN hỗ trợ các ứng dụng Android truy cập vào
các phần tử bảo mật (trong
UICC
(ví dụ: thẻ SIM) do nhà mạng di động
(nhà cung cấp dịch vụ) phân phối hoặc được nhúng trong thiết bị), bạn có thể định cấu hình tệp kê khai HIDL
để không bao gồm phần tử HAL
android.hardware.secure_element. Trong trường hợp này, API android.se.omapi.SEService.getReaders() sẽ báo cáo một danh sách trống và bài kiểm thử CTS sẽ tự động vượt qua và báo cáo là vượt qua cho CTS. - Nếu thiết bị của bạn CẦN hỗ trợ các ứng dụng Android truy cập vào các Secure Element—trong UICC (ví dụ: thẻ SIM) do nhà mạng di động (nhà cung cấp dịch vụ) phân phối hoặc được nhúng trong thiết bị—bạn cần triển khai Secure Element đúng cách và kiểm thử Secure Element đó trong nội bộ. Bài kiểm thử CTS cho Phần tử bảo mật trình bày cách chuẩn bị để chạy các bài kiểm thử CTS nhằm đảm bảo gói API android.se.omapi được thêm vào Android 9 hoạt động. Bạn cũng nên tự thực hiện thêm các bài kiểm thử vì phạm vi kiểm thử CTS là tối thiểu.
Tôi có thể lấy thẻ SIM cho CTS cho Phần tử bảo mật ở đâu?
Bạn có thể liên hệ với nhà cung cấp SIM mà bạn ưu tiên.
Tại sao SIM Orange lại xuất hiện trên màn hình khoá trong quá trình thực thi CTS với tính năng phân mảnh mã thông báo?
Trường hợp kiểm thử không bắt đầu vì việc kiểm thử thẻ SIM bị khoá. Tắt Khoá thẻ SIM trong **Cài đặt khoá thẻ SIM** trước khi thực thi CTS với tính năng phân mảnh mã thông báo.
Kiểm thử chạy khi các cờ tính năng bị tắt trong thiết bị
Đối với tất cả các cờ trong bản dựng phát hành, chú thích @RequiresFlagsEnabled hoặc @RequiresFlagsDisabled sử dụng các giá trị của cờ từ cấu hình phát hành nhị phân CTS, chứ không phải từ cấu hình phát hành thiết bị. Việc tắt cờ trên thiết bị không tắt bài kiểm thử vì tập hợp các bài kiểm thử CTS chạy cho một bản phát hành nhất định được cố định vào cấu hình phát hành nền tảng AOSP.