自顶向下测试:是从程序的初始模块开始测试。
(1)该方法会在早期发现顶层的错误。
(2)早期的程序框架可以进行演示
(3)需要开发桩模块辅助测试。有些甚至需要多个桩模块辅助,加大了桩模块本来的错误影响。
(4)测试完一个上层模块后,挑选哪个模块作为下一个测试模块,以及测试的顺序没有唯一的界定标准。
自底向上测试:是从程序的底层模块开始测试。
(1)I/O操作可以提前测试,更好提交测试用例。
(2)测试后比较容易观察输出。
(3)需要开发驱动模块。
(4)直到最后一个模块提交,程序才能完整的系统测试。
两种方法优缺点相反,没有绝对的好坏。一般在测试过程中,都是跟开发的开发顺序来选择这两种方法。我个人接触到比较多的还是自底向上的测试方法。最底层的模块,不需要调用其他的模块优先测试,先稳定底层模块,等上层模块提交测试后,更能定位BUG。
自顶向下测试,是从程序的顶部或初始模块开始。
⊙测试开始之后,挑选哪一个后续模块进行增量测试没有惟一正确的方法;
⊙惟一的原则是:要成为合乎条件的下一个模块,至少一个该模块的从属模块(调用它的模块)事先经过了测试。
⊙该测试策略里边最关键的可能就是编写桩模块了。
⊙它涉及到的几个关键点概括为:桩模块的返回信息一定要给予此次调用所希望的返回值,否则调用模块将会发生失效或是产生一个混乱的结果;早期,测试数据要通过其一个或多个桩模块提交给模块的。
⊙需要指出一点,就是测试完一个模块后,就用一个实际的模块代替其中的一个桩模块,而该模块需要的桩模块也被添加起来。需要注意的是:不存在最佳的模块序列。但尽量让包含I/O操作的桩模块和重要的桩模块添入。
自底向上测试,是开始于程序的终端模块,此类模块不再调用其他任何模块。
⊙测试完这些模块之后,同样没有最佳的方法来挑选要进行增量测试的下一个模块;
⊙惟一正确的原则是:要成为合乎条件的下一个模块,该模块所有的从属模块(它调用的模块)都已经事先经过了测试。
⊙需要指出的是,如果终端模块是多个的话,既可以进行串行测试,也可以进行并行测试。且每一个模块都需要一个特殊的驱动模块,即:包含着有效的测试输入、调用被测模块且将输出显示出来(或将实际输出与预期输出作比较)的模块。
⊙对于测试序列也同自顶向下测试的一样。