Tổng quan về Camera ITS

Bộ kiểm thử hình ảnh camera (ITS) là một khung để chạy các 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 tra yêu cầu camera 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 những tính năng được khung camera 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 các kiểm thử ITS, bạn phải thiết lập những nội dung sau:

  • Thiết bị đang được kiểm thử (DUT)
  • Một máy chủ (ví dụ: máy tính để bàn hoặc máy tính xách tay Linux)
  • Một cảnh mà camera chụp ảnh

Thiết lập thiết bị đang kiểm thử (DUT)

Để thiết lập DUT, hãy làm theo các bước sau:

  1. Kết nối DUT với máy chủ qua USB.
  2. Định cấu hình các tuỳ chọn cho nhà phát triển trên DUT:
    • BẬT chế độ không khoá màn hìnhGỡ lỗi qua USB.
    • TẮT chế độ Tự động cập nhật hệ thốngXác minh ứng dụng qua USB.
  3. Cấp quyền cho máy chủ truy cập vào DUT qua ADB.
  4. Cài đặt ứng dụng CTS Verifier (CtsVerifier.apk) trê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.zip
    cd android-cts-verifier
    adb install -r -g CtsVerifier.apk
  5. Trên DUT, hãy chạy ứng dụng máy ảnh mặc định và đóng tất cả các cửa sổ xuất hiện khi chạy để tránh bị can thiệp trong quá trình kiểm thử.

Thiết lập máy chủ

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 để điều khiển 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 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 trình bao hoặc thiết bị đầu cuối đang chạy trên máy chủ. Đối với phiên bản công khai của Bộ công cụ nền tảng SDK Android, hãy xem Ghi chú phát hành về 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 bản phân phối Python đi kèm để đả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 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à máy tính bảng biểu đồ trong lớp its_base_test. Để cài đặt khung kiểm thử Mobly, hãy chạy:

pip install mobly

Thiết lập môi trường

Để thiết lập môi trường thử nghiệm, hãy chạy:

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 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ác cảnh, bạn nên sử dụng chế độ 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ử. Thiết bị kiểm thử ITS-in-a-box hỗ trợ mọi yêu cầu về ánh sáng, căn chỉnh và thay đổi biểu đồ cho ITS. Ngoài ra, bạn cần có ITS-in-a-box để kiểm thử các tiện ích camera.

