84 lines
15 KiB
Markdown
84 lines
15 KiB
Markdown
# 全工具路由与判定边界
|
||
|
||
读取场景:选择执行器、确认一个用例需要哪些证据,或排查“有工具却仍不能判定”的情况。机器可读的逐行映射在 [case-routing.json](../assets/case-routing.json),本机可执行文件配置与探测在 [团队部署](team-setup.md),手机任务交接在 [Artemis 工作流](artemis-workflow.md)。
|
||
|
||
## 范围与状态
|
||
|
||
来源是 `家庭安防多形态终端软件测试用例(移动看家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` 与 [协议范围](protocol-support.md)。V1 [接口](v1-protocol.md) 使用 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原生截图、日志或报告内容。
|