1. 测试阶段

测试与开发的对应关系

开发阶段 测试阶段
需求分析 系统测试
概要设计 集成测试
详细设计 单元测试
编码实现

单元测试

  • 测试对象:模块或组件
  • 目的:验证每个模块的功能正确性
  • 测试依据:详细设计文档

集成测试

集成测试将已通过单元测试的模块组装起来进行测试。

集成策略

策略 特点 需要编写的模块
自顶向下 从主控模块开始,逐步加入下层模块 需要编写桩模块(模拟下层模块)
自底向上 从底层模块开始,逐步组装上层模块 需要编写驱动模块(模拟上层调用)
  • 自顶向下:不需要编写驱动模块,需要编写桩模块
  • 自底向上:不需要编写桩模块,需要编写驱动模块

系统测试

  • 测试对象:完整的软件系统
  • 目的:验证系统是否满足需求规格说明
  • 测试依据:需求规格说明书

2. 测试方法

黑盒测试

黑盒测试(功能测试)不考虑程序内部结构,只关注输入和输出。

常用方法

方法 说明
等价类划分 将输入数据划分为若干等价类,每类选取代表性数据测试
边界值分析 对输入输出的边界值进行测试
错误推测法 根据经验推测可能出现的错误
因果图法 分析输入条件之间的因果关系

白盒测试

白盒测试(结构测试)需要了解程序内部结构,对代码进行测试。

常用方法

方法 说明
语句覆盖 每条语句至少执行一次
判定覆盖(分支覆盖) 每个判定的真假分支至少执行一次
条件覆盖 每个条件的各种可能值至少满足一次
判定/条件覆盖 同时满足判定覆盖和条件覆盖
条件组合覆盖 每个判定中条件的各种组合至少出现一次
路径覆盖 每条可能的路径至少执行一次

覆盖强度

语句覆盖 < 判定覆盖 < 条件覆盖 < 判定/条件覆盖 < 条件组合覆盖 < 路径覆盖


3. McCabe度量法

McCabe度量法(环路复杂度)用于衡量程序的复杂程度。

计算公式

V(G) = m - n + 2

其中:

  • V(G):环路复杂度
  • m:有向图中的边数
  • n:有向图中的节点数

另一种计算方法

V(G) = 判定节点数 + 1

应用

  • 确定程序中独立路径的数量
  • 为白盒测试提供测试用例数量的参考

4. 常见题型

  • 白盒测试 + McCabe度量法
  • 伪代码 + 白盒测试 + McCabe度量法

5. 软件维护

维护类型

类型 说明
改正性维护 修复软件中的错误
适应性维护 使软件适应环境变化
完善性维护 增加新功能、改进性能
预防性维护 预防潜在问题

重要说明

  • 在软件工程的每一个阶段都应考虑并提高软件的可维护性
  • 软件维护通常比软件开发投入的时间、人力、精力更大
  • 完善性维护是软件维护中占比最大的类型