Đối với kiểm thử thủ công, hãy đảm bảo những điều sau:

  • DUT được đặt trên giá ba chân
  • DUT được hướng vào đúng cảnh cho mỗi bài kiểm thử. Kịch bản kiểm tra ITS cung cấp lời nhắc để thay đổi chế độ thiết lập cảnh trước khi bắt đầu kiểm tra trong một cảnh mới.
  • 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 thử nghiệm.
  • Khung cảnh được chiếu sáng bằng một nguồn sáng ổn định, không nhấp nháy. (Không 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ị một 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 tra trong một cảnh mới.

Bạn phải đặt hướng điện thoại sao cho camera chụp ảnh mà không bị xoay. Cách dễ nhất để kiểm tra việc này là dùng các cảnh khuôn mặt trong cảnh 2. Hầu hết điện thoại đều có hướng ngang, xoay điện thoại ngược chiều kim đồng hồ cho camera sau và xoay theo chiều kim đồng hồ cho camera trước.

Để kiểm tra sự căn chỉnh giữa DUT và biểu đồ, hãy chạy tools/check_alignment.py để xuất toạ độ x,y cho tâm của biểu đồ so với tâm của hình ảnh, đồng thời chú thích một hình ảnh đã chụp bằng hai tâm để có sự căn chỉnh tối ưu.

Tệp cấu hình

Khi sử dụng khung Mobly, bạn phải tạo một tệp cấu hình config.yml để xác định testbed Mobly. Sau đây là 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à một 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 thử nghiệm 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 tạo, trình chạy kiểm thử Mobly sẽ khởi tạo các tham số trong tệp và truyề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 nền tảng kiểm thử, 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ì quá trình kiểm thử sẽ chạy với các giá trị tệp config.yml. Nếu có cá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.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=0 scenes=scene_tele
python 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 sẽ có trong config.yml cho TEST_BED_TABLET_SCENES. Tham số này giải quyết các vấn đề về việc điều chỉnh tỷ lệ biểu đồ cho các thiết bị camera từ xa có trường nhìn (FoV) rộng hơn, ngăn chặn việc cắt cảnh và thực thi tiêu điểm thiết bị thích hợp trong quá trình kiểm thử.

Các giá trị được hỗ trợ cho chart_scaling1, 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ì 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 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 dùng hoặc một lỗi sẽ được gắn cờ nếu không có tính năng chia tỷ lệ.

Sau đây là một config.yml mẫu 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 cần điều chỉnh phía kiểm thử để bật các chức năng điều chỉnh tỷ lệ biểu đồ ITS của Camera. Nếu một kiểm thử mà 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ột thay đổi mẫu về 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 sensor_fusion scene config.yml

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 có trong tên testbed. Android 13 trở lên chỉ hỗ trợ bộ điều khiển Arduino để kết hợp cảm biến do có quy trình kiểm thử tính năng ổn định video và xem trước. 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_fusion
python tools/run_all_tests.py scenes=sensor_fusion camera=0
python tools/run_all_tests.py scenes=scene_flash,feature_combination
python tools/run_all_tests.py scenes=checkerboard camera=1

Nhiều tệp config.yml của testbed

Sau đây là ví dụ về tệp config.yml có nhiều nền tảng kiểm thử, một nền tảng kiểm thử máy tính bảng và một nền tảng kiểm thử sensor_fusion. Nền tảng thử nghiệm 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 kiểm thử thủ công

Sau đây là ví dụ về tệp config.yml để kiểm thử thủ công. Android 14 trở lên hỗ trợ 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 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ể có phần nhãn hoặc số sê-ri 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 Gen2 rig testing config.yml

Sau đây là ví dụ về tệp config.yml của một TEST_BED_GEN2 testbed. Sử dụng bệ thử này cho các kiểm thử scene_ip, sử dụng giàn Gen2. Ví dụ sau đây cho thấy các tham số của môi trường kiểm thử khi có sẵn giàn thử nghiệm Thế hệ 2 và các kiểm thử scene_ip không 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: 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 thông số của môi trường kiểm thử khi giàn Gen2 không có sẵn và các 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 kiểm thử scene_ip, hãy dùng một trong các lệnh sau:

python tests/scene_ip/test_default_jca_ip.py -c config.yml
python tools/run_all_tests.py camera=<camera-id> scenes=scene_ip

Chạy các quy trình kiểm thử ITS

Phần này mô tả cách chạy các kiểm thử ITS.

Gọi các kiểm thử

Sau khi thiết lập thiết bị, máy chủ (bao gồm cả môi trường) và cảnh thực tế, hãy chạy các kiểm thử ITS theo quy trình sau.

  1. 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 kiểm thử sensor_fusionfeature_combination nằm trong một hoạt động bổ sung có tên là Camera ITS Sensor Fusion Rig Test (Kiểm thử giàn hợp nhất cảm biến ITS của camera).

  2. Trên máy chủ, hãy chạy các bài kiểm thử ITS trong 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.py

    Tập lệnh này lặp lại các camera 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ảnh scene2 với một thử nghiệm duy nhất để có thời gian hoàn thành nhanh nhất.

    Đối với kiểm thử thủ công, trước khi bắt đầu chạy bộ 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 dưới dạng JPEG, in đường dẫn đến 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ặc SKIP cho 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 bắt buộc nên bài kiểm thử sẽ báo cáo là PASS cho CtsVerifier. SKIP cho biết đã vượt qua kiểm thử 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 mà thiết bị đó hỗ trợ DNG, thì các kiểm thử liên quan đến tính năng chụp tệp DNG sẽ bị bỏ qua và được tính là PASS.

  3. Để 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ử Camera ITS) trong trình đơn kiểm thử của Trình xác minh CTS sẽ chuyển sang màu xanh lục và cho biết điện thoại đã vượt qua Camera ITS.

