技术质量视角 Skill:从代码可运行到系统稳定性验证
技术质量要同时看代码结构、可用性、可维护性、故障恢复和依赖边界。评价时要把工程特征和运行后果连起来。
技术质量视角 Skill 同时评估架构和运行信号,避免单独的代码指标掩盖系统脆弱性。
本文从支付回调的超时、重试和 Trace 入手,把代码线索连接到运行后果。
Awesome QA Skills 按语言和测试阶段组织 Skill。目录结构和安装方式请先看系列总览;本文聚焦技术质量视角,重点说明运行后果、可观测性和恢复能力如何成为判断依据。
先看源 Skill
主 Prompt 把工作拆成“必需输入与门槛”“技术评估”“边界与输出”“输入与执行流程”“职责与边界”几个部分。这些标题只是导航,真正使用时还要回到项目材料。
本文统一使用中文表示研发阶段:需求分析(requirements-analysis)、测试策略(test-strategy)、测试策略评审(test-strategy-review)、代码评审(code-review)、测试用例编写(test-case-writing)、测试用例评审(test-case-review)、测试报告编写(test-reporting)和测试报告评审(test-report-review)。阅读时看中文名称即可,调用 Skill 时 stage 仍填写括号里的英文键名。
这个 Skill 没有单独的示例目录,文中的片段根据入口、主 Prompt 和评测约束整理。
相关 Skill
技术质量视角把代码和配置连接到运行后果。需要进一步定位或验证时,可以衔接这些 Skill:
| Skill | 什么时候接上 | 它补什么 |
|---|---|---|
| 性能瓶颈分析 | 延迟、吞吐或资源曲线显示系统退化时 | 按请求、依赖、资源和时间线定位瓶颈假设 |
| 根因分析 | 已经有多个症状,需要验证因果链时 | 区分事实、假设和反证,形成可验证的根因路径 |
| 生产验证 | 修复上线后需要确认真实影响时 | 检查关键指标、告警、回滚和止损条件 |
| 多角色质量汇总 | 技术证据要和产品、QA、UX 报告放在同一阶段比较时 | 保留来源、冲突和少数高风险意见 |
| 项目交付视角 | 技术缺口已经影响范围、依赖或发布日期时 | 把技术行动接到 Owner、里程碑和退路 |
同一研发流程,技术视角输出什么
技术质量视角可以覆盖八个研发阶段,但每个阶段只回答技术质量问题。它不会因为代码评审通过就宣称测试通过,也不会因为项目要按期发布就降低运行证据的要求。
| 研发阶段 | 技术视角要检查什么 | 输出给团队的内容 |
|---|---|---|
| 需求分析 | API、数据、依赖、性能、兼容性、可观测性和恢复约束是否明确 | 技术事实、约束缺口、待确认问题和信心等级 |
| 测试策略 | 哪些失败模式、负载、恢复路径和运行信号需要验证 | 技术覆盖范围、证据门槛和未验证假设 |
| 测试策略评审 | 策略是否漏掉高风险依赖、降级、回滚或观测信号 | 技术评审发现、影响、行动和严重性依据 |
| 代码评审 | 代码身份和 diff 是否可定位,超时、重试、幂等和日志是否有证据 | 静态发现、运行风险和最小补证据动作 |
| 测试用例编写 | 失败注入、边界输入、数据迁移和预期信号能否写成可执行步骤 | 技术前置条件、可观察预期和恢复检查 |
| 测试用例评审 | 用例是否能复现失败,断言是否能区分日志、指标和业务结果 | 用例缺口、不可判定项和修订行动 |
| 测试报告编写 | 版本、时间窗口、负载、日志、指标、Trace 和退出码是否齐全 | 运行事实、静态观察、缺失证据和技术风险 |
| 测试报告评审 | 结论是否把代码线索和运行信号对应起来,恢复是否真的验证 | 技术发现、影响、限制和下一步验证 |
代码评审有一个硬门槛:必须同时提供代码身份和可审查变更。只有一句“请看看这段代码”,不足以产生可追溯的技术发现。
服务改动的技术证据要落到运行后果
评审服务改动时,要同时看架构、可观测性、故障恢复和回滚成本。
| 技术问题 | 证据 | 运行后果 | 下一步 |
|---|---|---|---|
| 外部调用没有超时 | 客户端配置和依赖 SLA | 线程或连接长期占用 | 加超时、重试上限和告警 |
| 失败链路没有 Trace | 日志只有本地请求 ID | 故障定位需要人工拼接 | 统一 trace ID 和结构化日志 |
| 数据迁移缺少回滚 | 迁移脚本和演练记录 | 版本回退可能卡住 | 补回滚脚本和恢复演练 |
| 共享缓存没有失效指标 | 缓存配置和命中率曲线 | 脏数据会持续扩散 | 增加失效监控和清理动作 |
技术质量结论要把代码特征和可观察、可修复的运行后果对应起来。
会员升级支付回调的技术实践
下面以一次会员升级改动为例,按研发过程展开。这只是示例,不代表当前系统已经出现这些问题;真实执行时要用实际版本、运行窗口和证据替换占位内容。
| 研发环节 | 技术问题 | 应留下的证据 | 交给下一环节什么 |
|---|---|---|---|
| 需求分析 | 回调超时、重复通知、幂等键和订单状态转换是否定义 | API 合同、状态图、依赖 SLA | 技术约束和缺失规则 |
| 方案设计 | 超时、重试上限、熔断、Trace 传播和回滚怎么实现 | 方案图、错误处理约定、恢复步骤 | 可评审的设计假设 |
| 代码评审 | PR 是否设置超时,重试是否可能放大流量,日志是否能关联订单 | PR、提交、diff、静态检查结果 | 静态发现和最小运行验证 |
| 测试执行 | 下游延迟或返回重复通知时,系统是否可观测、可恢复 | 运行 ID、注入条件、日志、指标、Trace | 已验证与未执行项 |
| 报告评审 | 技术结论是否只覆盖本次版本和时间窗口 | 报告、回滚演练、告警记录 | 限定性结论和修复 Owner |
例如,TECH-42 可以记录“提交 abc123 未看到客户端超时配置”,这只能进入静态观察;如果 RUN-42 在明确的延迟注入条件下记录超时数、Trace 和恢复结果,才能补充运行证据。两者不能在汇总时被合并成一个未经解释的“稳定性通过”。
技术记录建议把观察、推断和缺口分开:
stage: test-report-review
source_version: build-42
dependency: payment-callback
time_window: [2026-09-24T10:00:00Z, 2026-09-24T11:00:00Z]
observed:
- source_id: PR-42
statement: 回调客户端未看到超时配置
evidence: diff-link-or-file
status: static_observation
- source_id: RUN-42
statement: 延迟注入场景尚未执行
evidence: run-record
status: not_run
inference:
- 需要验证下游延迟时连接和线程是否持续占用
missing_evidence:
- [timeout-count, trace-id, rollback-duration]
action:
owner: 支付服务负责人
next_action: 补充超时注入并保存日志、指标和 Trace
status: pending
这个结构可以直接交给多角色质量汇总:技术材料保留在 TECH-42,QA 的执行状态保留在 QA-42,项目交付视角再根据行动 Owner 和截止时间跟踪,不会把不同职责混成一个结论。
运行信号怎样支持技术结论
技术风险需要多个信号互相印证,单个代码指标无法代表系统稳定性。
| 结论 | 需要对照的信号 | 复核动作 | | --- | --- | --- | --- | | 依赖变慢 | p95/p99、超时数、线程池和下游错误 | 在同一时间窗口对齐 Trace 与指标 | | 恢复能力不足 | 回滚耗时、数据校验、告警到达时间 | 做一次隔离环境恢复演练 | | 资源接近上限 | CPU、内存、连接池和队列深度 | 用代表性负载复测,并保存基线 |
每个结论都要列出来源、时间窗口和仍未验证的假设。Skill 帮团队整理证据,技术负责人负责接受风险或安排修复。
技术摘要可以写得简短,但技术事实、证据、发现、影响/严重性、缺失信息和行动必须保留。代码观察、运行证据和发布决定也要分开。
一段可以直接改的调用词
把下面方括号中的内容替换成项目材料。材料越具体,Skill 越不需要猜测。
请使用 technical-quality-perspective Skill。
阶段:代码评审(stage: code-review)
任务:从架构、可观测性、故障恢复和回滚成本评审一次服务改动
代码身份:[PR / 提交 / 分支 / 发布版本]
可审查变更:[diff、文件路径或代码链接]
版本与环境:[需求版本 / 构建号 / 环境]
输入材料:[文件路径或链接]
范围:[本次包含与排除的业务链路]
限制:[账号、数据、时间、合规要求]
请按“摘要、事实、证据、技术发现、影响与严重性、缺失信息、问题、行动与下一步、信心等级”输出。检查架构、API、数据、兼容性、安全、性能、可观测性和可维护性,并明确区分静态观察与运行证据。缺少代码身份或可审查 diff 时,先标记阻塞;不要输出产品范围、测试通过或发布批准结论。
先给出代码身份和 diff,再谈运行风险;缺少其中一项,评审就应停在阻塞状态。
技术视角要把代码特征连到运行后果
一个改动即使通过单元测试,也可能引入慢查询、不可观测的重试链或难以回滚的数据迁移。技术视角从依赖边界、失败模式、日志指标和恢复路径检查它们会怎样影响运行中的系统。
结论要给出可验证的技术动作:为外部调用补超时与 trace,为迁移准备回滚脚本,为共享缓存增加失效监控。不要把“代码整洁”当作最终判断;可恢复、可定位和可演进才会决定长期成本。
这个 Skill 适合谁
架构师可以用它复核依赖和恢复边界;开发可以把代码改动连接到日志、指标和回滚动作;QA 和运维可以据此补运行证据。它适合需要解释“为什么这段代码会影响稳定性”的评审场景。
技术判断交付前复核
技术质量记录要能说明“看的是哪个版本、发现来自哪里、运行后果是否真的验证过”。代码评审尤其不能只有一句“请看看这段代码”。
| 复核项 | 需要留下 | 缺失时 |
|---|---|---|
| 版本与代码身份 | 版本、PR/提交/分支/发布身份和可审查 diff | 代码评审标记阻塞,不生成可追溯发现 |
| 技术范围 | 架构、API、数据、兼容性、安全、性能、可观测性和恢复边界 | 标出未覆盖维度 |
| 证据类型 | 静态代码/配置观察、运行日志、指标、Trace、演练记录 | 明确 static_only、runtime_verified 或缺口 |
| 影响与严重性 | 运行后果、影响范围、严重性依据和负责人 | 不用“代码质量差”代替影响说明 |
| 时间与行动 | 运行时间窗口、缺失信息、最小验证动作和 Owner | 保留为待办,不写成已关闭 |
stage: code-review
code_identity:
pull_request: [PR 编号]
commit: [提交 SHA]
diff: [diff 或文件链接]
source_version: [版本或发布身份]
static_findings:
- statement: [代码或配置观察]
evidence: [文件和行号]
status: static_only
runtime_evidence:
- statement: [运行观察]
evidence: [日志、指标、Trace 或演练记录]
status: runtime_verified / not_run / blocked
technical_risks: [运行后果和严重性]
missing_information: [缺失的技术证据]
action:
owner: [负责人]
next_action: [最小验证或修复动作]
confidence: high / medium / low
静态发现只能说明代码或配置呈现出的风险线索;只有运行材料支持时,才能写运行行为已经验证。技术 Skill 的输出仍需交给产品、QA 或发布负责人补充各自结论。
安装与调用
安装单个 Skill 就够了。项目总览里的安装说明不再在每篇重复。
npx skills add https://github.com/naodeng/awesome-qa-skills/tree/main/skills/zh/testing-workflows/technical-quality-perspective -g
调用时直接写“请使用 technical-quality-perspective Skill”,然后附上真实材料。
常见问题
代码评审通过了,为什么还要看运行信号?
因为超时、资源、重试和恢复行为通常只在运行时出现。代码评审提供线索,运行信号负责验证后果。
没有完整监控数据怎么办?
先标出不可观测的风险,列出最小日志、指标或 Trace 补充项,再决定是否继续发布。
技术风险什么时候可以关闭?
只有在对应运行后果已经验证、恢复动作完成演练,并且负责人确认剩余风险后,才可以关闭。
它会替我做架构决策吗?
不会。它整理证据和选项,架构取舍仍由团队结合成本、目标和责任边界决定。
拿真实 PR、diff 和运行证据跑一次技术质量视角,保留输入、输出和复核意见。文章里的片段只能帮你搭起结构,项目证据还得在项目里产生。
参考
- Awesome QA Skills 项目主页:https://github.com/naodeng/awesome-qa-skills
- Awesome QA Skills 系列总览:https://inaodeng.com/zh-cn/blog/ai-testing/introduction_of_awesome_qa_skills/
- Awesome QA Skills:技术质量视角 Skill 源文件:https://github.com/naodeng/awesome-qa-skills/tree/main/skills/zh/testing-workflows/technical-quality-perspective
- 技术质量视角 Skill 详情页:https://inaodeng.com/zh-cn/qaskills/technical-quality-perspective/