15 KiB
全工具路由与判定边界
读取场景:选择执行器、确认一个用例需要哪些证据,或排查“有工具却仍不能判定”的情况。机器可读的逐行映射在 case-routing.json,本机可执行文件配置与探测在 团队部署,手机任务交接在 Artemis 工作流。
范围与状态
来源是 家庭安防多形态终端软件测试用例(移动看家2.0)20260623_自动化分类.xlsx,结合 review_all.json、kept_records.json 和 工具分析报告.md。原有分类记录 861 行中排除“无法实现”504 行,保留 357 行:工具辅助163、人工介入125、可适用69。以工作表与 Excel 行号作为唯一来源,不按原编号去重。357 是保留记录行数,不是已自动化或已通过的场景数。
全工具入口负责发现、路由、调用现成能力、关联证据。平台和内部工具保留原产品、业务通道及权限;三方/通用工具可在能力等价且不改变被测条件时替换。仅标注“PC端”不能推出具体软件或API,提供入口路由不表示已有端到端脚本。人工场景、校准、硬件、后台权限等缺口保留在每条映射中。
路由结果与测试判定分开:工具正常退出或 Artemis completed 不等于通过。passed 要求所有适用断言有证据;failed 表示观察到明确违背预期;inconclusive 表示已执行但证据不足或冲突;blocked 表示必要依赖、权限、身份或前置条件未满足。映射文件中的 not_run 只是未执行状态,不是第五种业务判定。
平台与内部工具:保留业务入口
| 路由 | 实际调用形式 | 可完成的环节 | 调用前要确认的缺口 |
|---|---|---|---|
| 移动视联PC | 原Windows客户端;用户人工登录后,由宿主原生GUI能力或已验证的UIA/Win32控件驱动操作 | 直播/回放、分屏、云台、OSD、告警、端侧AI参数与上报 | 客户端实际版本、人工登录完成后的业务页与权限、控件可访问性及多客户端/多设备资源;安装程序不能当作已运行客户端;视频画布需另取码流或外部证据 |
| mainThread/杭研网络信息查询候选 | 已取得真实“端侧数据采集工具.exe”,静态确认Python3.8/PyQt5原生GUI;通过当前窗口进入查询页,无已验证CLI | 周期基础数据、拓扑、已有设备日志地址查询;可作为1设备绑定!18(1.46)的候选取证入口 | 原用例仅称“杭研软件”,与该程序的用例对应关系、查询权限和目标数据仍须核实;包下载、程序启动或控件静态识别不等于业务通过 |
| 移动看家客诉处理系统 | 真实网站的浏览器页面;用户人工登录后继续自动操作,经核实的正式API才可选用 | 在离线、编码延时、modelid、发声打点、日志、重启、网络检测记录 | 由本地profile提供URL;确认业务页和目标查询权限。账号、密码、短信/图形验证码及协议确认均由用户完成;不读取或复制账号统计表 |
| 连楹平台(材料也写“联楹”) | 原智慧家庭门户/终端管理网站;用户人工登录后通过browser自动操作 | modelid、版本/注册信息、首次及后续24小时上报 | 确认平台实际产品、环境及当前查询权限,不用老DM替代;记录查询条件、服务器时区、事件时间与设备别名 |
| 老DM/终端管理平台 | 原管理平台browser;正式API有文档和权限时可用 | 首次注册、心跳及48小时持续记录 | 地址和身份待确认;20 DM测试!6的24/48小时矛盾须在执行前解决 |
| 内部配置工具 | 原EapilCameraConfigurer PC GUI;device_adapter.py 按 --protocol 驱动 |
V1/V2 搜索、身份与版本查询、显式固件下发;原GUI实际支持的配置 | 先查 capabilities 与 协议范围。V1 接口 使用 TCP4941/2170/MD5+ROM;默认只预检,显式执行最多一次传包。软件V2.x不代表设备协议V2。视频设置继续原GUI或原表要求的APP |
| firmware_encrypt | 对应SDK随包工具,CLI参数以该版本帮助/说明为准 | 9系统设置!20(9.15-3)的规定OTA包生成 | 工具和SDK缺失时blocked;不猜加密算法/参数,不用通用压缩或加密替代。保留包摘要、SDK版本、命令脱敏记录和双分区证据 |
| 软探针、参数/日志后台 | 原网站browser或已核实的正式接口 | 开关、参数、指标、事件、日志上传与时间对应关系 | 原资料未给出全部入口;不可编造API路径,不将客诉网站自动视为所有后台 |
| 算法OTA平台 | 原管理网站browser或已核实的下发/回滚接口 | 云化AI算法应用下发、启用、回滚、版本检查 | 平台身份、算法包、授权、适用白盒设备和回滚证据;APP提示成功不能证明算法真正生效 |
| 其他既有管理/编码/升级/1400入口 | 保持原平台或原协议取证通道,先识别产品再选browser/PC GUI/正式API | 原生参数、编码控制、协议事件、升级与日志取证 | “既有PC平台”“厂商平台”仅是依赖描述;身份未确认时保留blocked,不映射成虚构统一服务 |
网页路由先观察现有页面,再用可访问元素定位。PC GUI路由先确认宿主确实允许原生桌面控制;仅有浏览器自动化不能操作Windows程序。无支持的GUI能力时保留人工操作与截图交接,不声称已驱动客户端。登录态是运行时条件,旧文档中的授权或历史登录不自动授权本次外部写入。
客诉、联楹与移动视联的登录交接:先观察当前可访问的标签页或客户端窗口,已有有效会话则直接复用。确实显示登录页时,将准确页面/窗口交给用户,等待用户自行完成账号、密码、验证码、短信和协议步骤,不自动代填、发送短信、点击登录或读取账号表。用户完成后重新观察业务导航与目标查询权限,按当前授权的设备范围继续自动查询和取证;“用户说已登录”与“观察到可用业务页面”分别记录。仅当登录失效或权限不足时再次交接,不为已授权的后续步骤反复询问。浏览器未连接或窗口不可访问属于会话可观察性问题,不能推断为未登录。报告分别记录“等待人工登录”“登录状态未确认”“已登录但目标权限不足”和实际工具故障;人工登录是既定前置步骤,不是工具缺失或用例失败。
mainThread 原生查询页的静态定位线索:主菜单“进入查询端侧数据采集功能”对应 enterReportButton,输入框为 snEdit、macEdit、deviceIdEdit,输出框为 getReportResult。只读查询按钮为 getAnddgsReport(周期基础数据)、getDevTopoReport / getDevTopoReportV4(拓扑)及 getLogURL(已有日志地址)。这些对象名来自已取得程序的静态结构,实际自动化必须重新观察当前窗口,不能假设它们已暴露给 UIA。
查询使用当前确认的设备标识和程序正常鉴权,保留查询时间、条件与响应,不提取内置鉴权信息或绕过 GUI 猜测后台调用。“进入本地调试功能”会进入不同的 CoAP 工作模式,缺少监听端口不能用于判定查询页故障。openSelfCheck、openLog、openLogAll 分别会触发自检或日志上报,不属于只读报告查询;手册示例值也不是当前测试凭据或授权。平台及路由器的登录态、权限与业务能力以本次实际观察为准,历史登录页证据不代表当前状态。
三方与通用工具:可替换的执行与取证
| 工具/能力 | 真实调用形式及封装入口 | 证据与限制 |
|---|---|---|
| Codex | 宿主编排;browser、原生GUI、CLI和MCP分别路由 | Codex不代替码流传感器、物理场景或原业务平台;原图“76”分配不能复核,不能作为自动化覆盖率 |
| Artemis | MCP mobile_workspace、mobile_run_task、mobile_batch 等 |
手机APP界面执行、观察、原生报告;不是PC GUI/浏览器执行器。Appium等既有移动框架可按团队实际保留,不能据映射声明两者已互通 |
| Wireshark / dumpcap / TShark | Wireshark PC GUI;CLI dumpcap抓包、tshark -r分析;封装 capture、analyze-pcap |
保存原始pcap及采集点/过滤条件/时钟。TLS密文不能证明业务权限、双向认证或设备日志脱敏;13.15需授权矩阵及端点证据 |
| Nmap | CLI;封装 scan --host <单个IP> --ports <逗号端口> |
封装只做最多128个明确TCP端口的连接扫描,不做服务版本探测、UDP或NSE;端口名称不是经探测确认的服务身份。完整验收另补服务识别、全部约定TCP/UDP、IPv4/IPv6及工作状态,不能把默认列表扫描当全端口证明 |
| Binwalk | 正式 firmware-scan --input <镜像>;配置 runtimes.binwalk_python 时固定 python -I -m binwalk,否则使用原生入口;独立临时用户配置 |
已用隔离Python3.11及Binwalk2.3.2验证合成签名正例及一次真实固件扫描;后者无已知签名。当前封装只扫描、不解包或执行提取物;解包与熵分析另行验证,签名或高熵不能证明设备flash加密 |
| ffmg原名 / FFmpeg / ffprobe | 原“ffmg”名称待核实;FFmpeg/ffprobe CLI,封装 probe --input <原始媒体> 或 --rtsp-env <环境变量名> |
实际编码、分辨率、帧率/时间戳、音视频轨道;帧级GOP分析需取得帧类型与时间戳,普通probe摘要不足。屏幕录制重编码不能证明设备原始GOP |
| MediaInfo | 正式 media-info --input <本地媒体>,通过 libraries.mediainfo 配置本机DLL;在有时限子进程读取固定字段;原GUI另走桌面能力 |
已验证MediaInfoLib21.09本地样本解析,GUI交互未由此验证;9.54/9.132可用ffprobe替换可比参数读取。Duration为毫秒;需原始流/导出文件,名义帧率不等于每段实测帧率 |
| SecureCRT / 串口 | 原PC GUI;可选pySerial;已封装 serial --port COMx --baud <值> --duration <秒> --output <日志>实际调用PowerShell串口脚本 |
真实串口与正确电气连接/参数;封装仅被动读取,不发送登录命令。SSH仅在设备本来支持且不改变被测条件时使用;关闭串口验收不得为了日志而打开 |
| 路由器配置 | 原管理网站browser,或已核实的厂商CLI/API;适用OpenWrt可使用SSH上的UCI/ubus | 网络模式、DHCP/DNS/MTU、双栈等需配置回读及真实连接验证;先保存恢复配置。OpenWrt不冒充指定路由器/光猫/移动闪联能力 |
| OpenCV / OCR / Python统计 | CLI脚本或库API,读取固定样本/标注真值 | OSD、画面特征、事件时间匹配与成功率;必须定义阈值、时窗、重复告警处理和真值,不能让另一模型判定充当唯一真值 |
| 外部音视频采集、光照/声音/距离测量与实体工装 | 真实采集装置和已标定工具;其输出由CLI脚本解析或人工复核 | 带屏设备真实显示、声音/对讲、距离/角度/照度、准确率与物理云台必须保留实测。模拟器或屏幕播放不自动等价于规定的实物场景 |
配置工具9行的独立断言
| 来源与原编号 | 必需判定 | 不能代替它的证据 |
|---|---|---|
| 9系统设置!22 / 9.15-5 | 已知不兼容包升级失败,并按原预期证实回滚到原版本,或正常包恢复成功且上线 | 单纯版本未变化、命令报错或事后能查询设备 |
| 9系统设置!95 / 9.131 | 覆盖所支持编码、分辨率、码率类型、帧率、I帧、智能编码、AOV;配置成功且实际流符合 | 只点击保存或只验证一个参数 |
| 9系统设置!96 / 9.132 | 适用设备默认H265,H264/H265双向切换后实际流codec正确 | 界面显示编码或一次probe成功 |
| 9系统设置!98 / 9.134 | 默认VBR、CBR和能力上下界;区分VBR峰值与CBR口径,并关联9.101—9.106 | 仅比较文件平均码率 |
| 9系统设置!99 / 9.135 | 支持档位下的实际帧率、H264/H265直播/云/卡回放和对讲质量 | 名义fps、APP设置值或单片段无卡顿 |
| 12性能!8 / 12.18 | 1000次升级失败率严格小于1/1000,完整记录每次尝试、耗时、失败及上线状态 | 少量冒烟或一次最终版本一致;不能因脚本异常丢弃失败尝试 |
| 12性能!9 / 12.19 | 全部规定功能开启形成较高内存负载,1000次升级无变砖,负载与设备状态持续留证 | 无负载循环、12.18结果、最终一次在线 |
| 13安全!11 / 13.10 | 受控篡改包被设备校验拒绝;记录篡改类型、摘要、拒绝原因及合法包对照 | 网络失败、工具缺依赖、超时或版本未变化;单个失败不能推导全部签名/大小/版本校验都满足 |
| 13安全!12 / 13.11 | 规定的厂商通用固件因未授权被拒绝,结合匹配型号授权固件对照 | 不兼容型号包失败、网络中断或仅版本保持原值 |
正向升级的 verify-version 只验证任务指定的固件字段,不能给以上9行整体判通过;V1 原生字段与 inner/outer 不自动映射。负向升级应按拒绝原因和恢复断言独立判定。17稳定性!11另有设备数、时序与循环矩阵,不能与12.18/12.19合并结果。
9.15-3单独按现网OVD-SDK版本选择包:1.42.0及以上使用SDK规定的 firmware_encrypt 包;1.41.0及以下不使用该工具生成包;首次对接1.42.0及以上也需规定陪测包。执行前核实具体SDK说明与双分区条件。
必须保留的安全与测量语义
- 13安全!10(13.9)的预期是无本地web开放。确认存在本地Web即不符合;有认证不改变此判定。只扫80/443、某地址不可达或过滤状态不足以证明无Web。
- 13安全!5(13.3)要求固件在设备中加密保存。需要真实flash/分区存储证据与厂商实现材料;OTA包扫描只属辅助。缺专用证据记
inconclusive,缺采集权限或镜像记blocked。 - 13.18需设备日志/配置内容证据;13.15、13.17需受控授权/认证行为证据,不能由pcap单独判通过。
- 9.136需原始编码流中I帧类型和相邻时间戳;VFR/AOV不能只用帧数除名义帧率;关键帧不直接等同全部I帧。
- 11管理版!13执行端(PC还是APP)、!34主/子码流预期矛盾,以及20 DM测试!6的24/48小时冲突未澄清前不固化矛盾断言。
- 保留重复编号与合并续行;9系统设置!83的
9.10500000000001按源值保留,不自行改写源文件。
映射文件约定
case_id 使用稳定工作表序号与Excel行号;source.sheet、source.row、source.original_id保留来源。required_tools_original是前次分析中的依赖名称,route_ids是本参考文档的路由,不保证当前全部可执行。suggested_method与remaining_dependencies保持分析依据;assertion_profile标记不能套通用通过规则的条目。执行前仍需读取原行完整步骤、预期、设备适用性和量测阈值。
所有工具输出按来源独立归档;外部CLI/GUI/browser证据关联到同一个case_id,但不得伪造为Artemis原生截图、日志或报告内容。