Bộ kiểm thử hình ảnh camera (ITS) là một khung để chạy các bài kiểm thử trên hình ảnh do camera Android tạo ra. Mục tiêu chung của mỗi bài kiểm thử trong ITS là định cấu hình camera theo một cách cụ thể, chụp một hoặc nhiều bức ảnh và kiểm tra các bức ảnh đó để xem chúng có chứa dữ liệu hình ảnh dự kiến hay không. Nhiều bài kiểm thử yêu cầu camera phải hướng vào một biểu đồ mục tiêu cụ thể hoặc được chiếu sáng ở một cường độ cụ thể.
ITS nằm trong bộ kiểm thử Trình xác minh CTS trong
cts/apps/CameraITS.
Các thiết bị phải vượt qua các bài kiểm thử ITS tương ứng với các tính năng được quảng cáo mà khung camera dành cho ứng dụng bên thứ ba cung cấp dưới dạng một tập hợp con của CTS.
Thiết lập
Để chạy các bài kiểm thử ITS, bạn phải thiết lập những nội dung sau:
- Một thiết bị đang được kiểm thử (DUT)
- Một máy chủ lưu trữ (ví dụ: máy tính để bàn hoặc máy tính xách tay chạy Linux)
- Một cảnh mà camera chụp
Thiết lập thiết bị đang được kiểm thử (DUT)
Để thiết lập DUT, hãy làm theo các bước sau:
- Kết nối DUT với máy chủ lưu trữ qua USB.
- Cấp quyền cho máy chủ lưu trữ truy cập vào DUT qua ADB.
Cài đặt ứng dụng Trình xác minh CTS (
CtsVerifier.apk) lên thiết bị. Để biết thêm thông tin, hãy xem phần Sử dụng Trình xác minh CTS.extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zipcd android-cts-verifieradb install -r -g CtsVerifier.apkTrên DUT, hãy chạy ứng dụng camera mặc định và xoá tất cả các cửa sổ xuất hiện khi chạy để tránh gây nhiễu trong quá trình kiểm thử.
Thiết lập máy chủ lưu trữ
ITS yêu cầu máy chủ lưu trữ phải được kết nối với DUT qua USB, có thể sử dụng ADB để kiểm soát và giao tiếp với thiết bị, đồng thời đã cài đặt phần mềm cần thiết.
Để thiết lập máy chủ lưu trữ, hãy đảm bảo bạn đã cài đặt phần mềm sau.
Công cụ nền tảng SDK Android
Bạn phải cài đặt các công cụ nền tảng SDK Android và ADB phải nằm trong đường dẫn thực thi của shell hoặc thiết bị đầu cuối đang chạy trên máy chủ lưu trữ. Đối với phiên bản công khai của các công cụ nền tảng SDK Android, hãy xem Ghi chú phát hành về công cụ nền tảng SDK.
Python
Bạn phải cài đặt Python trên máy chủ lưu trữ. Bạn nên sử dụng bản phân phối Python được gói để đảm bảo hỗ trợ các phiên bản tương thích. Để biết thông tin chi tiết về phiên bản Python và gói cần cài đặt cho một bản phát hành cụ thể, hãy xem Ghi chú phát hành về Camera ITS cho bản phát hành tương ứng.
Mobly
Đối với Android 12 trở lên, hãy cài đặt khung kiểm thử Mobly. Mobly cho phép bạn thiết lập DUT và bảng biểu đồ trong lớp its_base_test. Để cài đặt khung kiểm thử Mobly, hãy chạy:
pip install moblyThiết lập môi trường
Để thiết lập môi trường thử nghiệm, hãy chạy:
cd CameraITSsource build/envsetup.sh
Lệnh này sẽ kiểm tra quá trình cài đặt Python, thiết lập biến môi trường PYTHONPATH và chạy các bài kiểm thử đơn vị trên các mô-đun utils/*.py. Nếu không có lỗi nào được in ra thiết bị đầu cuối, thì môi trường đã sẵn sàng chạy các bài kiểm thử ITS.
Thiết lập cảnh
Để thiết lập cảnh, bạn nên sử dụng thiết lập Camera ITS-in-a-box để dễ dàng tự động hoá, đảm bảo độ tin cậy và hiệu quả trong quá trình kiểm thử. Các thiết bị kiểm thử ITS-in-a-box hỗ trợ tất cả các yêu cầu về ánh sáng, căn giữa và thay đổi biểu đồ cho ITS. Ngoài ra, bạn phải sử dụng ITS-in-a-box để kiểm thử các tiện ích camera.
Đối với quá trình kiểm thử thủ công, hãy đảm bảo những điều sau:
- DUT được đặt trên chân máy
- DUT hướng vào cảnh phù hợp cho mỗi bài kiểm thử. (Tập lệnh kiểm thử ITS cung cấp lời nhắc để thay đổi thiết lập cảnh trước khi bắt đầu các bài kiểm thử trong một cảnh mới.)
- DUT được kết nối với máy chủ lưu trữ qua USB.
- DUT không di chuyển trong quá trình chạy kiểm thử.
- Cảnh được chiếu sáng bằng nguồn sáng ổn định, không dao động. (Đừng sử dụng đèn huỳnh quang vì đèn này sẽ gây ra hiện tượng nhấp nháy.)
Kịch bản kiểm tra ITS sẽ hiển thị lời nhắc yêu cầu người dùng thay đổi thiết lập cảnh trước khi bắt đầu các bài kiểm tra trong một cảnh mới.
Bạn phải thiết lập hướng điện thoại sao cho camera chụp ảnh mà không cần xoay. Cách dễ nhất để kiểm tra điều này là sử dụng các cảnh khuôn mặt trong scene2. Hầu hết điện thoại đều có hướng ngang, với điện thoại xoay ngược chiều kim đồng hồ cho camera sau và xoay theo chiều kim đồng hồ cho camera trước.
Tệp cấu hình
Khi sử dụng khung Mobly, bạn phải tạo tệp cấu hình config.yml để xác định testbed Mobly. Sau đây là các ví dụ cho các trường hợp sử dụng khác nhau.
Tệp config.yml của các cảnh dựa trên máy tính bảng
Sau đây là ví dụ về tệp config.yml cho các cảnh dựa trên máy tính bảng. Đối với quá trình kiểm thử dựa trên máy tính bảng, từ khoá TABLET phải có trong tên testbed. Trong quá trình khởi chạy, trình chạy kiểm thử Mobly sẽ khởi chạy các tham số trong tệp và chuyển các tham số đó đến từng bài kiểm thử.
TestBeds:
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False" # "True" or "False"; quotes needed
lighting_cntl: <controller-type> # "arduino" or "None"; quotes needed
lighting_ch: <controller-channel>
camera: 0
foldable_device: "False". # set "True" if testing foldable
scene: <scene-name> # if <scene-name> runs all scenes
Để gọi testbed, hãy chạy tools/run_all_tests.py. Nếu không có giá trị dòng lệnh nào chỉ định camera hoặc cảnh, thì bài kiểm thử sẽ được chạy với các giá trị tệp config.yml. Nếu có giá trị dòng lệnh cho camera hoặc cảnh, thì các giá trị này sẽ ghi đè các giá trị trong phần TestParams của tệp config.yml.
Ví dụ:
python tools/run_all_tests.pypython tools/run_all_tests.py camera=1python tools/run_all_tests.py scenes=2,1,0python tools/run_all_tests.py camera=0 scenes=scene_telepython tools/run_all_tests.py camera=0.4 scenes=4,scene6_tele
tham số chart_scaling
Trong Android 17 trở lên, tham số chart_scaling được đưa vào config.yml cho TEST_BED_TABLET_SCENES. Tham số này giải quyết các vấn đề về tỷ lệ biểu đồ cho các thiết bị camera tele có trường nhìn (FoV) rộng hơn, ngăn chặn việc cắt cảnh và buộc thiết bị lấy nét đúng cách trong quá trình kiểm thử.
Các giá trị được hỗ trợ cho chart_scaling là 1, 0.33, 0.5 hoặc 0.67, với None là giá trị mặc định. Phương pháp này cho phép các thiết bị sử dụng hệ số tỷ lệ tối ưu phù hợp với các yêu cầu cụ thể của chúng, duy trì quá trình kiểm tra về mặt hoạt động trên tất cả các thiết bị.
Nếu chart_scaling được đặt thành None, các bài kiểm thử sẽ tự động xác định hệ số tỷ lệ bằng cách sử dụng chart_scaling_logic. Nếu không, giá trị được chỉ định trong config.yml sẽ được sử dụng hoặc một lỗi sẽ được gắn cờ nếu không có tỷ lệ.
Sau đây là mẫu config.yml có tham số chart_scaling
TestBeds:
- Name: TEST_BED_TABLET_SCENES # Need 'tablet' in name for tablet scenes
# Use TEST_BED_MANUAL for manual testing and remove below lines:
# - serial <tablet_id>
# label: tablet
# Test configuration for scenes[0:4, 6]
Controllers:
AndroidDevice:
- serial: <device-id> # quotes needed if serial id entirely numeric
label: dut
- serial: <tablet-id> # quotes needed if serial id entirely numeric
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False" # quotes needed
lighting_cntl: <controller-type> # can be arduino or "None"
lighting_ch: <controller-channel>
camera: <camera-id>
scene: <scene-name> # if <scene-name> runs all scenes
foldable_device: "False" # "True" if testing foldable device
chart_scaling: "None" # use the values available for scene to be tested
resultstore_upload: "False" # "True" if results should be uploaded to ResultStore
Bạn phải điều chỉnh phía kiểm thử để bật các tính năng tỷ lệ biểu đồ của Camera ITS. Nếu bài kiểm thử bạn đang sử dụng không hỗ trợ tính năng này, hãy báo cáo lỗi.
Sau đây là mẫu thay đổi phía kiểm thử có tham số chart_scaling.
# load chart for scene
its_session_utils.load_scene(
cam, props, self.scene, self.tablet, self.chart_distance,
chart_scaling=self.chart_scaling)
Tệp config.yml của cảnh sensor_fusion
Sau đây là ví dụ về tệp config_yml cho các bài kiểm thử sensor_fusion.
Đối với quá trình kiểm thử sensor_fusion, từ khoá SENSOR_FUSION phải có trong tên testbed. Android 13 trở lên chỉ hỗ trợ bộ điều khiển Arduino cho tính năng kết hợp cảm biến do quá trình kiểm thử bản xem trước và tính năng ổn định video.
Android 12 hỗ trợ bộ điều khiển Arduino và Canakit.
Testbeds
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion/test_sensor_fusion.py
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: arduino
rotator_ch: 1
camera: 0
Để chạy các bài kiểm thử sensor_fusion bằng
hộp kết hợp cảm biến, hãy chạy:
python tools/run_all_tests.py scenes=sensor_fusionpython tools/run_all_tests.py scenes=sensor_fusion camera=0python tools/run_all_tests.py scenes=scene_flash,feature_combinationpython tools/run_all_tests.py scenes=checkerboard camera=1
Tệp config.yml của nhiều testbed
Sau đây là ví dụ về tệp config.yml có nhiều testbed, một
testbed máy tính bảng và một sensor_fusion testbed. Testbed phù hợp được xác định theo các cảnh được kiểm thử.
Testbeds
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False"
chart_loc_arg: ""
camera: 0
scene: <scene-name> # if <scene-name> runs all scenes
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion/test_sensor_fusion.py
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: arduino # cntl can be arduino or canakit
rotator_ch: 1
camera: 0
Tệp config.yml của quá trình kiểm thử thủ công
Sau đây là ví dụ về tệp config.yml cho quá trình kiểm thử thủ công. Android 14
trở lên hỗ trợ quá trình kiểm thử thủ công cho tất cả các bài kiểm thử, ngoại trừ các bài kiểm thử
scene_extensions. Đối với quá trình kiểm thử thủ công, từ khoá MANUAL phải có trong tên testbed.
Ngoài ra, phần AndroidDevice không thể chứa phần sê-ri hoặc nhãn cho máy tính bảng.
TestBeds:
- Name: TEST_BED_MANUAL
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
debug_mode: "False"
camera: 0
scene: 1
Tệp config.yml của quá trình kiểm thử thiết bị Gen2
Sau đây là ví dụ về tệp config.yml của testbed TEST_BED_GEN2.
Testbed này được dùng cho các bài kiểm thử scene_ip, sử dụng thiết bị Gen2](/docs/compatibility/cts/camera-its-box-gen2).
Ví dụ sau đây cho thấy các tham số testbed khi thiết bị Gen2 có sẵn và các bài kiểm thử không bị bỏ qua.scene_ip
Testbeds
- Name: TEST_BED_GEN2
# Test configuration for scene_ip/test_default_jca_ip.py
Controllers:
AndroidDevice:
- serial: <device-id> # quotes needed if serial id entirely numeric
label: dut
TestParams:
debug_mode: "False" # quotes are needed here
chart_distance: 30
rotator_cntl: gen2_rotator # gen2 rig specific. "None" if gen2 rig not available
rotator_ch: 0
camera: <camera-id>
foldable_device: "False" # "True" if testing foldable device
tablet_device: "False" # "True" if testing tablet device
lighting_cntl: gen2_lights # gen2 rig specific. "None" if gen2 rig not available
lighting_ch: 1
scene: scene_ip
Ví dụ sau đây cho thấy các tham số testbed khi thiết bị Gen2 không có sẵn và các bài kiểm thử scene_ip bị bỏ qua.
Testbeds
- Name: TEST_BED_GEN2
# Test configuration for scene_ip/test_default_jca_ip.py
Controllers:
AndroidDevice:
- serial: <device-id> # quotes needed if serial id entirely numeric
label: dut
TestParams:
debug_mode: "False" # quotes are needed here
chart_distance: 30
rotator_cntl: "None" # gen2 rig specific. "None" if gen2 rig not available
rotator_ch: <controller-channel>
camera: <camera-id>
foldable_device: "False" # "True" if testing foldable device
tablet_device: "False" # "True" if testing tablet device
lighting_cntl: "None" # gen2 rig specific. "None" if gen2 rig not available
lighting_ch: <controller-channel>
scene: scene_ip
Để chạy bài kiểm thử scene_ip, hãy sử dụng một trong các lệnh sau:
python tests/scene_ip/test_default_jca_ip.py -c config.ymlpython tools/run_all_tests.py camera=<camera-id> scenes=scene_ip
Chạy các bài kiểm thử ITS
Phần này mô tả cách chạy các bài kiểm thử ITS.
Gọi các bài kiểm thử
Sau khi thiết bị, máy chủ lưu trữ (bao gồm cả môi trường) và cảnh thực tế được thiết lập, hãy chạy các bài kiểm thử ITS bằng quy trình sau.
Mở ứng dụng Trình xác minh CTS. Trong trình đơn kiểm thử, hãy chọn Camera ITS Test (Kiểm thử ITS camera). Đối với Android 17 trở lên, các bài kiểm thử
sensor_fusionvàfeature_combinationnằm trong một hoạt động bổ sung có tên là Camera ITS Sensor Fusion Rig Test (Kiểm thử thiết bị kết hợp cảm biến ITS camera).Trên máy chủ lưu trữ, hãy chạy các bài kiểm thử ITS từ thư mục
CameraITS/. Ví dụ: đối với thiết bị có camera trước và sau, hãy chạy lệnh sau:python tools/run_all_tests.pyTập lệnh sẽ lặp lại các camera và cảnh kiểm thử dựa trên tệp
config.yml. Đối với các thiết lập gỡ lỗi, bạn nên chạy một trong các cảnhscene2với một bài kiểm thử để có thời gian xử lý nhanh nhất.Đối với quá trình kiểm thử thủ công, trước khi bắt đầu chạy tập hợp các bài kiểm thử ITS trên mỗi cảnh, tập lệnh sẽ chụp ảnh cảnh hiện tại, lưu ảnh đó ở định dạng JPEG, in đường dẫn đến tệp JPEG vào bảng điều khiển và yêu cầu người dùng xác nhận xem hình ảnh đó có ổn không. Quy trình chụp và xác nhận này sẽ lặp lại cho đến khi người dùng xác nhận hình ảnh đó ổn. Sau đây là các thông báo trong quy trình này.
Preparing to run ITS on camera 0 Start running ITS on camera: 0 Press Enter after placing camera 0 to frame the test scene: scene1_1 The scene setup should be: A grey card covering at least the middle 30% of the scene Running vendor 3A on device Capture an image to check the test scene Capturing 1 frame with 1 format [yuv] Please check scene setup in /tmp/tmpwBOA7g/0/scene1_1.jpg Is the image okay for ITS scene1_1? (Y/N)Mỗi lần chạy tập lệnh sẽ in ra một nhật ký cho biết
PASS,FAIL,FAIL*hoặcSKIPcho mỗi bài kiểm thử ITS.FAIL*cho biết bài kiểm thử không thành công nhưng vì bài kiểm thử chưa được bắt buộc, nên bài kiểm thử sẽ báo cáo làPASScho CtsVerifier.SKIPcho biết bài kiểm thử đã thành công vì thiết bị không quảng cáo khả năng cơ bản đang được kiểm thử. Ví dụ: nếu một thiết bị không quảng cáo thông qua các giao diện camera rằng thiết bị đó hỗ trợ DNG, thì các bài kiểm thử liên quan đến việc chụp tệp DNG sẽ bị bỏ qua và được tính làPASS.Để xác nhận rằng các bài kiểm thử đã đáp ứng các yêu cầu kiểm thử, hãy nhấn vào nút dấu kiểm màu xanh lục. Mục Camera ITS Test (Kiểm thử ITS camera) trong trình đơn kiểm thử Trình xác minh CTS sau đó sẽ chuyển sang màu xanh lục và cho biết điện thoại đã vượt qua Camera ITS.
Kiểm thử DUT song song
Các thiết bị chạy Android 14 trở lên hỗ trợ quá trình kiểm thử DUT song song. Điều này cho phép bạn kiểm thử DUT song song với nhiều thiết bị để tăng tốc quá trình kiểm thử tổng thể. Ví dụ: quá trình kiểm thử song song cho phép bạn kiểm thử camera 0 trong một thiết bị và camera 1 trong một thiết bị khác cùng lúc. Đối với Android 17 trở lên, vì các bài kiểm thử Camera ITS được chia thành 2 hoạt động, nên bạn có thể chạy các bài kiểm thử sensor_fusion và feature_combination trên một DUT và các bài kiểm thử khác trên một DUT khác song song. Tất cả quá trình kiểm thử cho các phiên kiểm thử song song đều được tổng hợp trên phiên Trình xác minh CTS trên DUT tham chiếu.
Bạn phải chạy quá trình kiểm thử song song bằng tính năng kiểm soát ánh sáng Arduino vì tính năng kiểm soát ánh sáng thủ công không được hỗ trợ trong quá trình kiểm thử song song. Đảm bảo rằng một kênh khác trên cùng một bộ điều khiển Arduino kiểm soát ánh sáng cho mỗi thiết bị.
Sau đây là mẫu tệp config.yml xác định 3 testbed để chạy song song.
TestBeds:
- Name: TEST_BED_TABLET_SCENES_INDEX_0
Controllers:
AndroidDevice:
- serial: <device-id-0>
label: dut
- serial: <tablet-id-0>
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False"
lighting_cntl: "arduino"
lighting_ch: <controller-channel-0>
camera: 0
scene: <scene-name> # if <scene-name> left as-is runs all scenes
foldable_device: "False"
- Name: TEST_BED_TABLET_SCENES_INDEX_1
Controllers:
AndroidDevice:
- serial: <device-id-1>
label: dut
- serial: <tablet-id-1>
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False"
lighting_cntl: "arduino"
lighting_ch: <controller-channel-1>
camera: 1
scene: <scene-name> # if <scene-name> left as-is runs all scenes
foldable_device: "False"
# TEST_BED_SENSOR_FUSION represents testbed index 2
# Parallel sensor_fusion is currently unsupported due to Arduino requirements
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion
Controllers:
AndroidDevice:
- serial: <device-id>
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: "arduino"
rotator_ch: <controller-channel-2>
camera: <camera-id>
foldable_device: "False"
tablet_device: "False"
lighting_cntl: "None"
lighting_ch: <controller-channel>
scene: "sensor_fusion"
Để chạy các testbed song song, hãy sử dụng lệnh sau:
for i in 0 1 2; do python3 tools/run_all_tests.py testbed_index=$i num_testbeds=3 & done; waitGửi kết quả kiểm thử tổng hợp
Trong Android 17 trở lên, bạn có thể gửi kết quả kiểm thử tổng hợp của Camera ITS để phê duyệt bản dựng. Trình xác minh CTS cho phép bạn kiểm thử đồng thời nhiều cảnh trên nhiều thiết bị và tổng hợp kết quả kiểm thử từ nhiều báo cáo Trình xác minh CTS (từ các lần chạy hoặc thiết bị kiểm thử khác nhau) thành một lần gửi duy nhất, hợp nhất.
Quy trình gửi
Để gửi kết quả tổng hợp của Camera ITS để phê duyệt bản dựng, hãy làm theo các bước sau:
- Chuẩn bị thiết bị: Thu thập từ 2 đến 3 thiết bị đang được kiểm thử (DUT) có cùng vân tay số của phiên bản.
- Cài đặt Trình xác minh CTS: Cài đặt APK Trình xác minh CTS mới nhất. Bạn có thể lấy APK này từ trình khám phá bản dựng được cung cấp.
Thực thi các bài kiểm thử song song:
- Gắn các DUT vào các thiết bị riêng biệt.
- Chạy đồng thời các cảnh Camera ITS khác nhau trên mỗi thiết bị.
- Tập hợp báo cáo: Lấy báo cáo Trình xác minh CTS sau mỗi lần chạy. Báo cáo này bao gồm cả những báo cáo có cảnh không thành công. Chỉ chạy lại các cảnh không thành công trong các lần chạy tiếp theo.
Gửi báo cáo: Tải nhiều báo cáo Trình xác minh CTS được thu thập từ tất cả các thiết bị lên.
Xem xét kết quả: Sau khi tải báo cáo lên, hãy xem xét kết quả tổng hợp:
- Phần Test Analysis (Phân tích kiểm thử) cho thấy danh sách đầy đủ tất cả các cảnh đã thực thi.
Các cảnh không được thực thi hoặc không thành công được liệt kê trong phần Failed (Không thành công).
Hình 1. Tài liệu về các cảnh không được thực thi hoặc không thành công.
Các cảnh thành công được liệt kê trong phần Aggregated Pass (Tổng hợp thành công).
Hình 2. Các cảnh được phân loại là Tổng hợp thành công
Trạng thái phê duyệt bản dựng
Bạn sẽ được phê duyệt bản dựng sau khi tất cả các cảnh bắt buộc đã hoàn tất thành công trong các báo cáo tổng hợp.
Mô hình nhiễu DNG
Các thiết bị quảng cáo khả năng chụp RAW hoặc DNG phải cung cấp mô hình nhiễu trong siêu dữ liệu kết quả chụp của mỗi bức ảnh RAW. Mô hình nhiễu này phải được nhúng vào HAL camera cho mỗi camera (ví dụ: camera trước và sau) trên thiết bị tuyên bố hỗ trợ.
Triển khai mô hình nhiễu
Để triển khai mô hình nhiễu, hãy làm theo các bước sau để tạo mô hình nhiễu và nhúng mô hình đó vào HAL camera.
Để tạo mô hình nhiễu cho mỗi camera, hãy chạy tập lệnh
dng_noise_model.pytrong thư mụctools. Thao tác này sẽ xuất ra một đoạn mã C. Để biết thêm thông tin về cách thiết lập camera và môi trường chụp, hãy xem tài liệuDngNoiseModel.pdftrong thư mụctools.Để triển khai mô hình nhiễu cho thiết bị, hãy cắt và dán đoạn mã C vào HAL camera.
Xác thực mô hình nhiễu
Bài kiểm thử ITS tự động tests/scene1_1/test_dng_noise_model.py
sẽ xác thực mô hình nhiễu bằng cách xác minh rằng các giá trị nhiễu
cho độ phơi sáng và độ lợi của bức ảnh được cung cấp trong dữ liệu camera là chính xác.
Các bài kiểm thử thành công một phần (trạng thái kiểm thử PASS*)
Trong Android 17 trở lên, trạng thái thành công một phần (PASS*) cho biết một bài kiểm thử đã thành công, nhưng các chỉ số hiệu suất của bài kiểm thử đó rất gần với ngưỡng thành công được xác định trước. Mặc dù bài kiểm thử đáp ứng các tiêu chí thành công, nhưng việc gần với ranh giới không thành công cho thấy cần phải kiểm tra kỹ hơn.
Lợi ích của trạng thái thành công một phần
Trạng thái PASS* mang lại một số lợi ích:
Hệ thống cảnh báo sớm: Xác định các bài kiểm thử sắp không thành công, cho phép các nhóm giải quyết vấn đề trước khi chúng dẫn đến việc không thành công hoàn toàn.
Tối ưu hoá chủ động: Khuyến khích các nhóm tối ưu hoá các bài kiểm thử và mã đang hoạt động ở mức thấp hơn của phạm vi chấp nhận được, cải thiện độ ổn định tổng thể.
Cải thiện chất lượng: Giúp duy trì tiêu chuẩn chất lượng cao hơn bằng cách gắn cờ các khu vực có thể dễ bị hồi quy trong tương lai với các thay đổi nhỏ về mã.
Giảm thời gian gỡ lỗi: Bằng cách phát hiện sớm các bài kiểm thử
PASS*, bạn có thể giảm đáng kể thời gian và công sức cần thiết để gỡ lỗi các lỗi hoàn toàn trong tương lai.
Thông tin chi tiết về PASS*
Trạng thái PASS* bao gồm những nội dung sau:
Xác định ngưỡng: Các ngưỡng thành công một phần cụ thể được xác định cho từng bài kiểm thử có liên quan trong Camera ITS.
Phát hiện tự động: Hệ thống tự động hoá kiểm thử sẽ phát hiện và phân loại các bài kiểm thử là
PASS*dựa trên các ngưỡng đã xác định.Cơ chế cảnh báo: Các nhóm nhận được cảnh báo tự động cho mọi bài kiểm thử được gắn cờ là
PASS*, hướng dẫn họ điều tra bài kiểm thử cụ thể và các chỉ số của bài kiểm thử đó.Báo cáo: Các trạng thái thành công một phần được chỉ định rõ ràng trong các báo cáo và trang tổng quan kiểm thử để dễ dàng xem hơn dưới dạng
PASS*trong báo cáoItsTestSummary, tương tự nhưFail*đối với các bài kiểm thửnot_yet_mandated. Bài kiểm thử duy trì trạng thái màu xanh lục vì bài kiểm thử tiếp tục thành công trong các ngưỡng đã thiết lập để tránh gây nhầm lẫn thêm. Trạng tháiPASS*chỉ áp dụng cho một lớp kiểm thử, chứ không áp dụng cho toàn bộ cảnh. Ví dụ: Scene_0 có thể được coi làPASSngay cả khi test_jitter và test_metadata làPASS*.Giám sát: Dữ liệu hiệu suất được thu thập trên các bài kiểm thử thành công một phần trên một thiết bị. Điều này cho phép giám sát các cải tiến camera trong tương lai do OEM thực hiện nếu các bài kiểm thử này chuyển sang trạng thái
PASS.
Sau đây là ví dụ về kết quả kiểm thử có PASS*:
INFO:root:Reporting camera 1 ITS results to CtsVerifier
INFO:root:ITS results to CtsVerifier: {'scene0': {'result': 'PASS', 'TEST_STATUS': [{'test': 'test_jitter', 'status': 'PASS*'}, {'test': 'test_metadata', **'status': 'PASS*'**}, {'test': 'test_request_capture_match', 'status': 'PASS'}, {'test': 'test_sensor_events', 'status': 'PASS'}, {'test': 'test_solid_color_test_pattern', 'status': 'PASS'}, {'test': 'test_test_patterns', 'status': 'SKIP'}, {'test': 'test_tonemap_curve', 'status': 'SKIP'}, {'test': 'test_unified_timestamps', 'status': 'PASS'}, {'test': 'test_vibration_restriction', 'status': 'PASS'}], 'mpc_metrics': [], 'performance_metrics': [], 'feature_query_proto': [], 'feature_query_proto_path': [], 'summary': '/tmp/CameraITS_zojk4sdr/cam_id_1/scene0/scene_test_summary.txt', 'start': 1754330630345, 'end': 1754330764534}, 'scene1_1': {'result': 'NOT_EXECUTED'}, 'scene1_2': {'result': 'NOT_EXECUTED'}, 'scene1_3': {'result': 'NOT_EXECUTED'}, 'scene2_a': {'result': 'NOT_EXECUTED'}, 'scene2_b': {'result': 'NOT_EXECUTED'}, 'scene2_c': {'result': 'NOT_EXECUTED'}, 'scene2_d': {'result': 'NOT_EXECUTED'}, 'scene2_e': {'result': 'NOT_EXECUTED'}, 'scene2_f': {'result': 'NOT_EXECUTED'}, 'scene2_g': {'result': 'NOT_EXECUTED'}, 'scene3': {'result': 'NOT_EXECUTED'}, 'scene4': {'result': 'NOT_EXECUTED'}, 'scene6': {'result': 'NOT_EXECUTED'}, 'scene7': {'result': 'NOT_EXECUTED'}, 'scene8': {'result': 'NOT_EXECUTED'}, 'scene9': {'result': 'NOT_EXECUTED'}, 'scene_extensions/scene_hdr': {'result': 'NOT_EXECUTED'}, 'scene_extensions/scene_low_light': {'result': 'NOT_EXECUTED'}, 'scene_tele/scene6_tele': {'result': 'NOT_EXECUTED'}, 'scene_tele/scene7_tele': {'result': 'NOT_EXECUTED'}, 'scene_video': {'result': 'NOT_EXECUTED'}, 'scene5': {'result': 'NOT_EXECUTED'}, 'sensor_fusion': {'result': 'NOT_EXECUTED'}, 'feature_combination': {'result': 'NOT_EXECUTED'}, 'scene_flash': {'result': 'NOT_EXECUTED'}, 'scene_ip': {'result': 'NOT_EXECUTED'}}
Đối tác nên:
- Theo dõi các cảnh báo
PASS* - Điều tra nguyên nhân gốc của các bài kiểm thử
PASS* - Chủ động tối ưu hoá các bài kiểm thử và mã được xác định là
PASS*
Trạng thái PASS* nhằm mục đích nâng cao tính mạnh mẽ và độ tin cậy của quá trình kiểm thử ITS camera, dẫn đến một sản phẩm ổn định và chất lượng cao.