软件测试技术(二)单元测试和集成测试
一、单元测试
为何要进行单元测试?
尽早发现错误
- 错误发现越早,成本越低。
- 发现问题比较容易
- 修正问题更容易
1.定义
单元测试是对软件基本的组成单元进行独立的测试
2.目标
- 单元模块是否被正确编码。
- 信息能否正确地流入和流出单元。
- 在单元工作过程中,内部数据能否保持完整性。
- 数据边界处能否正确工作
- 单元的运行能否满足特定的逻辑覆盖
3.任务
单元测试中必须进行的测试:
- 模块独立执行路径测试
对每一条独立路径执行测试,保证每条语句被至少执行一次。 - 局部数据结构测试
检查局部数据结构完整性。 - 模块接口测试
检查模块接口是否正确。 - 单元边界条件测试
检查临界数据处理的正确性 - 单元容错测试
预设的各种出错处理是否正确有效。
4.手段
使用白盒测试。
单元测试的三个步骤:
- 互查
- 走查
- 评审
最重要的手段是静态测试
5. 静态测试
不运行被测试程序,对代码通过检查、阅读进行分析。
6. 桩程序和驱动程序
驱动模块(drive):为了对底层或子模块进行测试而编写的,用于调用这些模块的程序。
桩模块(stub):对顶层或上层模块进行测试时所编写的,用于代替下层模块的程序。
二、集成测试
1.非渐增式测试模式
先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序。
大棒集成方法(Big-bang Integration)什么倒灶翻译
先对每一个子模块进行测试(单元测试),然后将所有模块一次性全部集成起来进行集成测试。
这种方法很难确定出错的位置、所在的模块、错误的原因,只适合在规模较小的应用系统中使用。
2.渐增式测试模式
把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进行测试。
- | | 测试开销 | 发现模块间接口错误 | 诊断难易 |
| -------- | ---------------- | ------------------ | -------- |
| 非渐增式 | 小(可以并行测试 | 晚 | 难 |
| 渐增式 | 大 | 早 | 易 |
自顶向下法
对主控模块进行测试,每次用一个实际模块代替桩程序。每次增加新模块,都要考虑回归测试。
- 缺点:底层关键模块发现问题被延后
- 优点:1. 不需要设计驱动程序;2. 在早期就能对系统功能进行验证; 3. 能较早发现接口错误。
自底向上法
把底层模块组合成某个特定子功能块,对子功能进行测试。接着把子功能族结合成更大的子功能族进行测试。
- 优缺点与自顶向下正好相反。
3. 混合策略
三明治集成方法
选择软件中间的某层为界,对上层,使用自顶向下法,对下层,使用自底向上法。
- 优点:将自顶向下和自底向上有机结合,桩和驱动器的开发工作都比较小
- 缺点:在被集成之前,中间层不能尽早得到充分测试
改进的三明治集成
不仅自两头向中间集成,而且保证中间模块得到单独的测试。
软件测试技术(二)单元测试和集成测试
https://buttering.github.io/EasyBlog/2020/12/18/软件测试技术(二)单元测试和集成测试/