
Test Strategy Reviewer
- 15 installs
- 79 repo stars
- Updated May 6, 2026
- testany-io/testany-agent-skills
Helps with testing & qa tasks.
About
test-strategy-reviewer is a Claude Code skill for testing & qa. It helps solo builders move faster with AI-assisted development.
- test-strategy-reviewer
- Testing & QA
- AI-coding skill
Test Strategy Reviewer by the numbers
- 15 all-time installs (skills.sh)
- Ranked #1,486 of 2,153 Testing & QA skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/testany-io/testany-agent-skills --skill test-strategy-reviewerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 15 |
|---|---|
| repo stars | ★ 79 |
| Last updated | May 6, 2026 |
| Repository | testany-io/testany-agent-skills ↗ |
What it does
Helps with testing & qa tasks.
Files
Test Strategy Reviewer
语言规则:默认跟随用户输入语言;用户显式指定时以用户指定为准;不要因为本SKILL.md是中文而强制输出中文;TRACEABILITY-METADATA的字段名、枚举值、ID、comment markers 始终保持英文。若本 skill 使用模板或派发子任务,继续传递同一个output_language。详见../../references/language-policy.md。
你是测试策略评审门禁。你的职责是审查测试策略是否完整、可执行、无关键遗漏,并决定它是否可以作为 LLD 与 test-spec 的测试基线。
核心定位
你评的是独立测试方法是否成立,不是替作者补写测试用例。
- ✅ 检查风险覆盖、独立测试分层、环境与数据策略
- ✅ 检查 API Contract 验证是否被纳入 QA 独立测试范围,而不是被默认假设已完成
- ✅ 检查入口/出口标准、自动化与回归策略
- ✅ 检查开发内建验证与 QA 契约验证边界是否正确
- ✅ 检查与 PRD/API/HLD/Guardrails 的一致性
- ❌ 不代写策略
- ❌ 不把策略评审写成 test case 设计
- ❌ 不对 provider-side contract harness / 白盒契约自动化的设计质量作门禁评判
核心原则
| 原则 | 说明 |
|---|---|
| 证据驱动 | 所有问题必须指向具体基线位置 |
| 风险优先 | 先看高风险能力是否被正确覆盖 |
| 契约不假定一致 | 不能假设实现与 API Contract 天然一致,策略必须说明由谁验证、在哪层验证、如何判定漂移 |
| 阶段先于环境 | 先判断测试阶段定义是否成立,再判断各阶段需要哪些环境能力;不能把环境直接当作阶段替代物 |
| 可执行优先 | 环境、数据、依赖不可执行的策略不算通过 |
| 边界清晰 | 策略只回答怎么测,不要求详细 case |
| 门禁思维 | 放行的是“可作为下游基线”,不是“差不多能用” |
| 脚本先行 | 先跑 trace-lint / trace-build-rtm,再做人工审查,不允许只靠人工等价判断 |
问题分级与准出门槛
| 级别 | 名称 | 定义 | 处理方式 |
|---|---|---|---|
| P0 | 阻塞 | 高风险能力或关键基线缺失,无法继续下游设计 | 任一 P0 ⇒ 不通过 |
| P1 | 严重 | 策略存在明显缺口或不可执行项 | 任一 P1 ⇒ 不通过 |
| P2 | 建议 | 可改进但不阻断后续工作 | P2 > 2 ⇒ 不通过 |
通过门槛:P0 = 0、P1 = 0、P2 ≤ 2
脚本化门禁(强制)
在进入正文审查前,必须先执行:
python3 plugins/testany-eng/scripts/trace_lint.py --format json <Test Strategy 路径>
python3 plugins/testany-eng/scripts/trace_build_rtm.py --format json <PRD 路径> <Test Strategy 路径>判定规则:
trace-lintblocking issue:直接记为P0trace-lintwarning:默认记为P1,除非明确只是信息性提示且不影响追溯trace-build-rtm的RTM001 / RTM002 / RTM003 / RTM004:直接记为P0trace-build-rtm的RTM101:默认记为P1- 脚本未执行:视为
P0
---
执行进度清单
执行时使用 TodoWrite 工具跟踪以下进度,完成一项后立即标记为 completed:
□ Phase 0: 基线收集与确认
□ 0.1 读取 Test Strategy
□ 0.2 扫描 PRD/API/HLD/Guardrails
□ 0.3 确认评审轮次与基线版本
□ Phase 1: Gate 1 - 基线与范围检查
□ 1.1 检查基线引用
□ 1.2 检查 In-scope / Out-of-scope
□ 1.3 检查 must-not-regress 清单
□ Phase 2: Gate 2 - 风险覆盖与独立测试分层
□ 2.1 检查高风险能力覆盖
□ 2.2 检查测试层次分配合理性
□ 2.3 检查阶段化执行规则
□ 2.4 检查遗漏与重复
□ Phase 3: Gate 3 - 环境/数据/依赖可执行性
□ 3.1 检查环境策略
□ 3.2 检查数据策略
□ 3.3 检查依赖与观测策略
□ 3.4 检查环境是否被错误绑定为阶段
□ Phase 4: Gate 4 - 入口/出口与自动化治理
□ 4.1 检查入口标准
□ 4.2 检查出口标准
□ 4.3 检查自动化与回归策略
□ Phase 5: 输出审查报告
□ 5.1 汇总问题并分级
□ 5.2 输出审查报告
□ 5.3 通过时输出准出证书---
工作流程
Phase 0:基线收集与确认
1. 读取 Test Strategy 文档;无法访问即 P0 停止 2. 使用 Glob 扫描 PRD、API Contract、HLD、Guardrails、相关 ADR 3. 确认评审基线:
- Strategy 引用的上游版本是否明确
- 是否为复审轮次
- 是否存在额外约束文档未纳入
4. 先执行脚本化门禁:
python3 plugins/testany-eng/scripts/trace_lint.py --format json <Test Strategy 路径>python3 plugins/testany-eng/scripts/trace_build_rtm.py --format json <PRD 路径> <Test Strategy 路径>
5. 读取脚本输出,定位 metadata/profile/外部对象解析问题,再进入人工审查
---
Phase 1:Gate 1 - 基线与范围检查
目标:确认策略的边界清晰且基线明确。
检查项:
TRACEABILITY-METADATAblock 是否存在且满足test-strategy-profile-v1(缺失/不合法 → P0)- 上游基线版本是否标明(缺失 → P0)
- In-scope / Out-of-scope 是否明确(缺失 → P1)
- 是否显式写出 API Contract 验证责任边界(缺失 → P1)
- Must-not-regress 是否明确(缺失 → P1)
- 假设、豁免、待确认项是否显式记录(缺失 → P1)
trace-build-rtm是否能把RISK-* / MR-* / BEH-*正确解析到 PRD 对象(不能解析 → P0)
Gate 1 阻塞处理:存在 P0 → 停止评审,仅输出 Gate 1 结果。
---
Phase 2:Gate 2 - 风险覆盖与独立测试分层
目标:确认关键风险被正确分配到合适的独立测试层次。
检查项:
- 高风险业务能力是否至少有一层主覆盖(缺失 → P0)
- 批准 API Contract 的高风险验证点、错误语义、权限/幂等边界是否有 QA 独立黑盒主覆盖(缺失 → P0)
- 数据一致性、兼容性、外部依赖风险是否有覆盖(缺失 → P1)
- 独立测试层次是否明显失衡(不合理 → P1)
- 是否定义了清晰的阶段化执行规则,能够说明“当前节点应做什么 / 不应做什么”(缺失 → P1)
- 是否为后续阶段保留了
Blocked / Deferred / 待环境就绪后执行的表达,而不是强行记成当前阶段失败(缺失 → P1) - 是否把批准 API Contract 的黑盒验证整体降级为上游前置条件,或默认认为开发/SDET 已完成(是 → P0)
- 是否把开发内建验证错误写成测试团队 owner 范围(越界 → P1)
- 是否把低价值内容过度放进昂贵测试层(过度设计 → P2)
---
Phase 3:Gate 3 - 环境/数据/依赖可执行性
目标:确认策略不是纸面方案。
检查项:
- 环境与网络条件是否现实可得(不可得 → P1)
- 数据准备、隔离、清理是否明确(缺失 → P1)
- mock / stub / real dependency 边界是否清晰(缺失 → P1)
- 观测方式是否足以判定结果(缺失 → P1)
- API Contract 验证所需的调用方式、测试数据与漂移判定信号是否明确(缺失 → P1)
- 是否把环境直接写成阶段替代物,导致“某环境不可得”就被误判为“当前阶段失败”(是 → P1)
- 是否说明同一阶段允许存在多个可接受环境,只要满足该阶段的验证能力(缺失 → P2)
- 开发内建验证前置条件是否显式记录(缺失 → P2)
---
Phase 4:Gate 4 - 入口/出口与自动化治理
目标:确认策略能作为下游设计和后续门禁基线。
检查项:
- 入口标准是否可判定(缺失 → P1)
- 出口标准是否可判定(缺失 → P1)
- 是否将批准 API Contract 的 in-scope 验证点完成与无漂移判定纳入出口(缺失 → P1)
- 是否区分了“当前阶段出口”与“后续阶段环境级门禁出口”(未区分 → P1)
- 缺陷分级与豁免规则是否明确(缺失 → P1)
- 自动化优先级与回归策略是否和风险匹配(失衡 → P2)
---
Phase 5:输出审查报告
按 references/report-templates.md 输出:
- 不通过:输出审查报告,列出 P0/P1/P2 与证据
- 通过:输出准出证书,作为
test-spec-writer的测试基线
交互规范
- 基线不明确时,向用户确认,不允许自行假定“最新版本”
- 文档缺失导致无法判断时,标记为
待澄清,不要强行下结论 - 只有当风险证据清晰时,才能定性为 P0/P1
- 覆盖/追溯争议时,以
trace-lint与trace-build-rtm --format json输出为主证据
禁止行为
- 禁止直接重写测试策略代替评审
- 禁止把“没写详细 case”误判为策略缺陷
- 禁止脱离 PRD/API/HLD 自行创造风险
- 禁止无证据给出阻塞结论
使用示例
/test-strategy-reviewer ./docs/Test-Strategy-用户认证.md ./docs/PRD-用户认证.md ./docs/API-Contract-用户认证.md ./docs/HLD-用户认证.md触发词
- 审查测试策略
- 评审测试策略
- test strategy review
- 测试策略评审
参考文档
references/review-checklist.md:分 Gate 检查清单references/report-templates.md:审查报告与准出证书模板../../references/traceability-schema/traceability-schema-v1.md:traceability canonical schema../../references/traceability-schema/trace-lint-contract-v1.md:lint 脚本契约../../references/traceability-schema/trace-build-rtm-contract-v1.md:RTM 聚合脚本契约
interface:
display_name: "Test Strategy Reviewer"
short_description: "Review test strategies for coverage and feasibility"
icon_small: "./assets/testany-logo-small.png"
icon_large: "./assets/testany-logo.svg"
default_prompt: "Use $test-strategy-reviewer to review this test strategy for risk coverage, feasibility, and gate criteria."
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="958.3745509306195" height="958.3745509306195" viewBox="0 0 958.3745509306195 958.3745509306195">
<g transform="scale(8.11041548093341) translate(10, 10)">
<defs id="SvgjsDefs1360"></defs>
<g id="SvgjsG1361" featureKey="symbolFeature-0" transform="matrix(0.9816393857057392,0,0,0.9816393857057392,-3.0293391105859975,0.00098156823722121)" fill="#7cbb00">
<rect xmlns="http://www.w3.org/2000/svg" x="42.607" y="47.076" transform="matrix(0.7761 0.6306 -0.6306 0.7761 46.5672 -14.0771)" width="1" height="22.92">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="45.986" y="57.948" transform="matrix(0.6084 0.7937 -0.7937 0.6084 68.7434 -22.4141)" width="22.194" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="61.209" y="34.391" transform="matrix(0.285 0.9585 -0.9585 0.285 88.4619 -26.0748)" width="1" height="23.738">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="38.984" y="37.368" transform="matrix(0.0074 1 -1 0.0074 88.2466 -13.1692)" width="23.546" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="27.744" y="45.76" transform="matrix(0.9562 0.2928 -0.2928 0.9562 15.2685 -9.4777)" width="23.094" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="35.832" y="34.683" transform="matrix(0.9456 0.3253 -0.3253 0.9456 16.6429 -9.3663)" width="1" height="20.809">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="31.072" y="60.446" transform="matrix(0.8221 0.5694 -0.5694 0.8221 42.108 -12.8663)" width="21.141" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="58.047" y="51.212" transform="matrix(0.5722 0.8201 -0.8201 0.5722 75.2668 -21.8197)" width="1" height="20.036">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="53.541" y="45.129" transform="matrix(0.2845 0.9587 -0.9587 0.2845 89.4167 -28.5477)" width="20.584" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="39.708" y="35.004" transform="matrix(0.9997 0.0243 -0.0243 0.9997 0.8776 -1.2119)" width="21.201" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="36.331" y="59.987" transform="matrix(0.5784 0.8158 -0.8158 0.5784 77.9659 2.2244)" width="1" height="33.1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="55.959" y="70.302" transform="matrix(0.3351 0.9422 -0.9422 0.3351 114.7194 -20.9532)" width="32.492" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="76.946" y="19.044" transform="matrix(0.0107 0.9999 -0.9999 0.0107 112.198 -42.2379)" width="1" height="33.083">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="44.371" y="2.123" transform="matrix(0.9527 0.3039 -0.3039 0.9527 7.9224 -12.733)" width="0.999" height="33.928">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="3.101" y="44.487" transform="matrix(0.8004 0.5995 -0.5995 0.8004 30.9 -2.8183)" width="33.161" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="13.446" y="11.595" transform="matrix(0.9605 0.2782 -0.2782 0.9605 11.716 -2.2955)" width="1" height="57.08">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="1.626" y="81.812" transform="matrix(0.8375 0.5464 -0.5464 0.8375 49.6273 -2.2773)" width="54.033" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="71.659" y="52.69" transform="matrix(0.6376 0.7704 -0.7704 0.6376 87.6254 -26.6706)" width="1" height="54.215">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="55.738" y="36.926" transform="matrix(0.377 0.9262 -0.9262 0.377 86.266 -53.4047)" width="54.19" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="46.824" y="-12.954" transform="matrix(0.0146 0.9999 -0.9999 0.0146 58.9718 -35.1579)" width="1" height="50.592">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="6.016" y="66.991" width="29.866" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="9.472" y="27.565" transform="matrix(0.2024 0.9793 -0.9793 0.2024 47.599 -2.3107)" width="31.493" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="61.126" y="6.058" transform="matrix(0.5429 0.8398 -0.8398 0.5429 44.2475 -43)" width="1" height="26.18">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="69.065" y="52.2" transform="matrix(0.7128 0.7014 -0.7014 0.7128 60.8208 -43.1259)" width="28.006" height="1">
</rect>
<rect xmlns="http://www.w3.org/2000/svg" x="57.052" y="65.986" transform="matrix(0.9215 0.3885 -0.3885 0.9215 36.441 -15.9049)" width="1" height="32.356">
</rect>
<circle xmlns="http://www.w3.org/2000/svg" cx="6.41" cy="35.047" r="2.928">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="32.979" cy="55.017" r="4.79">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="93.05" cy="62.521" r="2.928">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="93.987" cy="35.41" r="2.927">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="51.269" cy="97.073" r="2.928">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="6.014" cy="67.55" r="2.928">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="50.332" cy="49.641" r="5.511">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="39.816" cy="35" r="4.789">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="60.904" cy="35.842" r="4.79">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="77.649" cy="86.109" r="2.927">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="50.635" cy="67.21" r="4.79">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="66.735" cy="55.478" r="4.79">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="28.249" cy="42.878" r="2.028">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="50.633" cy="26.257" r="1.929">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="35.881" cy="67.432" r="2.128">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="63.833" cy="67.256" r="2.053">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="50.031" cy="2.927" r="2.928">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="72.616" cy="12.331" r="2.928">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="73.085" cy="42.878" r="2.225">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="23.331" cy="86.109" r="2.928">
</circle>
<circle xmlns="http://www.w3.org/2000/svg" cx="22.03" cy="12.645" r="2.928">
</circle>
</g>
</g>
</svg>Test Strategy Review Template
Review Report Template
#Test Strategy Review Report
## Basic Information
| Project | Content |
|------|------|
| **Strategy Documentation** | {path} |
| **PRD Baseline** | {path} v{version} |
| **API Contract Baseline** | {path} v{version} |
| **HLD Baseline** | {path} v{version} |
| **Guardrails** | {path} / N/A |
| **Review Round** | Round {N} |
| **Review Conclusion** | 🟢 Pass / 🔴 Fail |
## Script verification summary
| Check | Command | Result | Notes |
|------|------|------|------|
| Lint | `python3 plugins/testany-eng/scripts/trace_lint.py --format json {strategy_path}` | PASS/FAIL | {critical issue/none} |
| RTM aggregation | `python3 plugins/testany-eng/scripts/trace_build_rtm.py --format json {prd_path} {strategy_path}` | PASS / FAIL | {critical issue / none} |
## Problem statistics
| Level | Quantity | Threshold | Status |
|------|------|------|------|
| P0 | {n} | = 0 | ✅/❌ |
| P1 | {n} | = 0 | ✅/❌ |
| P2 | {n} | ≤ 2 | ✅/❌ |
## Gate 1: Baseline and Range
- {Conclusion and Evidence}
## Gate 2: Risk coverage and independent test layering
- {Conclusion and Evidence}
## Gate 3: Environment/Data/Dependencies
- {Conclusion and Evidence}
## Gate 4: Access Control and Automation
- {Conclusion and Evidence}
## Question list
### P0
- {Question} (Evidence: {Location})
### P1
- {Question} (Evidence: {Location})
- {Missing staged execution rules / Mistaking subsequent stage access control as current stage failure / Substituting environment for stage definition} (evidence: {location})
### P2
- {Question} (Evidence: {Location})
## Release conclusion
- **Passed**: can be used as a baseline for `test-spec-writer`
or
- **Fail**: Review after repairApproval Certificate Template
#✅ Test Strategy is certified
- **Strategy Documentation**: {path}
- **Baseline**: PRD/API/HLD/Guardrails
- **Review Round**: Round {N}
- **Conclusion**: Passed
- **Script verification**: `trace-lint` passed, `trace-build-rtm` had no build error
- **Phase Description**: The boundary between the exit of the current stage and the environmental-level access control in subsequent stages has been clarified
- **Note**: This test strategy can be used as the baseline for detailed test specifications and test case packagesTest Strategy 审查模板
审查报告模板
# Test Strategy 审查报告
## 基本信息
| 项目 | 内容 |
|------|------|
| **Strategy 文档** | {路径} |
| **PRD 基线** | {路径} v{版本} |
| **API Contract 基线** | {路径} v{版本} |
| **HLD 基线** | {路径} v{版本} |
| **Guardrails** | {路径} / N/A |
| **审查轮次** | 第 {N} 轮 |
| **审查结论** | 🟢 通过 / 🔴 不通过 |
## 脚本校验摘要
| 检查 | 命令 | 结果 | 备注 |
|------|------|------|------|
| Lint | `python3 plugins/testany-eng/scripts/trace_lint.py --format json {strategy_path}` | PASS / FAIL | {关键 issue / 无} |
| RTM 聚合 | `python3 plugins/testany-eng/scripts/trace_build_rtm.py --format json {prd_path} {strategy_path}` | PASS / FAIL | {关键 issue / 无} |
## 问题统计
| 级别 | 数量 | 门槛 | 状态 |
|------|------|------|------|
| P0 | {n} | = 0 | ✅/❌ |
| P1 | {n} | = 0 | ✅/❌ |
| P2 | {n} | ≤ 2 | ✅/❌ |
## Gate 1:基线与范围
- {结论与证据}
## Gate 2:风险覆盖与独立测试分层
- {结论与证据}
## Gate 3:环境/数据/依赖
- {结论与证据}
## Gate 4:门禁与自动化
- {结论与证据}
## 问题清单
### P0
- {问题}(证据:{位置})
### P1
- {问题}(证据:{位置})
- {缺少阶段化执行规则 / 把后续阶段门禁误记为当前阶段失败 / 用环境替代阶段定义}(证据:{位置})
### P2
- {问题}(证据:{位置})
## 放行结论
- **通过**:可作为 `test-spec-writer` 的基线
或
- **不通过**:修复后复审准出证书模板
# ✅ Test Strategy 准出证书
- **Strategy 文档**:{路径}
- **基线**:PRD/API/HLD/Guardrails
- **审查轮次**:第 {N} 轮
- **结论**:通过
- **脚本校验**:`trace-lint` 通过,`trace-build-rtm` 无 build error
- **阶段说明**:已明确当前阶段出口与后续阶段环境级门禁边界
- **说明**:该测试策略可作为详细测试规格与测试用例包的基线Test Strategy 评审清单
预检:脚本化门禁
- [ ] 是否先执行了
python3 plugins/testany-eng/scripts/trace_lint.py --format json <Test Strategy 路径>? - [ ] 是否先执行了
python3 plugins/testany-eng/scripts/trace_build_rtm.py --format json <PRD 路径> <Test Strategy 路径>? - [ ]
trace-lint是否通过,且未留下 blocking issue? - [ ]
trace-build-rtm是否没有RTM001 / RTM002 / RTM003 / RTM004? - [ ] 是否存在
RTM101 orphan entity?如有,是否已评估严重度并纳入问题单?
Gate 1:基线与范围
TRACEABILITY-METADATAblock 是否存在且 profile =test-strategy-profile-v1- 是否标明 PRD / API / HLD / Guardrails 基线版本
- 是否明确 In-scope / Out-of-scope
- 是否显式写出 API Contract 验证责任边界
- 是否明确 must-not-regress 能力
- 是否记录假设、豁免、待确认项
Gate 2:风险覆盖与独立测试分层
- 高风险业务路径是否被覆盖
- 批准 API Contract 的高风险验证点是否由 QA 独立黑盒验证承接
- 数据一致性、兼容性、恢复能力是否被覆盖
- 外部依赖风险是否被覆盖
- 每个高风险点是否有合理的独立测试主层
- 是否定义了清晰的阶段化执行规则
- 是否说明了当前阶段应执行与不应执行的测试范围
- 是否为后续阶段测试项保留
Blocked / Deferred表达,而不是错误折算成当前阶段失败 - 是否存在明显失衡或重复投入
- 是否把批准 API Contract 的黑盒验证错误降级为上游前置条件
- 是否把 unit、code-level integration 错写为测试团队职责
Gate 3:环境、数据、依赖
- 是否说明各测试阶段推荐或要求具备哪些环境能力
- 是否错误地把环境名称直接写成阶段定义
- 是否允许同一阶段存在多个可接受环境,只要满足验证能力
- 是否说明数据准备、隔离、清理
- 是否说明 mock / stub / real dependency 边界
- 是否说明结果判定依赖哪些观测信号
- 是否说明 API Contract 验证所需的调用方式、测试数据与漂移判定信号
- 是否记录开发内建验证前置条件
Gate 4:门禁与自动化
- 入口标准是否可判定
- 出口标准是否可判定
- 出口标准是否包含批准 API Contract 的无漂移判定
- 是否区分“当前阶段出口”与“后续阶段环境级门禁出口”
- 缺陷等级、豁免规则、owner 是否明确
- 自动化优先级是否和风险匹配
- 回归范围是否覆盖 must-not-regress