单元测试
单元测试又叫模块测试,是对程序中的单个子程序或过程进行测试的过程,也就是说一开始并不是对整个程序进行测试,而是将注意力集中在程序的较小单元。
其目的是将模块的功能与定义模块的功能规格说明或接口规格说明进行比较。
面向白盒测试
测试用例的设计方式如下所示。
需要两种信息:模块的规格说明和模块的源代码。规格说明一般都规定了模块的输入和输出及模块的功能
过程:使用一种或多种白盒测试方法分析模块的逻辑结构,然后使用黑盒测试方法对照模块的规格说明以补充测试用例
当所有功能独立的模块经过严格的单元测试后,就要进入集成测试。
集成测试
集成测试的方法有增量测试和非增量测试两种
测试单独的模块需要一个特殊的驱动模块和一个或多个桩模块
(1)驱动模块是可以用测试工具代替,是编写的小模块,可以把测试用例驱动或传输到被测模块(是用来模拟待测模块的上级模块)
(2)桩模块是被测模块调用的模块,用来模拟调用模块的功能
增量测试
增量测试:先将下一步要测试的模块组装到测试完成的模块集合中,然后再进行测试。随着新功能的增加,不断对应用程序进行测试,在程序的所有部分完成之前,需要一个应用程序的各个部分之间能够相对独立的进行工作(同时完成单元测试和集成测试)。
增量测试的策略有多种,如:自顶向下的测试、自底向上的测试和三明治集成测试
自顶向下的测试
从程序的顶部或初始模块开始,测试开始后,挑选哪一个后续模块没有确定的方法,但是挑选的后续模块,至少该模块的从属模块(调用他的模块)事先经过了测试(必须开发桩模块)
(1)如果程序存在关键部分,应该尽可能早的把关键模块添加进去,所谓关键部分,指的是:某个复杂的模块、某个采用新算法或者容易发生错误的模块
(2)在设计模块序列时,I/O模块应该尽可能早的添加进来
自底向上的测试
从程序模块结构中最底层的模块开始组装和测试,因为模块是自底向上进行组装的,对于一个给定层次的模块,其子模块事前已经完成组装并经过测试,因此不需要编制桩模块。
缺点是没有早期程序框架的概念,必须开发驱动模块
三明治集成测试
是一种混合集成,综合了自顶向下和自底向上两种集成方法的优点,桩模块和驱动模块的开发工作都比较小。过程如下所示。
1 确定以某一层为界进行集成,如某层的模块X
2 对模块X及其所在层下面的各层使用自底向上的集成策略(小口诀下下三明治)
3 对模块X所在层上面的层次使用自顶向下的集成策略(上上三明治)
4 对模块X所在层各模块同相应的下层集成(同同三明治)
5 对系统进行整体测试
非增量测试
非增量测试:先独立地测试每个模块(单元测试),然后再将这些模块组成完整的程序
单元测试、集成测试和系统测试的不同
1 单元测试是针对软件详细设计做的测试,测试用例设计的主要依据是详细设计
2 集成测试是针对软件概要设计做的测试,测试用例设计的主要依据是概要设计
3 系统测试是针对软件需求进行的测试,测试用例设计的主要依据是需求规格说明书