1. 摄像头测试用例主要位置

Python 测试用例目录

主要在这些目录下:

  • Case/Products/*/AUSanity/Camera/
  • Case/Products/*/Stability/Camera.py
  • Case/Products/*/PreFlight/Camera.py
  • Case/Products/*/Sanity/Camera.py
  • Case/Products/QRB5165_UBUN_1_1/Camera/
  • Case/Products/QRB5165_UBUN_2_0/Camera/
  • Case/Products/*/Robotics/*camera*.py

典型文件包括:

  • Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/Camera.py
  • Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraIMX586.py
  • Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraIMX686.py
  • Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraOV9282.py
  • Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraGMSL.py
  • Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraIMX766.py
  • Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraIMX688.py
  • Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraOV64B40.py
  • Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraS5K3M5.py
  • Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraConcurrency.py
  • Case/Products/QCS8625_LE_1_0/AUSanity/Camera/*.py
  • Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/*.py
  • Case/Products/QCS610_LE_1_0_C2/Stability/Camera.py
  • Case/Products/QRB5165_UBUN_2_0/Stability/Camera.py
  • Case/Products/QRB5165_UBUN_1_1/Camera/CameraGST.py
  • Case/Products/QRB5165_UBUN_1_1/Camera/CameraHAL3.py
  • Case/Products/QRB5165_UBUN_1_1/Camera/CameraFRandLBT.py

Plan 配置目录

摄像头命令和计划主要在:

  • Plan/*/*/Config/Camera/
  • Plan/*/*/Config/Camera/TestCommands/*.json
  • Plan/*/*/Config/PreFlight/*Camera*.xml
  • Plan/*/*/Config/Stability/*Camera*.xml

典型配置文件:

  • Plan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/GSTCommands.json
  • Plan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/SevenCameraCommends.json
  • Plan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/USBCameraCommands.json
  • Plan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/LBT_GSTCommands.json
  • Plan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/LBT_HAL3Commands.json
  • Plan/LE/QCS8550_LE_1_0/Config/Camera/TestCommands/CameraGST_commands.json
  • Plan/LE/QCS610_LE_1_0_C2/Config/Camera/QCS610_LE_1_0_C2_Camera_LBT_test_plan.xml

2. QRB5165_UBUN_2_0 摄像头用例

2.1 AUSanity 单摄基础功能

平台 文件路径 用例 / 用例族 测试点 Pass 条件
QRB5165_UBUN_2_0 Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/Camera.py IMX577Preview IMX577 预览,3840x2160,60fps,dump YUV /data/output/camera/ 下生成 IMX577_Preview*.yuv,且文件大小 > 0
QRB5165_UBUN_2_0 同上 IMX577Snapshot IMX577 预览 + 拍照,输出 JPG pipeline 进入 PLAYING;生成 IMX577_Snapshot_*.jpg;文件大小 > 0
QRB5165_UBUN_2_0 同上 IMX577LiveSnapshot IMX577 边录像边拍照,H.264 mp4 + JPG pipeline 进入 PLAYING;生成 IMX577_Live_Snapshot_*.jpg 且大小 > 0;同时拉取 IMX577_h264.mp4
QRB5165_UBUN_2_0 Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraIMX586.py IMX586Preview IMX586 预览,4K YUV dump 生成 IMX586_Preview*.yuv 且大小 > 0
QRB5165_UBUN_2_0 同上 IMX586Snapshot IMX586 拍照,JPG 输出,8000x6000 pipeline 进入 PLAYING;生成 IMX586_Snapshot_*.jpg 且大小 > 0
QRB5165_UBUN_2_0 同上 IMX586LiveSnapshot IMX586 live snapshot + H.264 录像 生成 IMX586_Live_Snapshot_*.jpg 且大小 > 0;生成或拉取 IMX586_h264.mp4
QRB5165_UBUN_2_0 Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraIMX686.py IMX686Preview / Snapshot / LiveSnapshot IMX686 预览、拍照、边录边拍 对应 YUV/JPG/MP4 文件存在且大小 > 0
QRB5165_UBUN_2_0 Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraOV9282.py CameraOV9282 相关用例 OV9282 tracking camera 预览 / RAW10 dump 输出 .raw10 或预览 dump 文件,文件存在且大小 > 0
QRB5165_UBUN_2_0 Case/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraGMSL.py CameraGMSL 相关用例 GMSL 摄像头预览、RAW12、录像、快照 输出 .raw12 / .mp4 / .jpg 等目标文件,且大小 > 0

2.2 Stability 摄像头稳定性与并发

平台 文件路径 用例 / 用例族 测试点 Pass 条件
QRB5165_UBUN_2_0 Case/Products/QRB5165_UBUN_2_0/Stability/Camera.py IMX577SnapshotDisplayPreview IMX577 display preview + snapshot 生成 snapshot* 文件,大小 > 0
QRB5165_UBUN_2_0 同上 IMX577LiveSnapshotDisplayPreview IMX577 预览 + 录像 + live snapshot 子进程 IMX577LSDPCon 执行成功;snapshot 和 mp4 都存在且大小 > 0
QRB5165_UBUN_2_0 同上 DualCameraConcurrency 双摄并发:IMX577 live snapshot + OV9282 tracking preview 两个并发子进程都 Pass;主摄 snapshot/video 成功,tracking camera preview 成功
QRB5165_UBUN_2_0 同上 FourIMX577Concurrency 四路 IMX577 并发录像 /data/output/ 中生成 mux0_264.mp4mux1_264.mp4mux2_264.mp4mux3_264.mp4,全部大小 > 0
QRB5165_UBUN_2_0 同上 SevenCameraConcurrency 七摄并发:2 路 IMX577、3 路 OV9282、2 路 GMSL 所有 7 个子摄像头进程都 Pass;IMX577 要生成 jpg + mp4;OV9282 要生成 raw10;GMSL 要生成 raw12
QRB5165_UBUN_2_0 同上 TwoOV9282DisplayPreview 两路 OV9282 同时 display preview 两路 pipeline 都成功进入 PLAYING,日志中有 Pipeline state change was successful
QRB5165_UBUN_2_0 同上 TwoGMSLDisplayPreview 两路 GMSL 同时 display preview 两路 GMSL 子进程都 Pass,日志中有 pipeline 成功状态

2.3 Camera 通用 GST/HAL3/LBT 测试

平台 文件路径 用例 / 用例族 测试点 Pass 条件
QRB5165_UBUN_1_1 / 2_0 复用 Case/Products/QRB5165_UBUN_1_1/Camera/CameraGST.py GSTCamera 从 JSON 读取 GStreamer 命令,执行单摄/多摄 preview、video、snapshot、参数测试 pipeline_resvideo_respreview_res 全部为 True
QRB5165_UBUN_1_1 / 2_0 复用 同上 CameraStartStopSequence 多摄启动/停止顺序组合测试 所有排列组合的 pipeline、video、preview 检查均通过;没有失败子目录
QRB5165_UBUN_1_1 / 2_0 复用 同上 CameraLongDuration 长时间 Camera 稳定性测试 GlobalVariable.test_time 内循环检查:pipeline 正常、video 正常、preview 正常、GST log 无错误、无 coredump
QRB5165_UBUN_1_1 / 2_0 复用 Case/Products/QRB5165_UBUN_1_1/Camera/CameraHAL3.py CameraHAL3 使用 camx-hal3-test 测 HAL3 preview/video/snapshot app 启动成功;preview/video/snapshot dump 存在且大小 > 0;无 crash dump;性能用例 fps 达标
QRB5165_UBUN_1_1 / 2_0 复用 同上 CameraHAL3LongDuration HAL3 长时间测试 指定时间内多轮 dump 检查均正常;无 crash;最后设置 PASS
QRB5165_UBUN_1_1 / 2_0 复用 Case/Products/QRB5165_UBUN_1_1/Camera/CameraFRandLBT.py yavta USB/V4L2/yavta camera buffer 采集 log 中出现 buffers released,或生成 testyuv* 文件且大小 > 0

3. QCS610_LE_1_0_C2 摄像头用例

平台 文件路径 用例 / 用例族 测试点 Pass 条件
QCS610_LE_1_0_C2 Case/Products/QCS610_LE_1_0_C2/Stability/Camera.py IMX577Snapshot IMX577 预览 + 拍照 生成 snapshot*.jpg 且大小 > 0;生成 frame*.yuv 且大小 > 0;两者都满足才 Pass
QCS610_LE_1_0_C2 同上 IMX577LiveSnapshot IMX577 预览 + snapshot + H.264 录像 snapshot*.jpgframe*.yuvmux1.mp4 均存在且大小 > 0
QCS610_LE_1_0_C2 同上 USBCameraVideoRecording USB Camera 录像,v4l2src 采集 log 中包含 Execution ended,且不包含 error;/tmp/uvc.mp4 存在且大小 > 0
QCS610_LE_1_0_C2 同上 USBCameraCon USB Camera 并发封装录像 USBCameraVideoRecording 类似;mp4 存在且大小 > 0 后子进程 Pass
QCS610_LE_1_0_C2 同上 IMX577VideoRecordingPreview IMX577 preview + video recording 子进程 IMX577VideoRecordingPreviewCon Pass
QCS610_LE_1_0_C2 同上 IMX577VideoRecordingPreviewCon 预览帧 dump + 录像 frame*.yuv 存在且大小 > 0;mux1.mp4 存在且大小 > 0

4. QCS8550_LE_1_0 摄像头用例

4.1 AUSanity 单摄

平台 文件路径 用例 / 用例族 测试点 Pass 条件
QCS8550_LE_1_0 Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraIMX766.py IMX766Preview / Snapshot / LiveSnapshot IMX766 主摄 4K/8K 预览、拍照、边录边拍 pipeline 进入 PLAYING;对应 YUV/JPG/MP4 文件存在且大小 > 0
QCS8550_LE_1_0 Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraIMX688.py IMX688LiveSnapshot IMX688 预览、录像、live snapshot 目标输出文件存在且大小 > 0
QCS8550_LE_1_0 Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraOV64B40.py CameraOV64B40 OV64B40 4K preview/video 预览或视频输出存在且大小 > 0
QCS8550_LE_1_0 Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraS5K3M5.py CameraS5K3M5 S5K3M5 RAW10 / RDI dump RAW/YUV dump 存在且大小 > 0
QCS8550_LE_1_0 Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraOV9282.py CameraOV9282 OV9282 tracking camera RAW10 或 preview dump 存在且大小 > 0
QCS8550_LE_1_0 Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraGMSL.py CameraGMSL GMSL preview、raw、video、snapshot 对应 raw12/mp4/jpg/yuv 文件存在且大小 > 0

4.2 并发 / 压力

平台 文件路径 用例 / 用例族 测试点 Pass 条件
QCS8550_LE_1_0 Case/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraConcurrency.py FourCameraConcurrency 或 HDK/HAL 四摄相关 四摄并发,通常覆盖 IMX766、IMX688、OV64B40、S5K3M5 四路 camera 输出均存在,且文件大小 > 0;所有子进程 Pass
QCS8550_LE_1_0 Case/Products/QCS8550_LE_1_0/Stability/Camera.py Camera stability 用例 长时间摄像头压力 / 多轮稳定性 测试周期内无 crash、无 coredump、输出正常、fps/日志检查正常
QCS8550_LE_1_0 Case/Products/QCS8550_LE_1_0/Stability/NonGPU/Camera.py NonGPU Camera 压力 非 GPU 场景下摄像头稳定性 同稳定性逻辑:pipeline 正常、输出正常、无 error

5. QCS8625_LE_1_0 摄像头用例

平台 文件路径 用例 / 用例族 测试点 Pass 条件
QCS8625_LE_1_0 Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraIMX766.py IMX766 相关 主摄 preview/snapshot/live snapshot 输出文件存在且大小 > 0
QCS8625_LE_1_0 Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraIMX688.py IMX688 相关 预览、录像、快照 输出文件存在且大小 > 0
QCS8625_LE_1_0 Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraOV64B40.py OV64B40 相关 4K preview/video 输出文件存在且大小 > 0
QCS8625_LE_1_0 Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraS5K3M5.py S5K3M5 相关 RAW10/RDI dump raw/yuv 输出存在且大小 > 0
QCS8625_LE_1_0 Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraOV9282.py OV9282 相关 tracking camera preview/raw dump raw10 或 preview dump 存在且大小 > 0
QCS8625_LE_1_0 Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraGMSL.py GMSL 相关 GMSL preview/video/raw/snapshot raw12/mp4/jpg/yuv 等存在且大小 > 0
QCS8625_LE_1_0 Case/Products/QCS8625_LE_1_0/AUSanity/Camera/CameraConcurrency.py 并发 camera 多摄并发 所有并发子摄像头均 Pass
QCS8625_LE_1_0 Case/Products/QCS8625_LE_1_0/Stability/Camera.py Camera stability 稳定性压力 指定时间内无错误、输出正常、无 crash

6. CQ7790M_LE_1_5 摄像头用例

平台 文件路径 用例 / 用例族 测试点 Pass 条件
CQ7790M_LE_1_5 Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraIMX766.py IMX766 preview/snapshot/live snapshot 输出文件存在且大小 > 0
CQ7790M_LE_1_5 Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraIMX688.py IMX688 preview/video/snapshot 输出文件存在且大小 > 0
CQ7790M_LE_1_5 Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraIMX858.py IMX858 preview/video/snapshot 输出文件存在且大小 > 0
CQ7790M_LE_1_5 Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraS5KJN1.py S5KJN1 preview/video/snapshot 输出文件存在且大小 > 0
CQ7790M_LE_1_5 Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraOV9282.py OV9282 tracking camera raw10/preview 输出存在且大小 > 0
CQ7790M_LE_1_5 Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraGMSL.py GMSL raw12/preview/video/snapshot 输出文件存在且大小 > 0
CQ7790M_LE_1_5 Case/Products/CQ7790M_LE_1_5/AUSanity/Camera/CameraConcurrency.py 多摄并发 多路 camera 同时运行 所有子 camera 结果均为 Pass

7. SW5100_LAW 系列摄像头用例

平台 文件路径 用例 / 用例族 测试点 Pass 条件
SW5100_LAW_1_0 Case/Products/SW5100_LAW_1_0/PreFlight/Camera.py PreFlight Camera Android/LAW 平台摄像头预检,snapshot / live snapshot / video 输出文件生成、命令执行无 error、检查逻辑通过
SW5100_LAW_1_1 Case/Products/SW5100_LAW_1_1/PreFlight/Camera.py PreFlight Camera 前后摄 ZSL/PZSL snapshot、双摄 snapshot、双摄录像 对应截图/录像文件存在;流程无异常
SW5100_LAW_1_1 Case/Products/SW5100_LAW_1_1/Sanity/Camera.py Sanity Camera 基础相机 sanity 命令执行成功,目标输出存在
SW5100_LAW_1_1 Case/Products/SW5100_LAW_1_1/Stability/Camera.py Stability Camera 摄像头稳定性 指定时间内无错误、输出正常
SW5100_LAW_2_0 Case/Products/SW5100_LAW_2_0/Sanity/Camera.py Sanity Camera 基础相机功能 输出正常,无异常

相关 Plan:

  • Plan/LAW/SW5100_LAW_1_1/Config/PreFlight/SingleCase/*Camera*.xml
  • 例如:
    • Back_Camera_ZSL_Snapshot
    • Front_Camera_ZSL_Snapshot
    • Back_Camera_PZSL_Snapshot
    • Front_Camera_PZSL_Snapshot
    • pre_flight_dual_camera_snapshot
    • pre_flight_dual_camera_video_record

8. QRB2210_LE_1_0 摄像头用例

平台 文件路径 用例 / 用例族 测试点 Pass 条件
QRB2210_LE_1_0 Case/Products/QRB2210_LE_1_0/PreFlight/Camera.py PreFlight Camera 摄像头预检、双摄并发 预览/录像/快照输出存在,无 error
QRB2210_LE_1_0 Plan XML camera_concurrency 两路 camera 并发 两个 camera 都正常输出,整体 Pass

相关 Plan:

  • Plan/LE/QRB2210_LE_1_0/Config/PreFlight/SingleCase/*camera_concurrency.xml

9. Robotics / ROS Camera 用例

平台 文件路径 用例 / 用例族 测试点 Pass 条件
QRB5165_UBUN_2_0 Case/Products/QRB5165_UBUN_2_0/Robotics/camera_ros_node.py Camera ROS node ROS 摄像头节点启动、数据发布 ROS node 正常运行,日志无错误,预期 topic/data 正常
QRB5165_UBUN_2_0 Case/Products/QRB5165_UBUN_2_0/Robotics/Zero_copy_camera_node.py Zero copy camera node 零拷贝 camera node 节点启动成功,数据流正常,无异常
QCS9100_LE_1_0 Case/Products/QCS9100_LE_1_0/Stability/CameraROSNode.py camera_ros_node_ov9282 OV9282 ROS camera node 稳定性 ROS camera 节点正常运行,测试周期内无错误

相关 Plan:

  • Plan/LE/QCS9100_LE_1_0/Config/Stability/QCS9100_LE_1_0_APStress.xml
  • Plan/LE/QCS9100_LE_1_0/Config/Stability/LeMansReboot.json

10. Plan/Config 中的摄像头功能覆盖

10.1 QRB5165_UBUN_2_0 Camera Plan

配置路径 测试点
Plan/LU/QRB5165_UBUN_2_0/Config/Camera/Axoim_plan/imx577_camera/ 主摄 IMX577 preview、YUV dump、snapshot、live snapshot、video H.264/H.265、HFR、参数测试
Plan/LU/QRB5165_UBUN_2_0/Config/Camera/Axoim_plan/ov9282_camera/ tracking camera preview、RAW dump、ISO、曝光、zoom
Plan/LU/QRB5165_UBUN_2_0/Config/Camera/Axoim_plan/gmsl_camera/ GMSL preview、RAW/YUV dump、video H.264/H.265、snapshot、live snapshot、参数测试
Plan/LU/QRB5165_UBUN_2_0/Config/Camera/Axoim_plan/usb_camera/ USB camera preview、snapshot、video、MJPEG/YUV 编码
Plan/LU/QRB5165_UBUN_2_0/Config/Camera/Axoim_plan/Hal3/ HAL3 preview、snapshot、live snapshot、HFR、manual WB/exposure、anti-flicker
Plan/LU/QRB5165_UBUN_2_0/Config/Camera/Axoim_plan/2_camera/ 双摄并发,主摄 + tracking camera,多种启动顺序和功能组合
Plan/LU/QRB5165_UBUN_2_0/Config/Camera/FR65021_7_Camera_Concurrency/ 七摄并发
Plan/LU/QRB5165_UBUN_2_0/Config/Camera/FR63626_ISP_Switch/ ISP switch,多 camera 组合切换测试
Plan/LU/QRB5165_UBUN_2_0/Config/Camera/Camera_LBT/ LBT camera GST/HAL3 测试

10.2 QCS8550_LE_1_0 Camera Plan

配置路径 测试点
Plan/LE/QCS8550_LE_1_0/Config/Camera/TestCommands/CameraGST_commands.json QCS8550 Camera GST 命令
Plan/LE/QCS8550_LE_1_0/Config/PreFlight/QCS8550_LE_1_0_PF_HDKFourCameraConcurrency.xml HDK 四摄并发
Plan/LE/QCS8550_LE_1_0/Config/PreFlight/QCS8550_LE_1_0_PF_HALFourCameraConcurrency.xml HAL 四摄并发
Plan/LE/QCS8550_LE_1_0/Config/Stability/QCS8550_LE_1_0_HALFourCameraStress.xml HAL 四摄压力测试

10.3 QCS610_LE_1_0_C2 Camera Plan

配置路径 测试点
Plan/LE/QCS610_LE_1_0_C2/Config/Camera/QCS610_LE_1_0_C2_Camera_LBT_test_plan.xml Camera LBT
Plan/LE/QCS610_LE_1_0_C2/Config/Camera/QCS610_LE_1_0_C2_IMSDK_test_plan.xml IMSDK camera
Plan/LE/QCS610_LE_1_0_C2/Config/Camera/TestCommands/GSTCommands.json GST camera 命令
Plan/LE/QCS610_LE_1_0_C2/Config/Camera/TestCommands/VideoCommands.json 视频相关命令

11. 按测试点归类总结

11.1 Preview 测试

覆盖用例:

  • IMX577Preview
  • IMX586Preview
  • IMX686Preview
  • IMX766Preview
  • TrackingCameraPreview
  • TwoOV9282DisplayPreview
  • TwoGMSLDisplayPreview
  • HAL3 preview
  • GST preview

主要检查:

  • camera pipeline 是否能进入 PLAYING。
  • 是否能输出 preview dump。
  • 是否能 display preview。
  • 是否无 GST error。

Pass 条件:

  • pipeline 状态成功。
  • yuv/raw/ubwc dump 文件存在且大小 > 0。
  • 或日志中有 preview 成功关键字。
  • 无 error / crash / coredump。

11.2 Snapshot 测试

覆盖用例:

  • IMX577Snapshot
  • IMX586Snapshot
  • IMX686Snapshot
  • IMX766Snapshot
  • MainCameraSnapshotDisplayPreview
  • HAL3 snapshot
  • GMSL snapshot
  • USB snapshot

主要检查:

  • pipeline 启动。
  • 触发 capture-image。
  • JPG 是否生成。

Pass 条件:

  • snapshot jpg 文件存在。
  • 文件大小 > 0。
  • 同时要求 preview 的用例,还需要 preview dump 存在且大小 > 0。

11.3 Live Snapshot 测试

覆盖用例:

  • IMX577LiveSnapshot
  • IMX586LiveSnapshot
  • IMX686LiveSnapshot
  • IMX766LiveSnapshot
  • MainCameraLiveSnapshotDisplayPreview
  • IMX577LiveSnapshotDisplayPreview
  • GMSL live snapshot

主要检查:

  • preview、录像、拍照同时工作。
  • live snapshot 中 capture-image 是否成功。
  • 录像文件是否正常。

Pass 条件:

  • jpg snapshot 存在且大小 > 0。
  • mp4 video 存在且大小 > 0。
  • 如果有 preview dump,preview dump 也要存在且大小 > 0。

11.4 Video Recording 测试

覆盖用例:

  • IMX577VideoRecordingPreview
  • USBCameraVideoRecording
  • GST video H.264/H.265
  • GMSL video recording
  • USB camera video recording

主要检查:

  • video encoder 是否正常。
  • mp4 是否生成。
  • MediaInfo 是否匹配期望编码、分辨率、fps。

Pass 条件:

  • GStreamer 执行无 error。
  • stdout 中有 Execution ended 或 pipeline 正常结束。
  • mp4 文件存在且大小 > 0。
  • 如果有 MediaInfo 检查,编码、分辨率、fps 要符合预期。

11.5 RAW Dump 测试

覆盖用例:

  • OV9282 RAW10
  • GMSL RAW12
  • S5K3M5 RAW10/RDI
  • HAL3 raw dump

主要检查:

  • RAW 数据是否能从 sensor dump 出来。
  • RAW 格式是否符合预期。

Pass 条件:

  • .raw10.raw12 文件存在。
  • 文件大小 > 0。
  • 无 pipeline error。

11.6 多摄并发测试

覆盖用例:

  • DualCameraConcurrency
  • FourCameraConcurrency
  • FourIMX577Concurrency
  • SevenCameraConcurrency
  • TwoOV9282DisplayPreview
  • TwoGMSLDisplayPreview
  • HDK/HAL four camera concurrency

主要检查:

  • 多路 camera 是否可同时启动。
  • 多路 preview/video/raw/snapshot 是否互不影响。
  • 各个子进程是否都能成功完成。

Pass 条件:

  • 每个子 camera 的输出都存在且大小 > 0。
  • 所有子进程 test_result == PASS
  • 任意一路失败则整体 Fail。

11.7 Camera 参数测试

覆盖配置:

  • ISO
  • manual exposure time
  • manual white balance
  • exposure metering
  • zoom
  • anti-flicker
  • HFR 参数

主要检查:

  • 参数是否能下发。
  • 参数下发后 preview/snapshot/video 是否仍正常。
  • 参数场景下是否无 crash。

Pass 条件:

  • 参数设置流程无异常。
  • pipeline 正常。
  • 输出文件存在且大小 > 0。
  • 无 GST error / camera crash。

11.8 长时间稳定性测试

覆盖用例:

  • CameraLongDuration
  • CameraHAL3LongDuration
  • HALFourCameraStress
  • APStress 中的 camera case

主要检查:

  • 长时间预览。
  • 长时间录像。
  • 多轮 snapshot / dump。
  • fps 是否持续正常。
  • 是否产生 coredump。
  • 存储空间是否充足。
  • GST/HAL3 是否报错。

Pass 条件:

  • 在指定测试时间内每轮检查都通过。
  • 无 crash。
  • 无 coredump。
  • GST log 无 error。
  • 输出文件正常。
  • 性能用例 fps 达标。

12. 项目中 Camera Pass 判定的共性逻辑

大多数 Camera 用例最终都围绕下面几个条件判断:

条件 说明
pipeline 成功 日志中检测 PLAYINGPipeline state changed from PAUSED to PLAYING
文件存在 通过 adb shell ls / grep 查找目标文件
文件大小 > 0 通过 Utility.get_file_size_on_device 或类似方法检查
无错误 GST log 不包含 error,命令返回无异常
无 crash /data/misc/camera/data/coredump 中无 crash dump
并发全通过 所有子进程 ConcurrencyTestUtils.result(...) 为 True
性能达标 fps 达到预期,一般目标值约为输入 fps 的 99%

典型判定模式:

  • 找文件:
    • adb shell "ls -l /data/output/ | grep snapshot"
    • adb shell "ls -l /data/output/ | grep mp4"
    • adb shell "ls -l /data/output/camera | grep IMX586_Preview"
  • 检查大小:
    • Utility.get_file_size_on_device(...) > 0
    • Utility.get_file_size_on_device_ex(...) > 0
  • 设置结果:
    • self._test_result = TestResult.PASS
    • 或子进程中:self.test_result = TestResult.PASS

13. 最简总览

测试类型 主要验证内容 Pass 条件
Preview 摄像头能否预览 / dump frame yuv/raw/ubwc 文件存在且大小 > 0,pipeline 无 error
Snapshot 拍照功能 jpg 文件存在且大小 > 0
Live Snapshot 边录边拍 jpg + mp4 均存在且大小 > 0
Video Recording 录像编码 mp4 存在且大小 > 0,必要时 MediaInfo/FPS 通过
RAW Dump RAW10/RAW12 输出 raw 文件存在且大小 > 0
USB Camera V4L2/yavta/USB 录像 video 节点存在,输出文件存在且大小 > 0
HAL3 camx-hal3-test preview/video/snapshot dump 正常,无 crash
多摄并发 双摄/四摄/七摄同时运行 所有子摄像头均 Pass
参数测试 ISO/曝光/白平衡/zoom 等 参数设置后功能输出正常
稳定性 长时间运行 全周期无 error、无 crash、输出正常