软件测试技术(二)单元测试和集成测试

一、单元测试

为何要进行单元测试?
尽早发现错误

  • 错误发现越早,成本越低。
  • 发现问题比较容易
  • 修正问题更容易

1.定义

单元测试是对软件基本的组成单元进行独立的测试

2.目标

  1. 单元模块是否被正确编码。
  2. 信息能否正确地流入和流出单元。
  3. 在单元工作过程中,内部数据能否保持完整性。
  4. 数据边界处能否正确工作
  5. 单元的运行能否满足特定的逻辑覆盖

3.任务

单元测试中必须进行的测试:

  1. 模块独立执行路径测试
    对每一条独立路径执行测试,保证每条语句被至少执行一次。
  2. 局部数据结构测试
    检查局部数据结构完整性。
  3. 模块接口测试
    检查模块接口是否正确。
  4. 单元边界条件测试
    检查临界数据处理的正确性
  5. 单元容错测试
    预设的各种出错处理是否正确有效。

4.手段

使用白盒测试。
单元测试的三个步骤:

  • 互查
  • 走查
  • 评审

最重要的手段是静态测试

5. 静态测试

不运行被测试程序,对代码通过检查、阅读进行分析。

6. 桩程序和驱动程序

驱动模块(drive):为了对底层或子模块进行测试而编写的,用于调用这些模块的程序。
桩模块(stub):对顶层或上层模块进行测试时所编写的,用于代替下层模块的程序。

二、集成测试

更详尽的说明可以看这篇博客

1.非渐增式测试模式

先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序。

大棒集成方法(Big-bang Integration)什么倒灶翻译
先对每一个子模块进行测试(单元测试),然后将所有模块一次性全部集成起来进行集成测试。
这种方法很难确定出错的位置、所在的模块、错误的原因,只适合在规模较小的应用系统中使用。

2.渐增式测试模式

把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进行测试。

  • | | 测试开销 | 发现模块间接口错误 | 诊断难易 |
    | -------- | ---------------- | ------------------ | -------- |
    | 非渐增式 | 小(可以并行测试 | 晚 | 难 |
    | 渐增式 | 大 | 早 | 易 |

自顶向下法
对主控模块进行测试,每次用一个实际模块代替桩程序。每次增加新模块,都要考虑回归测试。

  • 缺点:底层关键模块发现问题被延后
  • 优点:1. 不需要设计驱动程序;2. 在早期就能对系统功能进行验证; 3. 能较早发现接口错误。

自底向上法
把底层模块组合成某个特定子功能块,对子功能进行测试。接着把子功能族结合成更大的子功能族进行测试。

  • 优缺点与自顶向下正好相反。

3. 混合策略

三明治集成方法
选择软件中间的某层为界,对上层,使用自顶向下法,对下层,使用自底向上法。

  • 优点:将自顶向下和自底向上有机结合,桩和驱动器的开发工作都比较小
  • 缺点:在被集成之前,中间层不能尽早得到充分测试

改进的三明治集成
不仅自两头向中间集成,而且保证中间模块得到单独的测试。


软件测试技术(二)单元测试和集成测试
https://buttering.github.io/EasyBlog/2020/12/18/软件测试技术(二)单元测试和集成测试/
作者
Buttering
发布于
2020年12月18日
许可协议