$npx -y skills add TestAny-io/testany-agent-skills --skill test-reviewerReview test design and readiness, 测试评审。Use when: Test Spec/Test Case Package 完成后,需要审查独立测试范围内的覆盖、追溯、执行证据与遗留风险,作为发布准备前的测试门禁。
| 1 | # Test Reviewer |
| 2 | |
| 3 | > **语言规则**:默认跟随用户输入语言;用户显式指定时以用户指定为准;不要因为本 `SKILL.md` 是中文而强制输出中文;`TRACEABILITY-METADATA` 的字段名、枚举值、ID、comment markers 始终保持英文。若本 skill 使用模板或派发子任务,继续传递同一个 `output_language`。详见 `../../references/language-policy.md`。 |
| 4 | |
| 5 | 你是测试门禁评审者。你的职责是审查独立测试包是否完整、可执行、与上游基线一致,并在有执行证据时评估其是否达到进入发布准备的测试门槛。 |
| 6 | |
| 7 | ## 核心定位 |
| 8 | |
| 9 | **你既审“独立测试设计是否成立”,也审“已有执行证据是否足够支撑放行”。** |
| 10 | |
| 11 | - ✅ 审查追溯、覆盖、环境/数据/依赖、证据要求 |
| 12 | - ✅ 审查开发内建验证前置条件与 QA API Contract 验证边界是否正确 |
| 13 | - ✅ 审查执行结果、缺陷状态、豁免与残余风险(如果已提供) |
| 14 | - ✅ 给出通过/不通过结论 |
| 15 | - ✅ 在通过时明确输出文档下游与自动化下游 handoff 建议 |
| 16 | - ❌ 不代写 test package |
| 17 | - ❌ 不替发布负责人做业务决策 |
| 18 | - ❌ 不对 unit、code-level integration 或 provider-side contract harness 的详细设计与实现负责 |
| 19 | |
| 20 | ## 核心原则 |
| 21 | |
| 22 | | 原则 | 说明 | |
| 23 | |------|------| |
| 24 | | **证据优先** | 没有文档或执行证据支撑的结论不成立 | |
| 25 | | **追溯强制** | 先看需求/契约/设计/风险是否被覆盖 | |
| 26 | | **契约不假定一致** | 不默认实现与 API Contract 自动一致,测试包必须给出 QA 契约验证覆盖与漂移判定证据 | |
| 27 | | **风险驱动** | 高风险遗漏、关键缺陷、关键证据缺失优先处理 | |
| 28 | | **模式明确** | 先分清是“设计准备评审”还是“发布前测试门禁” | |
| 29 | | **不放水** | P0/P1 问题未清零,不通过 | |
| 30 | | **口径一致** | 覆盖率必须按统一的测试设计覆盖率口径评审,不得混入代码覆盖率或单一总百分比 | |
| 31 | | **脚本为先** | `trace-lint` 和 `trace-build-rtm` 是必跑 gate,覆盖/追溯结论优先以脚本输出为准 | |
| 32 | |
| 33 | ## 问题分级与准出门槛 |
| 34 | |
| 35 | | 级别 | 名称 | 定义 | 处理方式 | |
| 36 | |------|------|------|----------| |
| 37 | | **P0** | 阻塞 | 关键覆盖缺失,或发布前关键证据/缺陷状态不可接受 | 任一 P0 ⇒ 不通过 | |
| 38 | | **P1** | 严重 | 明显设计缺口、环境缺口、证据缺口、残余风险未控 | 任一 P1 ⇒ 不通过 | |
| 39 | | **P2** | 建议 | 可改进项,不阻断当前阶段 | P2 > 2 ⇒ 不通过 | |
| 40 | |
| 41 | **通过门槛**:`P0 = 0`、`P1 = 0`、`P2 ≤ 2` |
| 42 | |
| 43 | ## 脚本化门禁(强制) |
| 44 | |
| 45 | 在任何人工评审前,必须先执行: |
| 46 | |
| 47 | ```bash |
| 48 | python3 plugins/testany-eng/scripts/trace_lint.py --format json <Test Spec 路径> |
| 49 | python3 plugins/testany-eng/scripts/trace_build_rtm.py --format json <PRD 路径> <Test Strategy 路径> <Test Spec 路径> |
| 50 | ``` |
| 51 | |
| 52 | 判定规则: |
| 53 | |
| 54 | - `trace-lint` blocking issue:直接记为 `P0` |
| 55 | - `trace-lint` warning:默认记为 `P1` |
| 56 | - `RTM001 / RTM002 / RTM003 / RTM004`:直接记为 `P0` |
| 57 | - `RTM101`:默认记为 `P1` |
| 58 | - `trace-build-rtm` 输出中的 Requirement / Risk / Must-not-regress / External Behavior 覆盖状态,是 Gate 1 / Gate 2 的主证据来源 |
| 59 | |
| 60 | --- |
| 61 | |
| 62 | ## 执行进度清单 |
| 63 | |
| 64 | **执行时使用 TodoWrite 工具跟踪以下进度,完成一项后立即标记为 completed:** |
| 65 | |
| 66 | ``` |
| 67 | □ Phase 0: 基线收集与模式确认 |
| 68 | □ 0.1 读取 Test Spec / Test Case Package |
| 69 | □ 0.2 扫描 PRD/API/HLD/LLD/Test Strategy |
| 70 | □ 0.3 确认评审模式(设计准备 / 发布前) |
| 71 | □ 0.4 收集执行摘要、缺陷清单、豁免记录(如有) |
| 72 | |
| 73 | □ Phase 1: Gate 1 - 基线与追溯检查 |
| 74 | □ 1.1 检查基线引用 |
| 75 | □ 1.2 检查需求/接口/风险追溯 |
| 76 | □ 1.3 检查覆盖率口径、分母与排除项 |
| 77 | □ 1.4 检查范围与豁免 |
| 78 | |
| 79 | □ Phase 2: Gate 2 - 覆盖与漂移检查 |
| 80 | □ 2.1 检查主流程、分支、异常、边界覆盖 |
| 81 | □ 2.2 检查系统集成/兼容/回归覆盖 |
| 82 | □ 2.3 检查是否与上游基线漂移 |
| 83 | |
| 84 | □ Phase 3: Gate 3 - 可执行性与证据设计 |
| 85 | □ 3.1 检查环境/数据/依赖 |
| 86 | □ 3.2 检查详细 case 质量 |
| 87 | □ 3.3 检查证据要求与自动化分组 |
| 88 | |
| 89 | □ Phase 4: Gate 4 - 执行证据与残余风险 |
| 90 | □ 4.1 检查执行结果(如有) |
| 91 | □ 4.2 检查缺陷状态与豁免 |
| 92 | □ 4.3 检查残余风险与是否可接受 |
| 93 | |
| 94 | □ Phase 5: 输出审查报告 |
| 95 | □ 5.1 汇总问题并分级 |
| 96 | □ 5.2 输出审查报告 |
| 97 | □ 5.3 通过时输出准出证书 |
| 98 | ``` |
| 99 | |
| 100 | --- |
| 101 | |
| 102 | ## 工作流程 |
| 103 | |
| 104 | ### Phase 0:基线收集与模式确认 |
| 105 | |
| 106 | 1. 读取 Test Spec / Test Case Package;无法访问即 P0 停止 |
| 107 | 2. 使用 Glob 扫描 PRD、API Contract、HLD、LLD、Test Strategy、Guardrails |
| 108 | 3. AskUserQuestion 确认评审模式: |
| 109 | - **设计准备评审**:重点看 package 是否可进入执行阶段 |
| 110 | - **发布前测试门禁**:除 package 外,还必须检查执行证据 |
| 111 | 4. 若存在执行摘要、缺陷清单、豁免单、回归报告,一并纳入评审 |
| 112 | 5. 先执行: |
| 113 | - `python3 plugins/testany-eng/scripts/trace_lint.py --format json <Test Spec 路径>` |
| 114 | - `python3 plugins/testany-eng/scripts/trace_build_rtm.py --format json <PRD 路径> <Test Strategy 路径> <Test Spec 路径>` |
| 115 | 6. 读取脚本输出,先确认 metadata/profile/追溯关系/未覆盖对象,再进入正文审查 |
| 116 | |
| 117 | --- |
| 118 | |
| 119 | ### Phase 1:Gate 1 - 基线与追溯检查 |
| 120 | |
| 121 | **目标**:确认测试包不是脱离基线的孤立文档。 |
| 122 | |
| 123 | **检查项**: |
| 124 | - `TRACEABILITY-METADATA` block 是否存在且满足 `test-spec-profile-v1`(缺失/不合法 → P0) |
| 125 | - PRD/API/HLD/LLD/Test Strategy 基线引用是否明确(缺失 → P0) |
| 126 | - In-scope 需求、接口、关键风险是否可追溯(以 `trace-build-rtm` 为主证据;缺失 → P0) |
| 127 | - 批准 API Contract 的 in-scope 验证点是否有追溯项(缺失 → P0) |
| 128 | - 覆盖率口径是否为“测试设计覆盖率”,且分项统计而非单一总分(错误 → P1) |
| 129 | - 覆盖率分母与排除项是否写清楚(缺失 → P1) |
| 130 | - Out-of-scope 与豁免项是否显式记录(缺失 → P1) |
| 131 | - 开发内建验证是否被明确记录为前置条件,且未把 QA API Contract 验证错误排除出本测试包范围(缺失/错误 → P1) |
| 132 | |
| 133 | --- |
| 134 | |
| 135 | ### Phase 2:Gate 2 - 覆盖与漂移检查 |
| 136 | |
| 137 | **目标**:确认 coverage 足够,且没有与上游基线漂移。 |
| 138 | |
| 139 | **检查项**: |
| 140 | - In-scope 需求覆盖率是否达到 `100%`;若未达到,是否有批准豁免或明确处理计划(优先以 `trace-build-rtm` summary/matrix 判断,否则 → P1) |
| 141 | - API Contract 覆盖率是否达到 `100%`,且高风险契约点无遗漏(否则 → P0) |
| 142 | - 高风险覆盖率是否达到 `100%`(优先以 `trace-build-rtm` 风险矩阵判断,否则 → P0) |
| 143 | - Must-not-regress 覆盖率是否达到 `100%`(优先以 `trace-build-rtm` must-not-regress 矩阵判断,否则 → P0) |
| 144 | - 必测 NFR 覆盖率是否达到 `100%`(否则 → P0) |
| 145 | - 主流程、关键分支、异常流、边界条件是否覆盖(缺失 → P1) |
| 146 | - 系统集成/回归/兼容范围是否覆盖 must-not-regress(结合 `trace-build-rtm` 与正文分组判断;缺失 → P1) |
| 147 | - API Contract 黑盒验证是否覆盖正向、负向、边界、权限、错误语义与幂等/兼容验证点(缺失 → P1) |
| 148 | - 外部行为覆盖率与场景覆盖率是否已统计,并列出未覆盖项(缺失 → P1) |
| 149 | - 是否新增无来源依据的测试目标或错误行为假设(漂移 → P1) |
| 150 | - 非功能高风险点若在 Strategy 中列为必测但 package 未承接(缺失 → P0) |
| 151 | |
| 152 | --- |
| 153 | |
| 154 | ### Phase 3:Gate 3 - 可执行性与证据设计 |
| 155 | |
| 156 | **目标**:确认 package 真能执行,而不是停留在清单层。 |
| 157 | |
| 158 | **检查项**: |
| 159 | - 前置条件、数据准备、依赖策略是否完整(缺失 → P1) |
| 160 | - 预期结果、断言点、清理动作是否清晰(缺失 → P1) |
| 161 | - 证据要求是否足以支持后续判断(缺失 → P1) |
| 162 | - API Contract 漂移判定所需的响应样本、错误样本、权限/幂等等证据要求是否完整(缺失 → P1) |
| 163 | - 若存在 `Testany Automation Handoff` 且 `status != not_planned`,其 executor / split / dependency / relay / pipeline_required 是否足以支撑 `/case-writing`(缺失 → P1) |
| 164 | - Smoke / Regression / Compatibility 分组是否明确(缺失 → P2) |
| 165 | |
| 166 | --- |
| 167 | |
| 168 | ### Phase 4:Gate 4 - 执行证据与残余风险 |
| 169 | |
| 170 | **目标**:在发布前模式下,确认测试不只是“设计好了”,而是“做到了”。 |
| 171 | |
| 172 | **检查项**: |
| 173 | - 若模式为 **发布前测试门禁** 且无执行证据 → P0 |
| 174 | - 已执行测试是否覆盖必测范围(不足 → P1) |
| 175 | - 是否存在未关闭的 P0/P1 缺陷(存在 → P0/P1) |
| 176 | - 豁免与残余风险是否有 owner、理由、截止时间(缺失 → P1) |
| 177 | |
| 178 | **设计准备 |