一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,测试应着重检查下列问题:(1)输出的出错信息难以理解;(2)记录的错误与实际遇到的错误不相符;(3)在程序自定义的出错处理段运行之前,系统已介入;(4)异常处理不当;(5)错误陈述中未能提供足够的定位出错信息。
边界条件测试是单元测试中最后也是最重要的一项任务。众所周知,软件经常在边界上失效。采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。
b.单元测试过程
一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现上述各类错误的可能性。在确定测试用例的同时,应给出期望结果。
提高模块的内聚度可简化单元测试,如果每个模块只能完成一个,所需测试用例数目将显著减少,模块中的错误也更容易发现。
(2)集成测试
也称组装测试。在单元测试之后,需要按照设计时作出的结构图,将它们联结起来,进行集成测试。集成测试是组装软件的系统测试技术,按设计要求把通过单元测试的各个模块组装在一起之后,进行综合测试以便发现与接口有关的各种错误。
把所有模块按设计要求一次全部组装起来,然后进行集成测试,这称为非增量式集成。这种方法容易出现混乱。因为测试时可能发现一大堆错误,为每个错误定位和纠正非常困难,并且在改正一个错误的同时又可能引入新的错误。新旧错误混杂,更难断定出错的原因和位置。与之相反的是增量式集成方法,程序一段一段地扩展,测试的范围一步一步地增大,错误易于定位和纠正,界面的测试亦可做到完全彻底。常用的有下面两种增量式集成方法。
a.自顶向下集成
自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起。深度优先策略首先是把主控制路径上的模块集成在一起,至于选择哪一条路径作为主控制路径,这多少带有些随意性,要根据问题的特性确定。
自顶向下集成测试的具体步骤为:(1)以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块用实际模块替代;(2)依据所选的集成策略,每次只替代一个桩模块;(3)每集成一个模块立即测试一遍;(4)只有每组测试完成后,才着手替换下一个桩模块;(5)为避免引入新错误,须不断地进行回归测试。从第(2)步开始,循环执行上述步骤,直至整个程序结构构造完毕。
自顶向下集成的优点在于能尽早地对程序的主要控制和决策机制进行检验,因此能较早地发现错误。缺点是在测试较高层模块时,低层处理采用桩模块替代,不能反映真实情况,重要数据也不能及时回送到上层模块,因此测试并不充分。解决这个问题有几种办法,第一种是把某些测试推迟到用真实模块替代桩模块之后进行,第二种是开发能模拟真实模块的桩模块;第三种是自底向上集成模块。第一种方法又回退为非增量式的集成方法,使错误难于定位和纠正,并失去了在组装模块时进行一些特定测试的可能性;第二种方法无疑要大大增加开销;第三种方法更切实可行。
b.自底向上集成
自底向上测试是从软件结构最低层的模块开始组装测试。因测试到较高层模块时,所需的下层模块功能均已具备,所以不再需要桩模块。
文章来源于领测软件测试网 https://www.ltesting.net/