Bộ kiểm thử hình ảnh máy ảnh (ITS) là một khung để chạy các bài kiểm thử đối với 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 máy ảnh theo một cách cụ thể, chụp một hoặc nhiều ảnh và kiểm tra các ảnh đó để xem liệu chúng có chứa dữ liệu hình ảnh dự kiến hay không. Nhiều phần yêu cầu máy ảnh 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 khai thác thử nghiệm Trình xác minh CTS ở
cts/apps/CameraITS
.
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 hỗ trợ mà khung máy ảnh quảng cáo cho các ứng dụng bên thứ ba dưới dạng một tập hợp con của CTS.
Thiết lập
Để chạy thử nghiệm ITS, bạn phải thiết lập các mục sau:
- Thiết bị đang được kiểm thử (DUT)
- 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)
- Cảnh mà máy ảnh chụp
Thiết lập thiết bị đang được thử nghiệm (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ủ qua USB.
- Cấp quyền cho máy chủ truy cập vào DUT qua ADB.
Cài đặt ứng dụng Trình xác minh CTS (
CtsVerifier.apk
) trên thiết bị. Để biết thêm hãy xem bài viết Sử dụng trình xác minh CTS.extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
cd android-cts-verifier
adb install -r -g CtsVerifier.apk
Thiết lập máy chủ lưu trữ
ITS yêu cầu máy chủ phải kết nối với DUT qua USB, có thể sử dụng ADB để điều khiển và giao tiếp thiết bị, đồng thời có các yêu cầu phần mềm đã cài đặ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 Bộ 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ủ. Đối với phiên bản phát hành công khai của Bộ công cụ nền tảng SDK Android, hãy xem Ghi chú phát hành của Bộ 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 gói Phân phối Python để đảm bảo hỗ trợ cho các phiên bản tương thích. Để biết thông tin chi tiết về những 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 phần Ghi chú phát hành cho Camera ITS trong bản phát hành tương ứng.
Mobly
Đối với Android 12 trở lên, khung kiểm thử AdMob
phải được cài đặt. Mobly cho phép bạn thiết lập DUT và máy tính bảng biểu đồ trong lớp its_base_test
. Để cài đặt khung kiểm thử di động, hãy chạy mã:
pip install mobly
Thiết lập môi trường
Để thiết lập môi trường kiểm thử, hãy chạy mã:
cd CameraITS
source build/envsetup.sh
Lệnh này kiểm tra quá trình cài đặt Python, thiết lập biến môi trường PYTHONPATH
và chạy kiểm thử đơn vị trên các mô-đun utils/*.py
. Nếu không
các lỗi được in ra thiết bị đầu cuối, môi trường sẽ sẵn sàng để chạy ITS
kiểm thử.
Thiết lập cảnh
Để thiết lập cảnh, bạn nên sử dụng Thiết lập hệ thống ITS tích hợp sẵn cho máy ảnh cho dễ dàng tự động hoá, đảm bảo độ tin cậy và hiệu quả trong quá trình thử nghiệm. Tích hợp sẵn ITS thiết bị thử nghiệm hỗ trợ tất cả các yêu cầu về việc thay đổi ánh sáng, căn giữa và biểu đồ cho ITS. Ngoài ra, bạn cần có ITS-in-a-box để kiểm thử tiện ích máy ảnh.
Đối với kiểm thử thủ công, hãy đảm bảo những điều sau:
- DUT nằm trên giá ba chân
- DUT được trỏ đến đúng cảnh cho mỗi lần kiểm thử. (Kịch bản thử nghiệm ITS đưa ra lời nhắc để thay đổi chế độ thiết lập cảnh trước khi bắt đầu thử nghiệm trong một cảnh.)
- DUT được kết nối với máy chủ 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 biến động. (Không nên hãy dùng đèn huỳnh quang vì đèn này gây ra hiện tượng nhấp nháy.)
Tập lệnh kiểm thử ITS hiển thị lời nhắc yêu cầu người dùng thay đổi chế độ thiết lập cảnh trước khi bắt đầu kiểm thử trong một cảnh mới.
Bạn phải đặt hướng điện thoại để máy ảnh có thể chụp ảnh mà không xoay. Cách dễ nhất để kiểm tra điều này là với các cảnh mặt trong cảnh2. Hầu hết điện thoại đều đặt điện thoại theo hướng ngang với điện thoại đã xoay ngược chiều kim đồng hồ đối với máy ảnh sau và xoay theo chiều kim đồng hồ cho camera trước.
Tệp cấu hình
Khi sử dụng khung AdMob, bạn phải tạo tệp cấu hình config.yml
để
xác định cơ sở dữ liệu di động được kiểm thử. Sau đây là ví dụ cho các trường hợp sử dụng.
Tệp config.yml cho cảnh trên máy tính bảng
Sau đây là tệp config.yml
mẫu cho các cảnh dựa trên máy tính bảng. Để
thử nghiệm dựa trên máy tính bảng, từ khoá TABLET
phải có trong tên lớp kiểm thử. Trong
khởi chạy, trình chạy kiểm thử AdMob sẽ khởi chạy các tham số trong tệp
rồi chuyển chúng đến từng thử nghiệm riêng lẻ.
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 môi trường thử nghiệm, hãy chạy tools/run_all_tests.py
. Nếu không có lệnh nào
các giá trị dòng chỉ định camera hoặc cảnh, phép kiểm thử sẽ được chạy bằng config.yml
giá trị tệp. Nếu có giá trị dòng lệnh cho máy ảnh 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.py
python tools/run_all_tests.py camera=1
python tools/run_all_tests.py scenes=2,1,0
python tools/run_all_tests.py camera=1 scenes=2,1,0
tệp config.yml của cảnh sensor_fusion
Sau đây là ví dụ về tệp config_yml
cho các kiểm thử sensor_fusion
.
Đối với kiểm thử sensor_fusion
, từ khoá SENSOR_FUSION
phải nằm trong lớp kiểm thử
. Android 13 trở lên chỉ hỗ trợ Arduino
bộ điều khiển hợp nhất cảm biến do thử nghiệm xem trước và kiểm tra độ ổn định video.
Android 12 hỗ trợ tay đ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 hợp nhất cảm biến, hãy chạy:
python tools/run_all_tests.py scenes=sensor_fusion
python tools/run_all_tests.py scenes=sensor_fusion camera=0
Nhiều tệp config.yml của nhiều thử nghiệm
Sau đây là ví dụ về tệp config.yml
có nhiều môi trường thử nghiệm, một môi trường thử nghiệm máy tính bảng và một môi trường thử nghiệm sensor_fusion
. Các cảnh được kiểm thử sẽ xác định đúng nền tảng 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
Kiểm tra tệp config.yml theo cách thủ công
Sau đây là tệp config.yml
mẫu để kiểm thử thủ công. Kể từ Android 14, tính năng kiểm thử thủ công được hỗ trợ cho tất cả các kiểm thử ngoại trừ kiểm thử scene_extensions
. Đối với kiểm thử thủ công, từ khoá MANUAL
phải có trong tên trung tâm kiểm thử.
Ngoài ra, phần AndroidDevice
không được chứa phần nối tiếp hoặc nhãn cho
một chiếc 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
Chạy kiểm thử ITS
Phần này mô tả cách chạy kiểm thử ITS.
Đang gọi kiểm thử
Sau khi thiết bị, máy chủ (bao gồm cả môi trường) và cảnh thực được thiết lập, hãy chạy các chương trình kiểm thử ITS bằng quy trình sau.
Mở ứng dụng CTS Verifer. Trong trình đơn kiểm thử, hãy chọn Camera ITS Test (Kiểm thử ITS của máy ảnh).
Trên máy chủ, hãy chạy các chương trình kiểm thử ITS từ thư mục
CameraITS/
. Ví dụ: đối với một thiết bị có máy ảnh trước và sau, hãy chạy lệnh sau:python tools/run_all_tests.py
Tập lệnh lặp lại qua các máy ảnh và cảnh kiểm thử dựa trên tệp
config.yml
. Để gỡ lỗi các chế độ thiết lập, bạn nên chạy một trong các cảnhscene2
bằng một lần kiểm thử để có thời gian hoàn tất nhanh nhất.Đối với 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 chụp ảnh cảnh hiện tại, lưu dưới dạng tệp JPEG, ảnh in đường dẫn đến tệp JPEG đến bảng điều khiển và yêu cầu người dùng xác nhận xem hình ảnh tạm ổn. Luồng thu thập và xác nhận này lặp lại cho đến khi người dùng xác nhận rằng hình ảnh đã hợp lệ. Sau đây là những 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ặcSKIP
cho mỗi thử nghiệm ITS.FAIL*
cho biết kiểm thử không thành công nhưng vì quy trình kiểm thử chưa bắt buộc nên quy trình kiểm thử sẽ báo cáo là mộtPASS
tới CtsVerifier.SKIP
cho biết kiểm thử đã thành công vì thiết bị không quảng cáo tính năng cơ bản đang được thử nghiệm. Để ví dụ: nếu một thiết bị không quảng cáo thông qua giao diện máy ảnh khung này hỗ trợ DNG, các bài kiểm thử liên quan đến việc chụp tệp DNG sẽ bị bỏ qua và tính dưới dạngPASS
.Để xác nhận rằng 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 Kiểm tra ITS của máy ảnh trong Trình xác minh CTS sau đó, trình đơn test (kiểm thử) sẽ chuyển sang màu xanh lục và cho biết điện thoại đã vượt qua ITS của Camera.
Kiểm thử DUT song song
Các thiết bị chạy Android 14 trở lên hỗ trợ song song Thử nghiệm DUT. Đ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 độ thử nghiệm tổng thể. Ví dụ: tính năng kiểm thử song song cho phép bạn kiểm thử máy ảnh 0 trong một thiết bị quay và máy ảnh 1 trong một thiết bị quay khác cùng một lúc. Tất cả kiểm thử cho tính năng song song các phiên thử nghiệm được tổng hợp trong phiên Người xác minh CTS về DUT tham chiếu. Bạn phải chạy thử nghiệm song song bằng tính năng điều khiển ánh sáng Arduino, dưới dạng chiếu sáng thủ công không được hỗ trợ 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 sẽ kiểm soát ánh sáng cho mỗi giàn máy.
Sau đây là tệp config.yml
mẫu xác định ba môi trường thử nghiệm để 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 song song các nền tảng thử nghiệm, 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; wait
Mô hình nhiễu DNG
Các thiết bị quảng cáo khả năng chụp ảnh RAW hoặc DNG phải gây ồn trong siêu dữ liệu kết quả chụp của mỗi cảnh quay thô. Mô hình tiếng ồn này phải được nhúng vào lớp trừu tượng phần cứng (HAL) cho camera đối với mỗi camera (ví dụ: mặt trước và camera sau) trên thiết bị có 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 lớp trừu tượng phần cứng (HAL) của máy ảnh.
Để tạo mô hình nhiễu cho từng camera, hãy chạy hàm
dng_noise_model.py
tập lệnh trong 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 máy ảnh và môi trường chụp, xem tài liệuDngNoiseModel.pdf
trong thư mụctools
.Để triển khai mô hình nhiễu cho thiết bị, hãy cắt và dán mã C đoạn mã vào HAL của máy ảnh.
Xác thực mô hình tiếng ồn
Quy trình kiểm thử ITS tự động tests/scene1_1/test_dng_noise_model.py
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 ảnh được cung cấp trong dữ liệu máy ảnh là chính xác.