CosmoEdge 测试范围与测试用例说明书
本文为 QA、开发和集成团队提供当前版本的测试基线。测试结论必须绑定软件版本、目标平台、 模型、输入、配置和执行时长;x86、构建容器或其他芯片上的通过结果不能替代目标设备验收。
一、测试范围与证据边界
测试覆盖以下层级:
- 静态与单元测试:格式、静态分析、DTO、路由、服务和组件级测试。
- 容器集成测试:x86 Docker 下的登录、上传、配置、推理和事件闭环。
- 目标平台测试:在 BM1688、CV186X 或 RK3576 等实际目标上验证目标专用模型、媒体链路和资源行为。
- 业务验收:使用固定正样本、负样本和困难样本验证误报、漏报、事件语义和持续运行。
- 发布证据:冻结候选提交、安装包哈希、目标标记、运行版本和完整测试结果。
以下边界必须保留:
- 每次构建只选择一个推理后端;ONNX、Sophon
.nn/.bmodel和 RKNN.rknn产物不能跨后端使用。 - BM1688、CV186X、RK3576 和 RV1126B 的目标产物不能仅凭文件名互换。
- Open 包使用明文模型,不需要设备绑定证书;Protected 包的模型保护和设备证书属于独立的分发能力。
COSMO_DEV_MODE控制开发日志、看门狗等生产行为,不是 HTTP 登录或设备 SN 鉴权旁路。- 实时画面的框和标签由 Pipeline 元数据及渲染器生成;当前动作目录没有独立 OSD 节点。
- 性能通过点必须来自当前候选的实测报告,不能复用其他版本、模型或平台的固定路数和延迟。
二、测试环境与物料
2.1 平台矩阵
| 平台 | 后端 / 产物 | 适用测试 | 证据边界 |
|---|---|---|---|
| x86 Linux / Windows | ONNX Runtime / .onnx | UI、API、流程和 CPU 集成测试 | 不代表 NPU 行为或容量 |
| Apple Silicon macOS Preview | linux/amd64 仿真 / .onnx | 单路本地视频体验 | 不是原生 arm64、NPU 或生产性能证据 |
| Sophon BM1688 | BMRT / 目标专用模型包 | 安装、推理、媒体、容量和稳定性 | 必须使用 BM1688 包和设备 |
| Sophon CV186X | BMRT / 目标专用模型包 | 安装、推理、媒体、容量和稳定性 | 必须使用 CV186X 包和设备 |
| Rockchip RK3576 | RKNN Runtime / .rknn | RKNN、MPP/RGA、容量和稳定性 | 必须使用 RK3576 包和设备 |
| Rockchip RV1126B | RKNN Runtime / .rknn | 构建与条件性设备验证 | 可部署验收还需要目标模型 overlay |
实际操作系统、驱动、Runtime、模型和安装包身份必须记录在测试报告中,不能把本表当成版本锁。
2.2 测试物料
- 固定的视频、图片及其 SHA-256;素材必须可合法使用且不含未脱敏客户数据。
- 模型来源、版本、哈希、输入输出、预处理、后处理和标签顺序。
- 正样本、负样本和困难样本,以及每个样本的预期结果。
- 目标芯片、软件版本、安装包哈希、运行时和驱动身份。
- 需要推送验证时使用隔离的 MQTT Broker 或 HTTP Webhook 接收端。
- 性能测试使用版本化 ScenarioBench 场景包和明确的门禁配置。
三、功能与集成测试用例
3.1 用户认证、会话与 Onboarding(TC-AUTH)
| 用例 | 目标 | 步骤 | 预期结果 |
|---|---|---|---|
TC-AUTH-001 | 首次登录 | 使用 admin / admin 登录新数据目录 | 登录成功并返回 mtk;响应提示必须修改默认密码 |
TC-AUTH-002 | 无效会话 | 不携带或携带无效 mtk 调用 /gtw/cwai/System/QueryDeviceInfo | 返回 HTTP 401 或明确的鉴权失败;不能被误判为路由不存在 |
TC-AUTH-003 | 修改密码和撤销会话 | 登录后修改密码,再使用修改前的所有 token 请求受保护接口 | 密码持久化;该用户旧 token 全部失效;新密码可重新登录 |
TC-AUTH-004 | Onboarding 边界 | 匿名调用 Status、Complete,再匿名和登录后调用 Reset | Status/Complete 可匿名;Reset 必须携带有效 mtk;状态可持久化 |
TC-AUTH-005 | Open 模型分发边界 | 在 Open 包查询模型授权状态并运行内置明文模型 | 授权工具显示不支持或不可用不阻塞 Open 模型;应用功能不因设备 SN 被限制 |
TC-AUTH-006 | Protected 证书状态 | 在含 provisioner 的 Protected 包分别测试无证书、错误证书和有效证书 | 返回可解释状态;错误或异机证书不得显示为有效;有效证书与本机绑定 |
3.2 视频接入与媒体生命周期(TC-CAM)
| 用例 | 目标 | 步骤 | 预期结果 |
|---|---|---|---|
TC-CAM-001 | 本地视频上传 | 查询上传能力,分片上传固定 MP4,创建通道 | 上传进度、完成状态和通道信息正确;不泄露服务器临时路径 |
TC-CAM-002 | 播放次数 | 分别配置 0、1 和一个大于 1 的播放次数 | 0 无限循环;1 播放一次;正数表示总播放次数;0–100 范围外的值不能持久化 |
TC-CAM-003 | RTSP 接入 | 添加固定 RTSP 源,观察首帧、持续播放和资源释放 | 能连接并解码;停止或删除后不残留任务、解码器或预览状态 |
TC-CAM-004 | RTSP 重连 | 中断已运行的 RTSP 源,再恢复推流 | 中断状态可见;恢复后自动重连;无崩溃、重复任务或永久卡住状态 |
TC-CAM-005 | 无效输入 | 提交不支持协议、无效地址、损坏视频和超预算文件 | 请求被安全拒绝并返回可操作错误;服务继续处理其他通道 |
3.3 模型仓库与目标兼容性(TC-MOD)
| 用例 | 目标 | 步骤 | 预期结果 |
|---|---|---|---|
TC-MOD-001 | x86 模型导入 | 导入受支持的固定 ONNX 和完整元数据 | 模型条目可用;图片正负样本结果与基线一致 |
TC-MOD-002 | Sophon 模型导入 | 在目标设备导入与芯片匹配的 .bmodel/模型包 | 模型加载、张量和后处理通过;不能仅以“上传成功”判定可用 |
TC-MOD-003 | RKNN 模型导入 | 在 RK3576 或 RV1126B 上加载对应 .rknn | Runtime、输入格式和输出解析匹配目标 profile |
TC-MOD-004 | 错误目标产物 | 在不匹配芯片或后端上导入目标专用产物 | 初始化或预检明确失败;不得静默回退后宣告成功 |
TC-MOD-005 | 导出策略 | 分别导出用户模型、预置/加密/设备绑定模型 | 允许导出的模型返回附件;受保护模型返回明确的不可导出错误 |
3.4 Pipeline 编排(TC-FLOW)
| 用例 | 目标 | 步骤 | 预期结果 |
|---|---|---|---|
TC-FLOW-001 | 最小检测链 | 创建“视频解码 → 目标检测 → 可选跟踪/过滤 → 事件上报” | 保存后节点、连接和参数保持;运行可产生可解释目标和事件 |
TC-FLOW-002 | 无效连接 | 缺少上游数据、使用不匹配类型或制造断链后保存 | 前端或后端拒绝无效配置并指出可定位的节点/字段 |
TC-FLOW-003 | 导入导出 | 导出编排,在同版本隔离环境重新导入 | 节点 ID、模型引用、参数和连接保持;缺失模型时明确报告依赖 |
TC-FLOW-004 | 当前动作目录 | 检查节点列表并配置实时叠加 | 不出现独立 OSD 动作;实时展示使用 Pipeline 输出元数据渲染 |
3.5 场景任务、区域与策略(TC-TASK)
| 用例 | 目标 | 步骤 | 预期结果 |
|---|---|---|---|
TC-TASK-001 | ROI 生效 | 固定配置下让目标分别位于区域内外 | 区域内正样本按规则产生事件;区域外负样本不产生对应区域事件 |
TC-TASK-002 | 参数持久化 | 修改阈值、告警间隔、去重和时间规则,保存并重启 | 页面、运行配置和重启后的值一致;一次只修改一个变量时结果可解释 |
TC-TASK-003 | 调度策略 | 配置当前有效和无效时间段 | 只在有效时间内运行;跨边界切换不重复创建任务或遗留资源 |
TC-TASK-004 | 批量启停 | 对多通道任务批量开启、关闭和重复提交 | 操作幂等;失败项可定位;关闭后推理和媒体资源释放 |
3.6 实时展示与渲染(TC-LIVE)
| 用例 | 目标 | 步骤 | 预期结果 |
|---|---|---|---|
TC-LIVE-001 | 原始/算法预览 | 在同一通道切换原始流和算法流 | 首帧、加载、无信号和切换状态正确;旧播放器和连接被清理 |
TC-LIVE-002 | 元数据叠加 | 启用支持可视化的算法并选择对应叠加层 | 框、标签、区域和轨迹与目标元数据一致;无独立 OSD 节点依赖 |
TC-LIVE-003 | 持续播放 | 按任务验收时长持续预览,并切换通道和叠加层 | 无持续增长的播放器、连接或内存;无长期黑屏或过期叠加 |
延迟门禁必须由本次任务定义并记录网络、编解码和播放方式;本页不提供跨设备通用的固定毫秒值。
3.7 VLM 与 DINO(TC-LLM)
| 用例 | 目标 | 步骤 | 预期结果 |
|---|---|---|---|
TC-LLM-001 | VLM 图片基线 | 对固定正样本、负样本和困难样本运行同一提示词 | 输出满足任务定义;记录误报、漏报、耗时和资源;结果可复测 |
TC-LLM-002 | VLM 视频任务 | 图片基线通过后绑定固定视频并设置分析频率 | 事件、截图和时间与分析结果对应;无重复初始化或持续超时 |
TC-LLM-003 | DINO 开放词表 | 使用明确的英文目标词测试正负样本 | 目标框与词义和位置匹配;模糊词或相近负样本结果被记录 |
VLM/DINO 性能门禁必须绑定具体模型、提示词、输入、目标 FPS 和设备,不使用通用推理耗时。
3.8 事件与外部推送(TC-ALARM)
| 用例 | 目标 | 步骤 | 预期结果 |
|---|---|---|---|
TC-ALARM-001 | 事件查询与导出 | 按通道、算法和时间查询并导出固定事件 | 列表与导出数量、时间和字段一致;编码正确;敏感路径不外泄 |
TC-ALARM-002 | MQTT | 配置隔离 Broker,触发一次固定事件并监听设备上报 topic | 注册、心跳和事件结构符合 MQTT 参考;断开后状态和重连可观测 |
TC-ALARM-003 | HTTP Webhook | 配置隔离接收端,分别返回成功、超时和失败 | 成功负载字段正确;失败不阻塞主任务;重试/状态符合当前实现 |
3.9 系统、升级与恢复(TC-SYS)
| 用例 | 目标 | 步骤 | 预期结果 |
|---|---|---|---|
TC-SYS-001 | 资源感知上传 | 在充足空间和触发安全储备两种情况下查询能力并上传 | 可用空间、所需空间和拒绝原因一致;磁盘安全储备生效 |
TC-SYS-002 | 软件升级 | 记录 bootId 和版本,上传合法包并执行升级 | 包名、MD5、归档和空间校验通过后才重启;新 bootId 与版本共同证明恢复 |
TC-SYS-003 | 非法升级包 | 使用错误名称、MD5、目标或危险归档结构 | 升级在写入活动应用前失败;原版本仍可运行或按恢复方案处理 |
TC-SYS-004 | 看门狗 | 仅在获准测试设备上模拟进程异常 | 非开发构建按服务策略恢复;COSMO_DEV_MODE 构建明确记录看门狗关闭 |
四、性能与稳定性测试
| 用例 | 目标 | 方法 | 通过条件 |
|---|---|---|---|
TC-PERF-001 | 容量阶梯 | 使用版本化 ScenarioBench 场景包逐路增加负载 | 报告给出最后通过点和首个失败原因;不把最高配置点自动称为推荐容量 |
TC-PERF-002 | 预览开销 | 分别测试无预览、单路预览、每路预览和同流多客户端 | 每种模式单独记录媒体、推理、丢帧和资源;不能混用结论 |
TC-PERF-003 | 持续运行 | 在固定满负载点运行任务要求的 12/24/72 小时 | 满负载覆盖时长达到门禁;采样连续;无崩溃、计数器回退或无界资源增长 |
TC-PERF-004 | 业务精度 | 对版本化离线数据集比较参考与候选输出 | 使用任务批准的类别、IoU、置信度和匹配阈值;人工复核误报和漏报 |
公开 benchmark 只能说明其记录的平台、模型、输入和版本。新候选必须生成自己的结果或明确标记未验证。
五、变更类型与最低验证
| 变更 | 最低验证 |
|---|---|
| 文档 | 完整文档检查和站点构建 |
| 前端 | i18n、资源 i18n、生产构建和受影响页面验收 |
| C++ | 格式检查、CPU 测试构建、cosmo-tests 和相关单元测试 |
| API / 网络 | 鉴权、无效输入、错误响应和生命周期测试 |
| 模型 / 推理 /媒体 | 目标平台包、目标设备、固定真实输入和初始化日志 |
| 构建 / 打包 / 资源 | 目标标记、包内容、SHA-256 和部署兼容性 |
具体命令以CI 与质量检查和构建指南为准,不在本页维护第二套命令清单。
六、测试报告要求
每份报告至少包含:
- 候选提交和源码 tree;
- 平台、操作系统、Runtime、驱动和媒体链路;
- 安装包文件名、目标标记和 SHA-256;
- 模型、输入、配置和场景包身份;
- 实际执行命令、开始/结束时间和完整负载时长;
- 用例通过、失败、阻塞和豁免结果;
- 首个失败原因、日志和恢复状态;
- 未验证边界,特别是未执行的目标设备、性能、稳定性和生产验收;
- 对客户数据、凭据、设备标识和内部地址的脱敏说明。
构建成功、x86 成功、模型上传成功或页面重新可访问都只能证明对应层级,不能单独升级为目标设备或生产验收结论。
