集成测试是软件测试的第二步,其具体过程如下。
第一,非增量式测试。
非增量式测试是采用一步到位的方法来构造测试:对所有模块进行个别的单元测试后,按照程序结构图将各模块连接起来,把连接后的程序当作一个整体进行测试。
采用非增量式测试方法进行集成测试如下图所示:
非增量式测试的缺点:当一次集成的模块较多时,非增量式测试容易出现混乱,因为测试时可能发现了许多故障,为每一个故障定位和纠正非常困难,并且在修正一个故障的同时,可能又引入了新的故障;新旧故障混杂,很难判定出错的具体原因和位置。
第二,增量式测试。
增量式测试的集成是逐步实现的:逐次将未曾集成测试的模块和已经集成测试的模块(或子系统)结合成程序包,再将这些模块集成为较大系统,在集成的过程中边连接边测试,以发现连接过程中产生的问题。
按照不同的实施次序,增量式集成测试又可以分为三种不同的方法:自顶向下增量式测试,自底向上增量式测试和混合增量式测试。
(1)自顶向下增量式测试
自顶向下增量式测试表示逐步集成和逐步测试是按照结构图自上而下进行的,即模块集成的顺序是首先集成主控模块(主程序),然后依照控制层次结构向下进行集成;从属于主控模块的按深度优先方式(纵向)或者广度优先方式(横向)集成到结构中去。
深度优先方式的集成:首先集成在结构中的一个主控路径下的所有模块,主控路径的选择是任意的。
广度优先方式的集成:首先沿着水平方向,把每一层中所有直接隶属于上一层的模块集成起来,直到底层。
集成测试的整个过程由3个步骤完成:
1)主控模块作为测试驱动器
2)根据集成方式(深度或广度),下层的桩模块一次一次地被替换为真正的模块
3)在每个模块被集成时,都必须进行单元测试;重复第2)步,直到整个系统被测试完成
按照广度优先方式进行集成测试如下图所示:
按照深度优先方式进行集成测试如下图所示:
(2)自底向上增量式测试
自底向上增量式测试表示逐步集成和逐步测试的工作是按结构图自下而上进行的,即从程序模块结构的最底层模块开始集成和测试。
由于是从最底层开始集成,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经集成并测试完成,所以不再需要使用桩模块进行辅助测试;在模块测试过程中需要从子模块得到的信息可以直接运行子模块得到。
采用自底向上增量式测试方法进行集成测试如下图所示:
(3)混合增量式测试
混合增量式测试是把自顶向下测试和自底向上测试这两种方式结合起来进行集成和测试;这样可以兼具两者的优点,而摒弃其缺点。
常见的两种混合增量式测试方式:
1)衍变的自顶向下的增量式测试:基本思想是强化对输入/输出模块和引入新算法模块的测试,并自底向上集成为功能相对完整且相对独立的子系统,然后由主模块开始自顶向下进行增量式测试
2)自底向上-自顶向下的增量式测试:首先对含读操作的子系统自底向上直至根节点模块进行集成和测试,然后对含写操作的子系统做自顶向下的集成与测试
第三,不同集成测试方法的比较。
(1)非增量式测试与增量式测试的比较
非增量式测试的方法是先分散测试,然后集中起来再一次完成集成测试;假如在模块的接口处存在错误,只会在最后的集成测试时一下子暴露出来。
增量式测试是逐步集成和逐步测试的方法,把可能出现的差错分散暴露出来,便于找出问题和修改;而且一些模块在逐步集成的测试中,得到了较多次的考验;因此,可能会取得较好的测试效果。
结论:增量式测试要比非增量式测试具有一定的优越性。
(2)自顶向下与自底向上增量式测试的比较
自顶向下增量式测试:主要优点在于它可以自然的做到逐步求精,一开始就能让测试者看到系统的框架;主要缺点是需要提供桩模块,并且在输入/输出模块接入系统以前,在桩模块中表示测试数据有一定困难。
自底向上增量式测试:优点在于,由于驱动模块模拟了所有调用参数,即使数据流并未构成有向的非环状图,生成测试数据也无困难;主要缺点在于,直到最后一个模块被加进去之后才能看到整个程序(系统)的框架。