《软件测试的艺术》精华摘要(五)
上一篇 /
下一篇 2010-12-28 09:42:56
/ 个人分类:读书笔记
模块(单元)测试
模块测试(或单元测试)是对程序中的单个子程序、子程序或过程进行测试的过程。
动机:
1、由于模块测试的注意力一开始集中在程序的较小单元上,因此它是一种管理组合的测试元素的手段。
2、模块测试减轻了调试(准确定位并纠正某个已知错误的过程)的难度。因为一旦某个错误被发现出来,我们就知道它在哪个具体的模块中。
3、模块测试通过为我们提供同时测试多个模块的可能,将并行工程引入软件测试中。
5.1、测试用例设计
需要使用两种类型的信息:模块的规格说明和模块的源代码,规格说明一般都规定了模块的输入和输出参数以及模块的功能。
设计过程:使用一种或多种白盒测试方法分析模块的逻辑结构,然后使用黑盒测试方法对照模块的规格说明以补充测试用例。
5.2、增量测试
非增量测试:崩溃(big-bang)测试
增量测试:集成
测试单独的模块需要一个特殊的驱动模块(driver module)和一个或多个桩模块(stub module)。
1、非增量测试所需的工作量要多一些。
2、如果使用了增量测试,可以较早地发现模块中与不匹配接口、不正确假设相关的编程错误。
3、使用增量测试,调试会进行得容易些。
4、增量测试会将测试进行得更彻底。
5、非增量测试所占用的机器时间显得少一些。
6、模块测试阶段开始时,如果使用的是非增量测试,就会有更多的机会进行并行操作。
5.3、自顶向下测试与自底向上测试
自顶向下测试是从程序的顶部或初始模块开始。测试开始之后,挑选哪一个后续模块进行增量测试没有唯一正确的方法,唯一的原则是:要成为合乎条件的下一个模块,至少一个该模块的从属模块(调用它的模块)事先经过了测试。
1、如果程序中存在关键部分,那么在设计模块序列时就应将这些关键模块尽可能早地添加进去。所谓“关键部分”可能是某个复杂的模块、某个采用新算法的模块或某个被怀疑容易发生错误的模块。
2、在设计模块序列时,应将I/O模块尽可能早地添加进来。
优点:
1、 如果主要的缺陷发生在程序的顶层将非常有利
2、 一旦引入I/O功能,提交测试用例会更容易
3、 早期的程序框架可以进行演示,并可激发积极性
缺点:
1、 必须开发桩模块
2、 桩模块要比最初表现的更复杂
3、 在引入I/O功能之前,向桩模块中引入测试用例比较困难
4、 创建测试环境可能很难,甚至无法实现
5、 观察测试输出很困难
6、 使人误解设计和测试可以交迭进行
7、 会导致特定模块测试的完成延后
自底向上的策略开始于程序中的终端模块(此类模块不再调用其他任何模块),要成为合乎条件的下一个模块,该模块所有的从属模块(它调用的模块)都已经事先经过了测试。
优点:
1、 如果主要的缺陷发生在程序的底层将非常有利
2、 测试环境比较容易建立
3、 观察测试输出比较容易
缺点:
1、 必须开发驱动模块
2、 直到最后一个模块添加进去,程序才形成一个整体
5.4、执行测试
相关阅读:
- 单元测试的必要性和效益 (xin_晴, 2010-11-09)
- 单元测试的代码错误分类及特点 (xin_晴, 2010-11-10)
- 单元测试的基本测试方法 (xin_晴, 2010-11-12)
- 单元测试彻底测试的方法 (xin_晴, 2010-11-24)
- 提高测试效率的途径 (xin_晴, 2010-11-17)
- 单元测试资料 (xin_晴, 2010-11-11)
- 单元测试与JUNIT (xin_晴, 2010-11-16)
- 浅谈单元测试 (xin_晴, 2010-11-30)
- 如何使用MOQ进行单元测试 (xin_晴, 2010-12-13)
- 简单有效的单元测试报告模板 (xin_晴, 2010-12-21)
收藏
举报
TAG:
单元测试
集成
增量测试
非增量测试
自顶向下测试
自底向上测试