��模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。这些辅助模块分为两种:
��・驱动模块:相当于被测模块的主程序。它接收测试数据,把这些数据传送给被测模块,最后输出实测结果。
��・桩模块:用以代替被测模块调用的子模块。桩模块可以做少量的数据操作,不需要把子模块所有功能都带进来,但不允许什么事情也不做。
��被测模块、与它相关的驱动模块及桩模块共同构成了一个"测试环境",见图5.5。驱动模块和桩模块的编写会给测试带来额外开销。因为它们在软件交付时不做为产品的一部分一同交付,而且它们的编写需要一定的工作量。特别是桩模块,不能只简单地给出"曾经进入"的信息。为了能够正确地测试软件,桩模块可能需要模拟实际子模块的功能。
  
图示


图5.5 单元测试的测试环境
  
��模块的内聚程度高,可以简化单元测试过程。如果每一个模块只完成一种功能,则需要的测试用例数目将明显减少,模块中的错误也容易预测和发现。
��如果一个模块要完成多种功能,且以程序包或对象类的形式出现,例如Ada中的包,MODULA中的模块,C++中的类。这时可以将这个模块看成由几个小程序组成。对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。
��