arch
無料架构师工作技能 - 架构设计、文档管理、语义化版本控制、设计审查。当用户提到架构、设计文档、版本管理、技术选型、系统设计、数据模型、API设计、文档审查、设计规范、架构决策、或需要创建/更新设计文档时,必须使用此技能。确保所有设计文档遵循语义化版本规范和命名约定。
日本語の概要は準備中です。原文の説明を表示しています。
QA 工作技能 — 测试分层架构、UT/API/SIT/E2E/UAT 测试、交叉验证策略、测试数据管理、测试报告管理。当用户提到测试、QA、质量保证、回归测试、单元测试、集成测试、验收测试、测试覆盖率、pytest、go test、E2E、Playwright、monkey test、fuzz test、RPC 测试、测试用例设计、TDD、测试框架、测试策略审查、问题排查、测试环境、测试数据、SIT 交叉验证、或需要设计/执行/增强测试策略时,必须使用此技能。确保所有测试活动遵循分层架构和业务正确性验证原则。
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
本文档描述 QA 工作的核心技能和流程,重点包括:
章节优先级:测试分层架构 → SIT 交叉验证 → TDD 验收标准 → 测试用例设计
/\
/ \
/ UAT \ ← 发布门禁(最少)
/------\
/ E2E \ ← 端到端用户场景(较少)
/----------\
/ SIT \ ← ⭐ 数据层/服务层交叉验证(适中)
/--------------\
/ API \ ← 接口契约 + 业务正确性(较多)
/------------------\
/ UT \ ← 函数/方法逻辑(最多)
/----------------------\
| 层级 | 核心目标 | 定位能力 | 用例数 |
|---|---|---|---|
| UT | 函数/方法逻辑正确性(Mock 是合理手段) | 定位具体函数错误 | 最多 |
| API | 接口契约 + 业务数据正确性(需主动索取测试数据) | 定位接口层问题 | 较多 |
| SIT | 数据层 + 后端服务层联调验证 | 定位服务层逻辑 bug | 适中 |
| E2E | 数据层 + 后端 + 前端三层联调验证(Playwright) | 验证三层贯通 | 较少 |
| UAT | 用户可感知功能场景(全面准确,非仅有数据) | 确认功能/数据精准可用 | 最少 |
完整定义:每个测试层级的详细定义、目标、测试范围、工具和模式,见 testing_layer_definitions.md
规则 1:目录对应关系
tests/api/tests/sit/frontend/tests/e2e/(前端项目内)规则 2:回归测试必须完整执行
# ✅ 正确
pytest tests/api/ -v
# ❌ 错误
pytest tests/api/test_single.py -v
规则 3:禁止使用 --maxfail 提前终止
UT 无法替代 SIT:Mock 无法发现集成问题
SIT 无法替代 E2E:测试环境无法模拟真实用户场景
E2E 无法替代 UAT:自动化无法替代人的业务判断
每一层都有独特价值,缺少任何一层都会留下盲区。
SIT 的价值不是验证"数据存在",而是验证"数据层和服务层的一致性"。
如果数据层(DB 直接查询)可获得正确结果,但通过 API 在服务层无法获得,那就说明服务层逻辑有 bug。
数据层有数据 + API 返回空 → 🔴 服务层逻辑 bug
数据层无数据 + API 返回空 → ✅ 数据问题,非代码 bug
数据层有数据 + API 返回数据 → ✅ 正确
数据层无数据 + API 返回数据 → 🔴 数据映射 bug(幻觉数据)
def test_cross_validation_db_vs_api(pg_conn):
"""SIT 交叉验证标准模式"""
# Step 1: 数据层 — 直接查 DB 获取预期
with pg_conn.cursor() as cur:
cur.execute("SELECT ... FROM table WHERE condition")
db_result = cur.fetchone()
assert db_result is not None, "数据层:无预期数据,无法交叉验证"
# Step 2: 服务层 — 调 API 获取实际
resp = requests.get(f"{API_BASE}/endpoint", params={...})
api_result = resp.json()["data"]
# Step 3: 交叉断言 — DB 预期 vs API 实际
assert len(api_result) > 0, (
f"服务层 bug:DB 有 {db_result} 条记录,"
"但 API 返回空数据 → 服务层逻辑有 bug"
)
| 类型 | 目的 | 示例 |
|---|---|---|
| 数据质量验证 | 验证 DB 数据格式、完整性 | commit_hash 是 SHA-1,artifact commit_hash 是 MD5 |
| 业务规则验证 | 验证数据符合业务规则 | app 制品有 commit-artifact 关联 |
| ⭐ 交叉验证 | DB 预期 vs API 实际 → 定位服务层 bug | DB 有数据但 API 返回空 → 服务层 bug |
| 测试层级 | 能否定位服务层 bug | 原因 |
|---|---|---|
| UT | ❌ | Mock 隔离了数据库 |
| API | ⚠️ | 能发现"有问题",无法定位层级 |
| SIT | ✅ | DB 预期 vs API 实际 = 定位服务层 |
| E2E | ❌ | 只验证用户行为 |
完整案例:source_map 类型过滤和源码追溯的 SIT 交叉验证实战,见 testing_layer_definitions.md
错误标准(不够):
# ❌ 只验证数据存在
assert len(body["data"]) > 0
assert resp.status_code == 200
正确标准(业务正确性):
# ✅ 验证业务数据逻辑
node_types = collect_all_node_types(body["data"])
assert "system" in node_types, "依赖树必须包含 system 节点"
assert "commit" in node_types, "app 制品依赖树必须追溯至 commit"
assert all(name.strip() for name in commit_names), "commit 名称不应为空"
| 层 | 唯一来源 | 反标载体(@trace) |
|---|---|---|
| UT | 代码符号 | 不适用 @trace(UT 真实来源=代码符号;追溯交 spec-xchecker CT 层 symbol↔test_) |
| API | API 元数据文件 | endpoint + design="api_design_vX.Y#<章节>" |
| SIT | 设计文档 | story + design="service_layer_architecture_vX.Y#<章节>" |
| E2E | 用户旅程 / Epic | epic(Epic 即 PRD 源锚) |
| UAT | PRD 文档 / Epic | epic(保持 PRD@Epic 粒度) |
反标不止是"写下来",而是要让测试集随设计演进新陈代谢:见下方「分层用例 review」节与 test_traceability.md。
pytest -v | grep XPASS通过率计算:pass_rate = (passed + xpassed) / total_tests
每次更新代码后,启动服务前必须重新构建容器镜像。
# ✅ 重新构建并启动
cd {deploy_path} && {compose_command} up -d --build
# ❌ 只重启不会应用新代码
{compose_command} restart {service_name}
Where you code = Where you test
详细规范:容器环境验证、跨环境测试陷阱、检查清单,见 troubleshooting.md
git mv 保留历史# 基线
pytest tests/ -v --html=test_reports/baseline.html
# 重构后
pytest tests/ -v --html=test_reports/refactor.html
# 对比:差异 ≤5% → 重构安全
详细流程:四阶段流程 + 问题诊断决策树,见 troubleshooting.md
分层统计,聚焦核心逻辑:
| 层级 | 覆盖率目标 | 是否计入总体 |
|---|---|---|
| Logic 层 | ≥80% | ✅ 计入 |
| Package 层 | ≥60% | ✅ 计入 |
| 数据访问层 | 20-30% | ❌ 单独统计 |
数据访问层的真实性验证交给 SIT 集成测试(真实数据库)。
详细指南:统计方法、行业对标、报告模板,见 ut_coverage_guide.md
测试可以重复执行任意次数,每次结果相同。
| 保护机制 | 作用范围 | 实现方式 |
|---|---|---|
| 全局清理 | 测试会话级别 | scope="session" fixture |
| 独立命名 | 测试用例级别 | test-{layer}-{id}-{desc} |
| 自动清理 | 测试用例级别 | fixture yield 前后执行清理 |
详细策略:四阶段幂等性策略、数据准备原则、检查清单,见 test_idempotency.md
详细方法论:环境一致性、容器化开发规范、重构测试流程,见 troubleshooting.md
{type}_report-{desc}-{timestamp}.html{type}_test_result-{desc}-{timestamp}.logtest_reports/ 下只保留当前测试报告,每次新一轮测试前归档往期:
mkdir -p test_reports/archive
mv test_reports/*report*.html test_reports/archive/
## 问题 ID: QA-{TYPE}-XXX
**严重级别**: 🔴 P0 / 🟡 P1 / 🟢 P2
**测试场景**: {test_scenario}
**实际结果**: {actual_result}
**预期结果**: {expected_result}
**根因分析**: {root_cause}
**修复位置**: {file_path}:{line_number}
用例集要随设计迭代新陈代谢:测试用
@tracemarker 记录"创建时对应的 design 版本";设计演进时,漂移检测器自动暴露过期用例,由 review 决定 update/retire/add。
@trace marker(两维度)@pytest.mark.trace(
story="STORY-6-02", ac="SIT",
design="service_layer_architecture_v4.2#查询路由策略" # 版本化源锚 = 历史快照
)
story/epic/endpoint 三选一 —— "一测一主功能锚"(约束功能维度,不约束 AC 层维度)。design="<doc>_vX.Y#<真实章节>",是历史快照(不随设计自动更新)—— pin 版本与当前版本之差即漂移信号。python .codex/skills/qa/scripts/trace_drift.py
# → test_reports/trace_drift_report.md(纯静态,不开 pytest、不连 PG/K8s)
| 态 | 触发 | review 动作 |
|---|---|---|
| ✅ 同步 | pin == 当前 且章节仍在 | 无需动作 |
| ⚠️ 版本漂移 | pin < 当前(design 已演进) | 复核内容 → UPDATE / RETIRE |
| ⚠️ 章节漂移 | 章节 重排/改名/删除 | 重对齐锚 → UPDATE |
| 🔴 悬空 | doc 族消失 或 story CANCELLED | RETIRE |
框架代码(marker 工厂 + 收集期校验 hook)见 assets/;完整方法论(时态论证、层↔锚对角映射、非对角测试规则、能力边界)见 test_traceability.md。
cd backend && go test ./... -v
pytest tests/sit/ -v -m sit
pytest tests/api/ -v
cd frontend && npx playwright test
cd backend && go test -coverprofile=coverage.out ./...
assets/ + scripts/)@trace marker 工厂 + pytest_collection_modifyitems 校验 hook(复制进项目即用)trace: marker 注册行(贴进 pytest.ini)测试框架文档:
测试策略参考:
协作 SKILL:
.codex/skills/dev/SKILL.md — 开发工作流(测试命令、覆盖率工具).codex/skills/pm/SKILL.md — Story 管理与 AC 测试分层策略.codex/skills/arch/SKILL.md — 架构设计规范版本: v7.3 更新日期: 2026-07-30
更新日志:
@trace 范围(镜像 .claude/skills/qa,路径已 adapt)
VALID_AC 移除 "UT";ac="UT" 报专属引导 issue;文档 UT 由"可选"改"不适用 @trace"trace_framework.py 加 VALID_AC↔SSOT 元不变式(改枚举即自测报警);test_traceability.md §3 加语义对齐自检三问@trace marker + references/test_traceability.md + assets/{trace_framework.py,test_trace_example.py,pytest_trace_marker.ini.snippet} + scripts/trace_drift.pyreferences/testing_layer_definitions.md — UT/API/SIT/E2E/UAT 标准定义references/test_idempotency.md — 测试幂等性详细策略references/ut_coverage_guide.md — UT 覆盖率统计指南references/troubleshooting.md — 问题排查 + 环境一致性 + 重构测试まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
架构师工作技能 - 架构设计、文档管理、语义化版本控制、设计审查。当用户提到架构、设计文档、版本管理、技术选型、系统设计、数据模型、API设计、文档审查、设计规范、架构决策、或需要创建/更新设计文档时,必须使用此技能。确保所有设计文档遵循语义化版本规范和命名约定。
日本語の概要は準備中です。原文の説明を表示しています。
代码提交与 MR 创建技能 - 自动生成语义化 commit message、创建符合规范的 GitLab Merge Request、验证飞书工作项关联。当用户提到 Git 提交、commit、push、推送代码、创建 MR、创建 PR、合并请求、或需要提交代码、推送代码、创建 MR/PR 时,必须使用此技能。支持交互式(对话)和非交互式(参数)两种模式。
日本語の概要は準備中です。原文の説明を表示しています。
开发工作流程指导 - 编码、测试、代码质量、MR/PR 创建和 CI/CD。用于开发任务、编码、功能实现、Bug 修复、单元测试、代码覆盖率、代码审查、CI/CD 流水线和 Git 操作。
日本語の概要は準備中です。原文の説明を表示しています。
DevOps 工作技能 - CI/CD 流程、容器化构建、Kubernetes 部署、基础设施即代码、监控告警。当用户提到部署、容器化、K8s、Helm、ArgoCD、CI/CD、监控、日志、或需要执行部署、排查线上问题时,必须使用此技能。
日本語の概要は準備中です。原文の説明を表示しています。
PM 编排技能 — 具备意图识别与动态路由能力的项目管理中枢。除了 pm 的全部 Story/Epic/Sprint 管理能力外,pm 能分析用户 prompt 的多领域意图,动态匹配所需的专业 skill(arch/dev/ued/qa/devops 等),生成编排计划并在用户确认后依次唤起各 skill 协同工作。当用户的请求涉及多个专业领域、需要跨 skill 协调、或者用户希望用一个 prompt 驱动完整的「设计→实现→验证」流程时,使用此技能。纯 Story 管理/迭代规划等单领域任务,pm 会直接处理而不路由。
日本語の概要は準備中です。原文の説明を表示しています。
安全重构代码技能。当用户明确提到"重构"、"代码异味"或需要在TDD循环的Refactor阶段改进代码内部结构时使用。
日本語の概要は準備中です。原文の説明を表示しています。