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 cách cụ thể, chụp một hoặc nhiều cảnh, và kiểm tra ảnh chụp để xem 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 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 nhóm nhỏ 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:
- Một thiết bị đang được thử nghiệm (DUT)
- Máy chủ (ví dụ: máy tính để bàn hoặc máy tính xách tay 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ủ lưu trữ 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ủ của bạn, 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ụ của Nền tảng SDK Android và phải cài đặt ADB đườ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ữ máy. Đối với phiên bản được phát hành công khai của các công cụ Nền tảng SDK Android, xem Ghi chú phát hành 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.
Di động
Đối với Android 12 trở lên, khung kiểm thử AdMob
phải được cài đặt. Mobilely 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 PYTHONPATH
biến môi trường 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ắt buộc phải tích hợp sẵn ITS đối với tiện ích camera kiểm thử.
Đối với việc kiểm thử thủ công, hãy đảm bảo những yếu tố sau:
- DUT đang ở 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 dao độ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 thử nghiệm ITS hiển thị lời nhắc yêu cầu người dùng thay đổi cảnh thiết lập trước khi bắt đầu thử nghiệm 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à thông qua các cảnh khuôn 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 cảnh dựa 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. Cho
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 giườ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ó các giá trị dòng lệnh cho camera hoặc cảnh,
hãy 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 cảm biến_fusion
Sau đây là tệp config_yml
mẫu 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 kiểm thử sensor_fusion
bằng
hộp hợp nhất cảm biến, 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 trường kiểm thử, một
máy tính bảng đã được thử nghiệm và một máy thử nghiệm sensor_fusion
. Xác định nền thử nghiệm chính xác
dựa trên các cảnh thử nghiệm.
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. Từ
Android 14, thủ công
Google Analytics hỗ trợ tất cả các thử nghiệm, ngoại trừ
scene_extensions
kiểm thử. Đố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 thiết bị, máy chủ lưu trữ (bao gồm cả môi trường) và cảnh thực tế thiết lập, chạy kiểm thử ITS theo quy trình sau.
Mở ứng dụng CTS Verifer. Trong trình đơn kiểm thử, hãy chọn Kiểm tra ITS cho máy ảnh.
Trên máy chủ, hãy chạy các chương trình kiểm thử ITS qua
CameraITS/
thư mục. 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
Kịch bản lặp lại qua các camera và các cảnh thử nghiệm dựa trên Tệp
config.yml
. Để gỡ lỗi chế độ thiết lập, bạn nên chạy một chế độ cài đặt trongscene2
cảnh bằng một bài kiểm thử duy nhất để đạt được tốc độ quay vòng 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à 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ặ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. Cho 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ụ: kiểm thử song song cho phép bạn kiểm thử máy ảnh 0 trong một và camera 1 trong một thiết bị khác cùng 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. Hãy đảm bảo rằng một trên cùng một bộ điều khiển Arduino điều khiển ánh sáng cho từng thiết bị.
Sau đây là tệp config.yml
mẫu xác định 3 nền tảng kiểm thử cần 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 kiểm thử song song, hãy 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 tiếng ồn
Để 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. Cho 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
tests/scene1_1/test_dng_noise_model.py
kiểm tra ITS tự động sẽ xác thực mô hình nhiễu bằng cách xác minh các giá trị độ nhiễu
của độ phơi sáng và độ tăng sáng được cung cấp trong dữ liệu máy ảnh là chính xác.