qa-expert
This skill should be used when establishing comprehensive QA testing processes for any software project. Use when creating test strategies, writing test cases following Google Testing Standards, executing test plans, tracking bugs with P0-P4 classification, calculating quality metrics, or generating progress reports. Includes autonomous execution capability via master prompts and complete documentation templates for third-party QA team handoffs. Implements OWASP security testing and achieves 90% coverage targets.
1实现原理 · 为什么它能做到
工程骨架完全由 scripts/init_qa_project.py 用标准库 mkdir + open 落盘生成:4 层目录(tests/docs、tests/docs/templates、tests/e2e、tests/fixtures)是硬编码列表,不依赖任何模板引擎或第三方包。
dirs = [ "tests/docs", "tests/docs/templates", "tests/e2e", "tests/fixtures" ]
CSV 的列名是两个脚本之间的隐式数据契约:init 写 13 列,calculate_metrics.py 后续按同一批列名(Test Case ID/Status/Result/Bug ID/Priority/Notes)读取与聚合。
headers = [ "Test Case ID", "Category", "Priority", "Test Name", "Estimated Time (min)", "Prerequisites", "Status", "Result", "Bug ID", "Execution Date", "Executed By", "Notes", "Screenshot/Log" ]
指标口径写死在脚本里:执行数 = Status 恰为 'Completed' 的行,通过数 = Result 恰为 '✅ PASSED' 的行;执行率分母为全部有效用例行,通过率分母为已执行行。
executed = len([t for t in tests if t['Status'] == 'Completed']) passed = len([t for t in tests if t['Result'] == '✅ PASSED']) failed = len([t for t in tests if t['Result'] == '❌ FAILED'])
质量门禁在脚本里只实现 3 条(执行率 100%、通过率 ≥80%、P0=0),且 P0 判定靠 Notes 列里是否含字符串 'P0',属于弱证据判定。
gates = { "Test Execution ≥100%": execution_rate >= 100, "Pass Rate ≥80%": pass_rate >= 80, "P0 Bugs = 0": len([t for t in tests if t['Bug ID'].startswith('BUG') and 'P0' in t['Notes']]) == 0, }
「Ground Truth 原则」把文档定为唯一规格源、CSV 只记执行状态,是本 skill 的核心纪律(对应真实事故教训:CSV 与文档用例 ID 一致率仅 3.2%)。
- **Test case documents** (e.g., `02-CLI-TEST-CASES.md`) = **authoritative source** for test steps
「自主执行」不是代码能力,而是一段可粘贴的 master prompt:让宿主 LLM 读 CSV 判断进度、逐条执行测试、每条立刻更新 CSV,从而获得断点续跑。
You are a senior QA engineer with 20+ years of experience at Google. Execute the QA test plan.
补丁在于状态可续跑:master prompt 要求 LLM 先读 TEST-EXECUTION-TRACKING.csv 定位最后一个 'Completed' 用例,再从下一条继续,并强制「每条测试后立即更新、禁止批量更新」。
- Auto-resume from last completed test (reads tracking CSV)
测试用例体系来自模板而非代码生成:用例结构由 assets/templates/TEST-CASE-TEMPLATE.md 定义(AAA + TC-[CATEGORY]-[NUMBER] 命名 + P0-P4)。
### TC-[CATEGORY]-[NUMBER]: [Descriptive Title]
init 实际落盘的文件集与文档宣称的存在缺口:生成的 README/MASTER-QA-PROMPT 指向 QA-HANDOVER-INSTRUCTIONS.md、分类测试用例文档等 init 并不创建的文件。
1. Read `QA-HANDOVER-INSTRUCTIONS.md`
2核心能力
3外部依赖
| Kind | Dependency / Endpoint |
|---|---|
| cli | python3(执行自带脚本;仅标准库 os/sys/csv/pathlib/datetime/collections) |
| cli | git(master prompt 中克隆被测仓库的示例步骤) |
| cli | docker / npx supabase(Day 1 环境搭建示例:起本地数据库) |
| cli | pnpm / npm(Day 1 安装依赖示例) |
| cli | curl(诊断脚本:检查本地 dev server 是否响应) |
| network | 文档内参考外链(仅 Markdown 超链接,代码不访问) |
4管控建议与判定依据
- scripts/: 执行本地脚本或命令: python3 scripts/init_qa_project.py <project-name> [output-directory](写目录与文件
- 本地工作目录: 文件读写与工件输出: 目标目录下创建 tests/docs、tests/docs/templates、tests/e2e、tests/fixtures 四层目录(mkdir
5第二遍独立确认
- [ok] 无网络/无凭证:脚本执行面反查 — 对 qa-expert/ 全目录 grep subprocess|requests|urllib|socket|http|os.system|os.environ|getenv|eval|exec:脚本侧零命中,仅参考文献里的 localhost 示例、文档外链与 docker ps 等示例命令。两脚本 import 仅 os/sys/csv/pathlib/datetime/collections。第一遍『无网络、无凭证』结论成立。
- [discrepancy] init 落盘清单 vs SKILL.md/生成文档的自我引用 — init 只创建 6 个文件:TESTS-EXECUTION-TRACKING.csv、BUG-TRACKING-TEMPLATE.csv、BASELINE-METRICS.md、WEEKLY-PROGRESS-REPORT.md、MASTER-QA-PROMPT.md、README.md(均在 tests/docs 或 tests/docs/templates 下)。但生成的 README 正文写『1. Read `QA-HANDOVER-INSTRUCTIONS.md`』并索引 QA-HANDOVER-INSTRUCTIONS.md、01-[CATEGORY]-TEST-CASES.md、02-SECURITY-TEST-CASES.md,MASTER-QA-PROMPT.md 也要求先读 tests/docs/QA-HANDOVER-INSTRUCTIONS.md——这些文件 init 一律不生成,第三方按模板走会在第一步中断。SKILL.md『What gets created』同样未提示该缺口。
- [discrepancy] 质量门禁:SKILL.md 6 条 vs 脚本 3 条 — SKILL.md 门禁表列 Test Execution 100% / Pass Rate ≥80% / P0=0 / P1≤5 / Code Coverage ≥80% / Security 90% 六条并标注均为 Blocker;calculate_metrics.py 的 gates 字典只有前三条,且 P0 判定实现为『Bug ID 以 BUG 开头且 Notes 含 P0』这一启发式。P1≤5、覆盖率、OWASP 三项无任何自动判定。
- [ok] 指标口径与 CSV 键名契约 — calculate_metrics 读取的键 Test Case ID/Status/Result/Bug ID/Priority/Notes 均存在于 init 写出的 13 列表头中,跨脚本契约自洽。但口径依赖精确字符串:Status=='Completed'、Result=='✅ PASSED'、Notes 含 'P0',大小写或写法的任何偏差都会静默计 0(无校验、无告警)——这是口径脆弱性而非事实错误。
- [discrepancy] llm_prompts_library『30+ prompts』宣称 — SKILL.md 两处写『30+ ready-to-use prompts』/『30+ ready-to-use reporting prompts』。独立计数(grep '^```' = 36 行 → 18 个围栏代码块;'### ' 小节 29 个,其中含 Best Practices/Common Mistakes/Troubleshooting 等非 prompt 小节)→ 可粘贴 prompt 块实为 18 个,最宽口径(含故障排查内的短示例)也不足 30。宣称偏高。
- [ok] 关键方法论声明与实际内容一致性(AAA/5 小时/OWASP 90%/P0-P4) — day1_onboarding.md 首行即『**Time**: 5 hours (with breaks)』,与 SKILL.md 的 5 小时时间线一致;google_testing_standards.md 确实给出 AAA 三段结构、TC-[CATEGORY]-[NUMBER] 命名与 P0-P4 定义;SKILL.md 的 OWASP A01-A07 清单与『**Target**: 90% OWASP coverage (9/10 threats mitigated)』自洽;模板文件 TEST-CASE-TEMPLATE.md 含 AAA 字段与实例。无夸大。
- [ok] Ground Truth 原则的双向核对 — SKILL.md『Test case documents … = authoritative source for test steps』与 ground_truth_principle.md『Ground Truth: 02-CLI-TEST-CASES.md (detailed test specifications)』/『Lesson Learned: … 3.2% consistency rate』表述一致,纪律有事故依据,非泛泛口号。
- [ok] pin commit 与目录资产面核对 — git rev-parse HEAD = d5c4678cb5d4fd6acc9c922690df035dbd33d247,提交时间 2026-09-09T20:31:25+08:00(= UTC 12:31:25Z),与任务给定一致。glob 全量(含隐藏文件)确认 qa-expert/ 仅 SKILL.md + scripts/2 + references/5 + assets/templates/1,无隐藏脚本、无二进制、无 .env。
6结论
a79a23756c922164…