Giảm thời gian kiểm thử

Camera ITS hỗ trợ một số tính năng để tối ưu hoá và giảm tổng thời gian thực thi kiểm thử trên các thiết bị và cảnh.

Kiểm thử camera phụ

Một trong những phương pháp hiệu quả nhất để giảm thời gian kiểm thử camera là cung cấp một camera logic duy nhất cho các ứng dụng bên thứ ba bằng API nhiều camera. API nhiều camera xác định một hệ thống camera logic bao gồm một camera chính (thường là camera có góc nhìn rộng), cùng với các camera phụ vật lý hoạt động ở các mức thu phóng khác nhau (thường là camera siêu rộng và camera tele). Các camera sử dụng API nhiều camera giúp giảm đáng kể thời gian kiểm thử so với việc hiển thị từng camera riêng lẻ. Trong khi camera logic chính chạy bộ kiểm thử đầy đủ, các camera phụ sẽ chạy một tập hợp con nhắm đến của bộ kiểm thử tổng thể như minh hoạ trong bảng sau:

Scene Kiểm thử camera phụ
scene0 test_jitter, test_solid_color_test_pattern
scene1_1 test_burst_sameness_manual, test_dng_noise_model, test_exposure, test_linearity
scene1_2 test_raw_exposure, test_raw_sensitivity, test_yuv_plus_raw
scene2_a test_faces, test_num_faces
scene3 test_flip_mirror
scene4 test_aspect_ratio_and_crop
sensor_fusion test_sensor_fusion

Kiểm thử DUT song song

Các thiết bị chạy Android 14 trở lên hỗ trợ 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 giàn để tăng tốc quá trình kiểm thử tổng thể. Ví dụ: kiểm thử song song cho phép bạn kiểm thử camera 0 trong một giàn và camera 1 trong một giàn khác cùng một lúc. Đối với Android 17 trở lên, vì các kiểm thử Camera ITS được chia thành 2 hoạt động, nên bạn có thể chạy các kiểm thử sensor_fusionfeature_combination trên một DUT, còn các kiểm thử khác trên một DUT khác song song. Tất cả hoạt động kiểm thử cho các phiên kiểm thử song song đều được tổng hợp trên phiên CTS Verifier trên DUT tham chiếu. Bạn phải chạy thử nghiệm song song với chế độ điều khiển đèn Arduino, vì chế độ điều khiển đèn thủ công không được hỗ trợ trong thử nghiệm 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ẽ điều khiển ánh sáng cho từng giàn.

Sau đây là một tệp config.yml mẫu xác định 3 nền tả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 các testbed 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

Gử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 của Trình xác minh CTS (từ các lần chạy kiểm thử hoặc thiết bị khác nhau) thành một bả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:

  1. Chuẩn bị thiết bị: Tập hợp từ 2 đến 3 thiết bị đang kiểm thử (DUT) có dấu vân tay số của phiên bản giống hệt nhau.
  2. 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.
  3. Thực hiện các kiểm thử song song:

    1. Lắp các DUT vào các giàn đỡ riêng biệt.
    2. Chạy đồng thời các cảnh ITS Camera khác nhau trên mỗi thiết bị.
    3. Tập hợp báo cáo: Lấy báo cáo CTS Verifier sau mỗi lần chạy. Điều 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.
  4. 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.

  5. 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:

    • Mục Phân tích kiểm thử cho thấy danh sách đầy đủ của tất cả các cảnh đã thực thi.
    • Các cảnh không thực hiện được hoặc không thành công sẽ xuất hiện trong phần Không thành công.

      result-aggregation-image-1

      Hình 1. Tài liệu về những cảnh không được thực hiện hoặc không thành công.

    • Các cảnh vượt qua được liệt kê trong phần Aggregated Pass (Tổng hợp cảnh vượt qua).

      result-aggregation-image-2

      Hình 2. Các cảnh được phân loại là Aggregated Pass

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

