1. 摄像头测试用例主要位置
Python 测试用例目录
主要在这些目录下:
Case/Products/*/AUSanity/Camera/Case/Products/*/Stability/Camera.pyCase/Products/*/PreFlight/Camera.pyCase/Products/*/Sanity/Camera.pyCase/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.pyCase/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraIMX586.pyCase/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraIMX686.pyCase/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraOV9282.pyCase/Products/QRB5165_UBUN_2_0/AUSanity/Camera/CameraGMSL.pyCase/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraIMX766.pyCase/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraIMX688.pyCase/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraOV64B40.pyCase/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraS5K3M5.pyCase/Products/QCS8550_LE_1_0/AUSanity/Camera/CameraConcurrency.pyCase/Products/QCS8625_LE_1_0/AUSanity/Camera/*.pyCase/Products/CQ7790M_LE_1_5/AUSanity/Camera/*.pyCase/Products/QCS610_LE_1_0_C2/Stability/Camera.pyCase/Products/QRB5165_UBUN_2_0/Stability/Camera.pyCase/Products/QRB5165_UBUN_1_1/Camera/CameraGST.pyCase/Products/QRB5165_UBUN_1_1/Camera/CameraHAL3.pyCase/Products/QRB5165_UBUN_1_1/Camera/CameraFRandLBT.py
Plan 配置目录
摄像头命令和计划主要在:
Plan/*/*/Config/Camera/Plan/*/*/Config/Camera/TestCommands/*.jsonPlan/*/*/Config/PreFlight/*Camera*.xmlPlan/*/*/Config/Stability/*Camera*.xml
典型配置文件:
Plan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/GSTCommands.jsonPlan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/SevenCameraCommends.jsonPlan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/USBCameraCommands.jsonPlan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/LBT_GSTCommands.jsonPlan/LU/QRB5165_UBUN_2_0/Config/Camera/TestCommands/LBT_HAL3Commands.jsonPlan/LE/QCS8550_LE_1_0/Config/Camera/TestCommands/CameraGST_commands.jsonPlan/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.mp4、mux1_264.mp4、mux2_264.mp4、mux3_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_res、video_res、preview_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*.jpg、frame*.yuv、mux1.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_SnapshotFront_Camera_ZSL_SnapshotBack_Camera_PZSL_SnapshotFront_Camera_PZSL_Snapshotpre_flight_dual_camera_snapshotpre_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.xmlPlan/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 测试
覆盖用例:
IMX577PreviewIMX586PreviewIMX686PreviewIMX766PreviewTrackingCameraPreviewTwoOV9282DisplayPreviewTwoGMSLDisplayPreview- 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 测试
覆盖用例:
IMX577SnapshotIMX586SnapshotIMX686SnapshotIMX766SnapshotMainCameraSnapshotDisplayPreview- HAL3 snapshot
- GMSL snapshot
- USB snapshot
主要检查:
- pipeline 启动。
- 触发 capture-image。
- JPG 是否生成。
Pass 条件:
- snapshot jpg 文件存在。
- 文件大小 > 0。
- 同时要求 preview 的用例,还需要 preview dump 存在且大小 > 0。
11.3 Live Snapshot 测试
覆盖用例:
IMX577LiveSnapshotIMX586LiveSnapshotIMX686LiveSnapshotIMX766LiveSnapshotMainCameraLiveSnapshotDisplayPreviewIMX577LiveSnapshotDisplayPreview- GMSL live snapshot
主要检查:
- preview、录像、拍照同时工作。
- live snapshot 中 capture-image 是否成功。
- 录像文件是否正常。
Pass 条件:
- jpg snapshot 存在且大小 > 0。
- mp4 video 存在且大小 > 0。
- 如果有 preview dump,preview dump 也要存在且大小 > 0。
11.4 Video Recording 测试
覆盖用例:
IMX577VideoRecordingPreviewUSBCameraVideoRecording- 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 多摄并发测试
覆盖用例:
DualCameraConcurrencyFourCameraConcurrencyFourIMX577ConcurrencySevenCameraConcurrencyTwoOV9282DisplayPreviewTwoGMSLDisplayPreview- 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 长时间稳定性测试
覆盖用例:
CameraLongDurationCameraHAL3LongDurationHALFourCameraStress- APStress 中的 camera case
主要检查:
- 长时间预览。
- 长时间录像。
- 多轮 snapshot / dump。
- fps 是否持续正常。
- 是否产生 coredump。
- 存储空间是否充足。
- GST/HAL3 是否报错。
Pass 条件:
- 在指定测试时间内每轮检查都通过。
- 无 crash。
- 无 coredump。
- GST log 无 error。
- 输出文件正常。
- 性能用例 fps 达标。
12. 项目中 Camera Pass 判定的共性逻辑
大多数 Camera 用例最终都围绕下面几个条件判断:
| 条件 | 说明 |
|---|---|
| pipeline 成功 | 日志中检测 PLAYING、Pipeline 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(...) > 0Utility.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、输出正常 |