模块测试的目的是保证每个模块作为一个单元能正确运行,所以模块测试通常又被称为单元测试。在这个测试步骤中所发现的往往是编码和详细设计的错误。
驱动模块:驱动模块是用来模拟被测试模块的上一级模块,相当于被测模块的主程序。它接收数据,将相关数据传送给被测模块,启用被测模块,并打印出相应的结果。举例来说:驱动模块(Driver)可以通过模拟一系列用户操作行为,比如选择用户界面上的某一个选项或者按下某个按钮等,自动调用被测试模块中的函数。
桩模块:桩模块(Stub)是指模拟被测试的模块所调用的模块,而不是软件产品的组成的部分。主模块作为驱动模块,与之直接相连的模块用桩模块代替。在集成测试前要为被测模块编制一些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受或传递被测模块的数据,这些专供测试用的“假”模块称为被测模块的桩模块。
模块测试的策略:
1)自顶向下:
先测最上面的单元,待上层单元测试完成之后,再用上层的已测单元测试作为下层待测单元的驱动模块,进而测试下层单元,以此类推。
优点:不用编写驱动模块
缺点:1.当底层的模块未开发完成时,测试人员要自己编写桩模块。
2.当测试到底层模块时,如果发现底层模块设计有缺陷,就要相应地修改上层已测试单元。
3.下层单元要等到上层单元开发并测试完成之后,才能测试。
2)自底向上:
先编写驱动程序测试最底层的单元,再把底层已测单元作为上层待测单元的桩模块测试上层单元,以此类推。
优点:1.不用编写桩模块。
2.上层待测单元如果出现什么缺陷,不会对下层已测单元造成太大的影响。
缺点:1.要编写驱动模块。
2.使用底层模块作为桩模块,不能保证对上层待测单元的覆盖率,因为底层已测单元并不是专门为测试设计的测试代码。
3)独立测试
为每个待测单元编写驱动模块和桩模块,独立地对被测模块进行测试,这是在实践中被广泛应用的模式。
优点:1.驱动模块和桩模块的覆盖率得到保证。
2.不同层次的单元可以并行测试。
缺点:要编写驱动模块和桩模块。