win-06-testing
Windows App Workflow 阶段 6 —— 测试加固与验收。适用场景:功能开发完成,需要自动化测试体系、性能基准、无障碍审计,以及证据化的最终验收(Reality Check)。提炼自 Test Automation Engineer、Performance Benchmarker、Accessibility Auditor、Reality Checker 与 NEXUS Phase
SKILL.mdskills/windows-app-workflow/06-testing/SKILL.md
GitHub阶段 6:测试加固与证据化验收
关键心态(来自 Reality Checker):默认结论是 "NEEDS WORK"。"零问题""完美分数"是红旗不是绿灯;一切结论必须有截图、日志、测试输出作证。首版通过验收极少见,2–3 轮返工是正常预算。
1. 测试金字塔(来自 Test Automation Engineer)
- 单元(最多):域逻辑、数据层、纯函数;不依赖 UI、不依赖网络
- 集成(适量):IPC 契约测试(每个通道:合法输入→正确输出,非法输入→被拒)、数据库迁移、本地文件读写
- E2E(最少,只测集成风险本身):核心用户旅程(安装后首次启动、主流程、数据导出、更新流程)
八条铁律
- 禁止硬等待:
waitForTimeout(3000)是定时炸弹;等条件(元素状态/网络响应),不等墙上的钟 - 测试自带数据:每个测试自己造数据(走 API/服务层,不走 UI 点出来),互不依赖
- 像用户一样选择元素:
getByRole('button', { name: '导出' })撑得住改版;div:nth-child(3)撑不住 - E2E 不是整个金字塔:单元/集成能证明的,不进浏览器
- API/服务层 setup,UI 断言:登录这类前置状态程序化注入,别在 200 个测试里点 200 次登录框
- 快速隔离,必须根因:flaky 测试 24 小时内移出阻塞套件进隔离队列——删除不诊断等于删除 bug 报告
- 每次失败可调试:trace、截图、日志随每次 CI 失败归档;"我机器上没问题"是工具失败,不是借口
- 重试是仪器不是治疗:靠重试才过的测试不算完成
2. 桌面特有测试项(仓库测试方法论 + 桌面场景落地)
- 平台矩阵:干净 Windows 10 / Windows 11 各一台(含一台低配);全新安装 + 覆盖升级 + 卸载残留检查
- 升级测试:N-1 → N 数据迁移;用户数据
%APPDATA%无损 - 异常场景:磁盘满、路径含中文/空格/超长、断网启动、睡眠唤醒、多显示器 + 缩放 125%/150%
- 单实例与深链:重复启动聚焦已有窗口;深链协议不被劫持利用
- 杀毒/SmartScreen 预演:在干净机器跑一遍,记录警告表现(详见阶段 7 签名)
3. 性能基准(来自 Performance Benchmarker + 足迹预算)
| 指标 | 目标 | 方法 |
|---|---|---|
| 冷启动到可交互 | < 2s(低端机) | 10 次取 p95,CI 自动化 |
| 空闲内存 | 阶段 5 预算 | 静置 5 分钟采样 |
| 空闲 CPU | ~0% | 浸泡测试 |
| 主操作响应 | < 100ms 感知 | 关键路径手动 + trace |
| 安装包体积 | 环比 ≤+5% | 产物 diff |
产出:bench-report.md——每项指标的目标值、实测值、证据文件路径、回归分析。
4. 无障碍审计(来自 Accessibility Auditor:没经过屏幕阅读器测试 = 不可访问)
- 键盘:拔鼠标把每个功能走一遍;焦点可见、顺序合理、无键盘陷阱
- Narrator(Windows 自带)过一遍核心流程:控件有名字、状态有播报、弹窗有焦点管理
- 对比度抽查 + 色盲模拟(不能只靠颜色传达状态)
- 产出:问题清单按「阻断 / 严重 / 一般」分级,阻断项发布前必须修
5. Reality Check 最终裁决(流程照抄 Reality Checker)
- 跑验证命令,不许跳过:构建产物存在?全部测试真跑过?声称的功能在代码里存在(grep 验证)?
- 交叉核对:每条"已完成"声明 → 对应文件/截图/测试结果,不接受报告本身当证据
- 端到端旅程证据:干净机器上完整走:下载安装 → 首次启动 → 核心流程 → 导出 → 更新 → 卸载,每步截图
- 自动失败触发器(出现任一 = 直接打回):核心旅程断裂、崩溃、数据丢失、启动 >3s 无响应、交互元素失效
- 裁决只有两种:READY(附全部证据) 或 NEEDS WORK(附修复清单)
6. 质量门(双重签核:测试证据 + Reality Check 裁决)
| # | 判据 | 证据 | 通过? |
|---|---|---|---|
| 1 | 单元+集成全绿,核心旅程 E2E 全绿 | CI 报告 | ☐ |
| 2 | 平台矩阵测试通过(干净安装/升级/卸载) | 截图记录 | ☐ |
| 3 | 足迹预算全部达标 | bench-report | ☐ |
| 4 | 无障碍阻断项清零 | 审计清单 | ☐ |
| 5 | Reality Check 裁决 READY | 证据包 | ☐ |
- READY → 进入阶段 6+(安全加固)与阶段 7(打包发布)
- NEEDS WORK → 按修复清单返工(回到阶段 5),重新验收;2–3 轮属正常