软
软件质量与测试覆盖
作者:鹿Sir开发工具v1
分析测试覆盖缺口、识别薄弱环节并给出策略性补测建议,按安全/功能/边界排定优先级,保证关键路径覆盖而不过度测试。开发新功能之后、修复缺陷之后、做测试评审或制定测试计划时使用。当用户提到测试覆盖、单元测试、测试缺口、边界用例、测试计划、覆盖率报告时触发。触发词:测试覆盖、单元测试、覆盖率、边界测试、测试策略。
下载量
396
点赞
98
价格
免费
技能文档
---
name: majiayu000-software-quality
title: 软件质量与测试覆盖
category: 开发工具
description: 分析测试覆盖缺口、识别薄弱环节并给出策略性补测建议,按安全/功能/边界排定优先级,保证关键路径覆盖而不过度测试。开发新功能之后、修复缺陷之后、做测试评审或制定测试计划时使用。当用户提到测试覆盖、单元测试、测试缺口、边界用例、测试计划、覆盖率报告时触发。触发词:测试覆盖、单元测试、覆盖率、边界测试、测试策略。
---
# 软件质量与测试覆盖
提供策略性的测试覆盖:找缺口、排优先级、给可落地的补测建议。
## 测试金字塔(60-30-10)
- **60% 单元测试**:快、隔离、数量多
- **30% 集成测试**:组件间交互
- **10% 端到端测试**:只覆盖关键用户路径
追求策略性覆盖,而不是 100% 覆盖。
## 技能工作流
### 步骤1:分析覆盖现状
```text
当前状态:
- 单元测试:[数量],覆盖率 [%]
- 集成测试:[数量],覆盖率 [%]
- 端到端测试:[数量],覆盖率 [%]
缺口:
- 未测函数:[列表]
- 未测路径:[列表]
- 缺失边界用例:[列表]
- 缺失异常场景:[列表]
```
### 步骤2:按四类缺口逐一排查
**1. 边界测试**
- 空输入(`[]`、`""`、`None`、`0`)
- 单元素集合
- 上限值
- 差一错误(off-by-one)场景
**2. 异常处理**
- 非法输入
- 网络失败
- 超时
- 权限拒绝
- 资源耗尽
**3. 状态测试**
- 初始化
- 并发访问
- 状态流转
- 清理验证
**4. 集成点**
- API 契约
- 数据库操作
- 外部服务
- 消息队列
### 步骤3:逐函数做缺口分析
对每个函数检查四个层次:
1. 正常路径:基本成功场景
2. 边界用例:边界条件
3. 异常用例:非法输入、失败场景
4. 状态变化:不同初始状态
### 步骤4:输出分级补测建议
```markdown
## 覆盖报告:[组件]
### 现状
行覆盖:[X]%
分支覆盖:[Y]%
函数覆盖:[Z]%
### 关键缺口
#### 高优先级(安全/数据)
1. **[函数]**
- 缺失:[测试类型]
- 风险:[破坏什么]
- 建议:`test_[场景]`
#### 中优先级(功能)
[同上结构]
#### 低优先级(边界情况)
[同上结构]
### 建议用例
```python
def test_function_empty_input():
"""测试空输入处理"""
# Arrange
# Act
# Assert
def test_function_boundary():
"""测试允许的最大值"""
# 测试实现
```
```
### 步骤5:按时间维度排执行计划
**速赢**(立即做):
- 未覆盖的异常路径
- 边界条件
- 反向用例
**系统推进**(本周内):
- 提升分支覆盖
- 补集成测试
- 测并发场景
**长期**(本月内):
- 基于属性的测试(property-based testing)
- 性能基准
## 好测试的标准
- 快(单元测试 <100ms)
- 隔离(无外部依赖)
- 可重复(结果恒定)
- 自校验(通过/失败一目了然)
- 及时(随代码一起写)
## 常用测试模式
**参数化:**
```python
@pytest.mark.parametrize("input,expected", [
("", ValueError),
(None, TypeError),
("valid", "processed"),
])
def test_validation(input, expected):
# 一个测试覆盖多个用例
```
**Fixture:**
```python
@pytest.fixture
def standard_setup():
return configured_object
```
**Mock 原则:**
- 只 mock 外部依赖
- 能用假实现(fake)就不用 mock
- 验证行为,不验证实现细节
## 测试文档模板
```python
def test_function_scenario():
"""
测试: [测什么]
Given: [初始条件]
When: [执行动作]
Then: [预期结果]
"""
```
## 测试坏味道
避免:
- 测 mock 而不是测逻辑
- 初始化过度复杂
- 一个测试塞多个断言
- 依赖时间的测试
- 依赖执行顺序的测试
- 永远不会失败的测试
- 时灵时不灵的 flaky 测试
## 覆盖率目标
最低要求:
- 单元覆盖:96%
- 集成测试:关键路径
- 端到端:仅关键流程
验证方式:运行项目自己的覆盖率与测试命令,确认达标且全部通过。
## 红旗信号
- 没有异常用例
- 只测正常路径
- 没有边界测试
- 缺集成测试
- 过度依赖端到端
- 存在 flaky 测试
## 输出原则
聚焦:
1. 关键缺口(安全、数据)
2. 策略性补测项
3. 优先级排序
4. 具体示例
不做:
1. 100% 覆盖率执念
2. 过度测试
3. 测实现细节使用说明
# 软件质量与测试覆盖 按 60-30-10 测试金字塔做策略性覆盖:分析缺口、按安全/功能/边界排优先级、给出可直接落地的补测建议。 ## 使用 ```text 分析这个模块的测试覆盖缺口,按优先级给出补测建议 ``` ```text 刚修完一个线上 bug,帮我补一组防回归的测试用例 ``` ## 工作原理 按「覆盖现状 → 四类缺口排查 → 逐函数分析 → 分级建议 → 执行计划」五步工作:从边界、异常、状态、集成点四个维度找缺口,按安全/数据 > 功能 > 边界的优先级输出建议用例与测试模板,遵循 60% 单元、30% 集成、10% 端到端的金字塔配比,追求策略性覆盖而非 100% 覆盖。
支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手