Tổng quan về Camera ITS

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:

  1. Kết nối DUT với máy chủ lưu trữ qua USB.
  2. Cấp quyền cho máy chủ lưu trữ truy cập vào DUT qua ADB.
  3. 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.zip
    cd android-cts-verifier
    adb install -r -g CtsVerifier.apk
  4. Trê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 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 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.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 đượ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_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ì 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_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

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.yml
python 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.

  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 bài 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ử thiết bị kết hợp cảm biến ITS camera).

  2. 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.py

    Tậ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ảnh scene2 vớ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ặ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 được bắt buộc, nên bài kiểm thử sẽ báo cáo là PASS cho CtsVerifier. SKIP cho 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.

  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ử 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_fusionfeature_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; 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 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:

  1. 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.
  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 thi các bài kiểm thử song song:

    1. Gắn các DUT vào các thiết bị riêng biệt.
    2. Chạy đồng thời các cảnh Camera ITS 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 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.
  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:

    • 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).

      result-aggregation-image-1

      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).

      result-aggregation-image-2

      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.

  1. Để tạo mô hình nhiễu cho mỗi 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 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ệ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 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áo ItsTestSummary, 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á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 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.