当开发提了 PR、代码变更需要确定测试范围、或者想通过分析代码来预测可能出 Bug 的区域时使用此技能。从测试视角分析代码变更的影响范围、识别高危模式和典型风险区域。不要看完整代码逻辑——你只需要关注变更类型(新增/修改/删除/重构)、影响范围(接口定义/数据库字段/业务逻辑)和相关依赖,据此确定最小回归测试范围...
---
name: qa-code-review-for-test
version: 1.6.0
description: >-
当开发提了 PR、代码变更需要确定测试范围、或者想通过分析代码来预测可能出 Bug 的区域时使用此技能。从测试视角分析代码变更的影响范围、识别高危模式和典型风险区域。不要看完整代码逻辑——你只需要关注变更类型(新增/修改/删除/重构)、影响范围(接口定义/数据库字段/业务逻辑)和相关依赖,据此确定最小回归测试范围。输出代码变更影响分析报告。
when_to_use: 用户说"代码评审"、"CR"、"测试视角"、"看代码"、"代码变更"、"Diff"、需要从测试角度分析代码变更、代码变更后需要确定测试范围时
allowed-tools: Read Grep Glob Bash
related_skills:
upstream:
- qa-boundary-deep-dive # 输入:边界分析识别风险区域
- qa-risk-intuition # 输入:风险评估识别高风险区域
downstream:
- qa-execution-observation # 输出:代码变更指导执行观察
- qa-test-strategy-design # 输出:代码变更影响测试策略
- qa-regression-testing
input_format:
required:
- name: 代码变更
type: string
description: 代码变更的diff或描述
- name: 测试用例
type: array
description: 相关测试用例列表
optional:
- name: 需求文档
type: string
description: 相关功能需求
output_format:
traceability:
- 每次代码评审带唯一ID(CR-XXXX)
- 关联变更ID或需求ID
structure:
- review_findings: 代码评审发现
- test_gaps: 测试遗漏点
- impact_analysis: 变更影响分析
- high_risk_patterns: 高危模式识别
- regression_scope: 回归测试范围建议
categories: ['Development','Team']
depth_requirement_quantification:
reference_value: "根据代码变更量调整评审深度:简单×1/中等×2/复杂×3"
minimum: "至少分析变更类型、影响范围、回归范围3个维度"
error_recovery_guidance:
on_failure: "代码变更分析遗漏依赖时回退到边界分析补充"
retry_behavior: "补全依赖分析后重新确定回归范围"
---
> **⚠️ 安全警告**:本技能的示例可能涉及代码变更分析(新增/修改/删除/重构)。
> 实际使用时请勿直接基于评审结论修改源码,先与开发确认变更范围和回归风险。
> 本技能仅在 workspace/ 输出评估文件,不持久化、不外传、不跨会话复用。
# 测试视角的代码评审
## 核心原则
看代码不是为了Review代码质量,而是判断变更影响范围、识别需要重点回归的区域。
> **代码读取许可**:本技能需要读取代码变更(git diff)进行分析,仅关注测试影响,不评估代码质量。
## 深度要求(参考值)
**关键指标**:根据代码变更复杂度调整CR深度
| 复杂度 | CR检查点要求 | 说明 |
|--------|-------------|------|
| 简单变更 | 5-8个检查点 | 单文件/配置/文案变更 |
| 中等变更 | 12-20个检查点 | 多文件/逻辑修改 |
| 复杂变更 | 25-40个检查点 | 重构/重写/核心模块变更 |
## 测试视角CR四看
### 第1看:看diff(改了什么)
```text
分析维度:
├─ 新增文件:新增了哪些文件?
├─ 修改文件:修改了哪些文件?
├─ 删除文件:删除了哪些文件?
├─ 代码行数:新增/修改/删除多少行?
└─ 变更类型:功能/修复/重构/配置?
关注点:
- 核心逻辑变更
- 数据库变更
- 配置变更
- 接口变更
```
### 第2看:看影响(波及哪里)
```text
分析维度:
├─ 调用方:哪些地方调用了这个方法?
├─ 数据流向:数据从哪来、到哪去?
├─ 接口变更:对外接口有没有变?
├─ 数据库变更:表结构/索引有没有变?
└─ 配置变更:配置项有没有变?
关注点:
- 影响范围评估
- 需要回归的区域
- 需要新增的测试场景
```
### 第3看:看风险模式(有什么风险)
```text
风险模式识别:
├─ 静态数据变化:硬编码的值变了
├─ 超时/重试:涉及超时或重试逻辑
├─ 异常吞没:异常被catch但没处理
├─ 并发处理:涉及多线程/分布式锁
├─ 状态管理:涉及状态变更
├─ 权限控制:涉及认证/授权
├─ 数据转换:涉及格式/类型转换
└─ 外部依赖:涉及第三方服务
关注点:
- 每个风险模式对应的测试场景
- 需要重点验证的区域
```
### 第4看:看测试建议(怎么测)
```text
测试建议输出:
├─ 回归测试:哪些功能需要回归?
├─ 新增测试:需要新增哪些测试场景?
├─ 重点测试:哪些区域需要深测?
├─ 性能测试:是否需要性能测试?
└─ 安全测试:是否需要安全测试?
输出格式:
[变更描述]
├─ 影响范围:[影响的功能/模块]
├─ 回归范围:[需要回归的功能]
├─ 新增场景:[需要新增的测试场景]
├─ 重点区域:[需要深测的区域]
└─ 测试建议:[具体的测试建议]
```
## 代码评审检查清单
### 功能变更检查
- [ ] 业务逻辑是否正确?
- [ ] 边界条件是否处理?
- [ ] 异常处理是否完善?
- [ ] 数据校验是否完整?
### 数据变更检查
- [ ] 数据库变更是否兼容?
- [ ] 数据迁移是否安全?
- [ ] 索引变更是否影响性能?
- [ ] 数据一致性是否保证?
### 接口变更检查
- [ ] 接口入参是否兼容?
- [ ] 接口出参是否变化?
- [ ] 错误码是否变化?
- [ ] 文档是否更新?
### 配置变更检查
- [ ] 配置项是否新增?
- [ ] 默认值是否合理?
- [ ] 环境差异是否考虑?
- [ ] 回滚方案是否准备?
### 性能变更检查
- [ ] 是否有性能影响?
- [ ] 是否有内存泄漏风险?
- [ ] 是否有并发问题?
- [ ] 是否有资源竞争?
## 应用场景
**开发提交了登录模块的代码变更**
→ CR四看分析:
- 看diff:修改了LoginController.java,新增密码加密逻辑
- 看影响:影响登录流程、密码验证、Session创建
- 看风险模式:加密算法变更可能导致兼容性问题
- 看测试建议:回归登录成功/失败流程,新增加密算法兼容性测试
**配置项变更(数据库连接池大小调整)**
→ 影响范围评估:确定需要回归的接口和场景
## 自检清单
代码评审完成后检查:
- [ ] 是否分析了diff内容?
- [ ] 是否评估了影响范围?
- [ ] 是否识别了风险模式?
- [ ] 是否给出了测试建议?
- [ ] 建议是否可执行?
## 检查清单
- [ ] 变更类型是否识别?
- [ ] 影响范围是否分析?
- [ ] 高风险模式是否标注?
- [ ] 回归范围是否建议?
- [ ] 可测试性问题是否提出?
don't have the plugin yet? install it then click "run inline in claude" again.