软件质量与测试覆盖

作者:鹿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% 覆盖。

如何安装此技能?

访问技能市场,点击「安装」按钮,按提示将技能包放入 AI 编程助手的 skills 目录即可。

浏览技能市场

支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手