软考-软件设计师:软件工程-传统软件的测试:单元测试、集成测试、系统测试、回归测试

传统软件的测试

分为4步进行:

  • 单元测试
  • 集成测试
  • 确认测试。测试用例用于确保满足所有的功能需求,具有所有的行为特征,所有内容都准确无误且正确显示,达到所有的性能需求,文档是正确可用的,且满足其他需求(如可移植性、兼容性、错误恢复和可维护性)。
  • 系统测试

单元测试

也称为 模块测试,测试 模块中 处理逻辑 和 数据结构

在模块编写完成且无编译错误后就可以进行。

如果选用机器测试,一般用 白盒测试法

测试内容

  • 模块接口:模块的接口保证了测试模块的 数据流 可以正确地 流入、流出
    如:在使用文件之前是否已经打开文件或使用文件之后是否已经关闭文件

  • 局部数据结构。在单元测试中,局部数据结构出错是比较常见的错误。
    如:变量的初始值或默认值是否正确。

  • 重要的执行路径。在单元测试中,对路径的测试是最基本的任务
    如:算术运算的优先次序不正确或理解错

  • 出错处理。好的设计应该能预测到出错的条件并且有对出错处理的路径

  • 边界条件。边界条件的测试是单元测试的最后工作,也是非常重要的工作。

  • 性能测试

  • 功能测试

集成测试

把模块按《系统设计说明书》的要求,组合起来进行测试

两种方法

  • 非增量集成:分别测试各个模块,再把这些模块组合起来进行整体测试。可以对模块进行并行测试,能充分利用人力,并加快工程进度。但这种方法容易混乱,出现错误不容易查找和定位。

  • 增量集成:即以小增量的方式逐步进行构造和测试。范围一步步扩大,错误容易定位,更易于对接口进行彻底测试,并且可以运用系统化的测试方法。

增量集成策略

  • 顶向下集成测试。从主控模块(主程序)开始,沿着控制层次逐步向下。
    • 深度优先
    • 广度优先
    • 需要 桩模块
  • 底向上集成测试。是从原子模块(程序结构的最底层构件)开始进行构造和测
    • 需要 驱动模块
  • 三明治测试。综合了 自顶向下 和 自底向上。
  • 回归测试。软件发生变更,重新测试
  • 冒烟测试。当开发软件产品时,是时间关键项目的决定性机制,让软件团队频繁地对项目进行评估。

驱动模块 和 桩模块

驱动模块:是用来模拟被测模块的上一级模块
桩模块:是模拟被测试模块所调用的模块

如上图,A模块 调用 B模块,B模块 调用 D模块、E模块

如果 B模块 第一个开发完,要进行测试,是无法测试的,原因:

  • B模块 需要 A模块 调用,否则不能运行

  • B模块 调用了 D模块 和 E模块,但 D模块 和 E模块 都没开发好

为了测试 B模块 ,需要做:

  • 写 Da模块 模拟 A模块,可以让 B模块 运行起来,Da模块 就是 驱动模块

  • 写 Sd模块 模拟 D模块,写 Se 模拟 E模块,Sd模块 和 Se模块 就是 桩模块

系统测试

将已经确认的软件、计算机硬件、外设和网络等其他因素结合在一起,进行信息系统的各种 集成测试 和 确认测试

一句话解释:在 真实环境 中进行 集成测试 和 确认测试

目的:通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。

  • 恢复测试。出错后,在一定的时间内,能够重新运行
  • 安全性测试。验证保护机制是否能够保护系统不受非法入侵
  • 压力测试:以 非正常 的数量、频率或容量等方式测试系统
  • 性能测试:测试软件在集成环境中的运行性能。在测试过程中的 任何步骤 都可以进行性能测试
  • 部署测试:测试在各个平台中运行软件

回归测试

集成测试的环境下,加入一个新模块后,再次重新测试

题

下图(a)所示为一个模块层次结构的例子,图(b)所示为对其进行集成测试的顺序,则此测试采用了()测试策略。该测试策略的优点不包括( )

A、自底向上
B、自顶向下
C、三明治
D、一次性

A、较早地验证了主要的控制和判断点
B、较早地验证了底层模块
C、测试的并行程度较高
D、较少的驱动模块和桩模块的编写工作量

第一问分析

从 b 图看,既有从上到下,又有从下到上,所以是 三明治测试

第二问分析

A:正确,从上到下
B:正确,从下往上测试,就先测试底层模块
C:正确,从上到下,从下到上同时进行
D:错误,没有减少

参考:
https://blog.csdn.net/weixin_44015669/article/details/121220501


原文出处:/show_1GWyQfpNhMi.html