集成测试的方法有两种: 非增量式测试和增量式测试
emmmmmm.....
说人话就是:
非增量式是每个模块测试完了再连接
增量式则是测一个模块,就连接一个模块
而采用增式测试时又有两种选择: 自顶向下结合、自底向上结合。
自顶向下结合
主控模块作为测试驱动器;
根据集成的方式(深度或广度),下层的桩模块一个一个地被替换为真正的模块;
在每个模块被集成时,都必须进行单元测试。
重复第二步,直到整个系统结构被集成完成。
自顶向下测试的优点在于
它可以自然地做到逐步求精,一开始就可以让测试者看到系统的框架,较早地验证了主要控制和判断点;
按深度优先可以首先实现和验证一个完整的软件功能
功能较早证实带来信心
只用一个驱动,减少驱动开发
支持故障隔离
缺点在于
需要提供桩模块,桩开发量大;
在输入/输出模块接入系统以前,在桩模块中表示测试数据有一定的困难;
底层验证被推迟;
底层组件测试不充分。
自底向上结合
自底向上增式测试表示逐步集成和逐步测试的工作是按结构图自下而上进行的, 由于是从最底层开始集成,因此不需要使用桩模块来辅助测试 。
自底向上测试的优点在于
由于驱动模块模拟了所有调用参数,即使数据流并未构成有向的非环状图,生成测试数据也没有困难;
缺点在于
直到最后一个模块被加进去之后才能看到整个程序的框架。
桩函数
也叫stub函数,存根函数
用一个桩函数替换一些接口函数,用于测试当前函数的特性
比如,要测试一个函数f()
1 void f()
2 {
3 var = g(...);
4 }
f()函数需要调用函数g(),但是在测试f()时可能还没写或测试通过g()函数
怎么办呢?可以写一个g()的存根(stub)函数,来模拟g()函数,比如让他只返回一个值,从而帮助完成对函数f()的测试