Những thiết bị quảng cáo khả năng chụp ảnh RAW hoặc DNG phải cung cấp một mô hình nhiễu trong siêu dữ liệu kết quả chụp của mỗi bức ảnh thô. Mô hình nhiễu này phải được nhúng vào HAL camera cho từng camera (ví dụ: camera 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ột 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.

  1. Để tạo một mô hình nhiễu cho từng camera, hãy chạy tập lệnh dng_noise_model.py trong thư mục tools. Thao tác này sẽ xuất 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ệu DngNoiseModel.pdf trong thư mục tools.

  2. Để 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 tiếng ồn

Thử nghiệm 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à độ khuếch đạ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ử đạt yêu cầu ở mức độ vừa phải (trạng thái kiểm thử PASS*)

Trong Android 17 trở lên, kết quả đạt ở mức tối thiểu (PASS*) cho biết một bài kiểm thử đã đạt, 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 đạt được xác định trước. Mặc dù về mặt kỹ thuật, kiểm thử đáp ứng các tiêu chí đạt, nhưng việc gần với ranh giới thất bại cho thấy cần phải kiểm tra kỹ hơn.

Lợi ích của việc vượt qua bài kiểm tra ở mức độ vừa đủ

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 những thử nghiệm sắp thất bại, cho phép các nhóm giải quyết vấn đề trước khi chúng dẫn đến thất bại hoàn toàn.

  • Tối ưu hoá chủ động: Khuyến khích các nhóm tối ưu hoá những thử nghiệm và mã đang hoạt động ở mức thấp hơn trong phạm vi chấp nhận được, giúp 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ờ những khu vực có thể dễ bị hồi quy trong tương lai khi có 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 thử nghiệm PASS*, bạn có thể giảm đáng kể thời gian và công sức cần thiết để gỡ 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 thông tin sau:

  • Xác định ngưỡng: Ngưỡng đạt yêu cầu cụ thể được xác định cho từng kiểm thử có liên quan trong Camera ITS.

  • Tự động phát hiện: Hệ thống tự động hoá kiểm thử sẽ phát hiện và phân loại các 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 kiểm thử được gắn cờ là PASS*, hướng dẫn họ điều tra kiểm thử cụ thể và các chỉ số của kiểm thử đó.

  • Báo cáo: Trạng thái đạt có điều kiện được chỉ rõ trong báo cáo kiểm thử và trang tổng quan để dễ thấy hơn dưới dạng PASS* trong báo cáo ItsTestSummary, tương tự như Fail* đối với các kiểm thử not_yet_mandated. Bài kiểm thử vẫn giữ trạng thái màu xanh lục vì tiếp tục vượt qua các ngưỡng đã thiết lập để tránh gây nhầm lẫn thêm. Trạng thái PASS* 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à PASS ngay 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 kiểm thử vượt qua một cách sát sao trên một thiết bị. Điều này cho phép theo dõi những điểm cải tiến camera trong tương lai của OEM nếu các 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ử bằng 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 PASS* cảnh báo
  • Tìm hiểu nguyên nhân gốc của các kiểm thử PASS*
  • Chủ động tối ưu hoá các kiểm thử và mã được xác định là PASS*

Trạng thái PASS* nhằm mục đích nâng cao độ ổn định và độ tin cậy của hoạt động kiểm thử Camera ITS, từ đó tạo ra một sản phẩm ổn định và chất lượng cao.