0


集成测试之增式集成测试和非增式集成测试

集成测试的方法有两种: 非增式测试和增式测试 。

非渐增组装测试(非增式集成测试)
将单元测试后的模块按照总体的结构图一次性集成起来,然后把连接的整体进行程序测试。

即在短时间内把所有系统组件一次性集成到测试系统中,用最少的用例来验证整个系统,不考虑组件之间的依赖性和存在的风险。

一般用黑盒法来编写测试集并进行测试。

程序错误易出现,不容易集成成果。单元测试使用的辅助模块多,适合于规模小的开发系统。

  • 优点:容易理解,可以多人共同并行开工,对资源的利用率较高。
  • 缺点:所检测出的问题定位和修改比较困难,还会遗漏许多接口上的问题。
  • 适用场景:适用于比较小的系统测试,项目较小的测试。

渐增组装测试(增式集成测试)
渐增式集成的策略有很多种:(1)自顶向下集成,(2)自底向上集成,(3)三明治集成等

在单元测试的基础上,采用自顶向下或自底向上逐层安装测试,直到最后安装测试完毕。
也可采用自顶向下与自底向上相结合集成测试,单元测试与集成测试相结合来进行集成测试。
将错误分解,容易找到错误并测试成功,适合于大规模的开发系统。
通俗来说,渐增组装测试,是测完一个模块再加上一个模块一起测试。 非渐增组装测试,是一个模块一个模块的测试。

增式集成测试:

① 自顶向下结合的步骤

工作步骤:
1.主控模块作为测试驱动,所有与主控模块直接相连的模块作为桩模块;

2.根据集成的方式(深度或广度),下层的桩模块一个一个地被替换为真正的模块;

3.在每个模块被集成时,都必须已经进行了单元测试;

4.进行回归测试以确定集成新模块后没有引入错误

5.上述过程从第2步重复进行,直到整个系统结构被集成完成。

主要验证接口的稳定性。

  • 优点:能够较早的验证主要的控制点和判断点,如果主控制出现问题能够及时发现。 深度优先:首先实现并验证一个完整的功能需求的正确性。
  • 缺点: 桩的开发和维护是该方法的最大问题,底层模块增加,系统越来越复杂,底层模块从测试会越来越不充分。
  • 使用场景:接口变化比较小的项目并且控制结构比较清晰

② 自底向上增式测试:

工作步骤:

1.组装从最底层的模块开始,组合成一个构件,用以完成指定的软件子功能。

2.编制驱动程序,协调测试用例的输入与输出。

3.测试集成后的构件。

4.按程序结构向上组装测试后的构件,同时除掉驱动程序。

自底向上增式测试表示逐步集成和逐步测试的工作是按结构图自下而上进行的, 由于是从最底层开始集成,因此不需要使用桩模块来辅助测试 。

  • 优点:不再需要桩模块
  • 缺点: 对顶部的验证推迟了,设计上的错误不能被及时发现,随着顶层的集成,对产品底部的异常越来越难发现。
  • 使用场景:顶层接口变化比较复杂的,变化比较频繁的系统

总结:
自顶向下测试的优点在于它可以自然地做到逐步求精,一开始就可以让测试者看到系统的框架;缺点是需要提供桩模块,并且在输入/输出模块接入系统以前,在桩模块中表示测试数据有一定的困难。

自底向上测试的优点在于,由于驱动模块模拟了所有调用参数,即使数据流并未构成有向的非环状图,生成测试数据也没有困难;缺点在于直到最后一个模块被加进去之后才能看到整个程序的框架。

自顶向下集成测试方法和自底向上集成测试方法各有优缺点,一般来讲,一种方法的优点是另一种方法的缺点,因此产生了混合渐增式集成测试方法。

下面介绍三种常见的混合渐增式集成测试方法

  1. 衍变的自顶向下的渐增式测试,它的基本思想是强化对输入/输出模块和引入新算法模块进行测试,再自底向上组装成为功能相当完整且相对独立的子系统,然后由主模块开始自顶向下进行渐增式测试。
  2. 自底向上—— 自顶向下的渐增式测试(三明治集成),测试的时候,将被测软件分成三份,中间一份为目标层,首先对含读操作的子系统自底向上直至根结点模块进行组装和测试,然后对含写操作的子系统进行自顶向下的组装与测试。最后在目标层进行会和。但可能会中间层测试不充分。
  3. 回归测试,这种方式采取自顶向下的方式测试被修改的模块及其子模块,然后将这一部分视为子系统,再自底向上测试,以检查该子系统与其上级模块的接口是否匹配。

在组装测试时,测试者应当确定关键模块,对这些关键模块及早进行测试。关键模块至少应具有以下几种特征:

  • 满足某些软件需求。
  • 在程序的模块结构中位于较高的层次(高层控制模块)。
  • 较复杂、较容易发生错误。
  • 有明确定义的性能要求。

现在已经分别介绍了非渐增式测试方法和渐增式测试方法,从中可以看出渐增式测试方法相比非渐增式测试方具有以下优点:

  1. 非渐增式测试需要更多的工作量。但对从底向上的渐增式测试方法仅需要更少的驱动模块,不需要构造桩模块,减少了辅助性测试工作。
  2. 非渐增式测试方法先分散测试,再集中起来一次完成组合和测试,如果在模块接口处存在差错,只会在最后的组合时一下子暴露出来。 而使用渐增式测试方法可以较早地发现模块接口错误,这是由于较早地把模块组合起来进行测试所致。
  3. 作为一个结果,使用渐增式测试将使调试工作变得容易,因为渐增式测试逐步组合和逐步测试模块,把可能出现的错误逐步分散暴露出来,并且由于每次组合一个模块,错误发生时,可以比较容易地定位;这些错误是在最新增加的模块的连接中出现的。 反之,使用非渐增式测试方法,直到对各个模块测试结束,对整个程序进行组合时才能发现错误,这时再确定错误的位置就非常困难,因为它可能出现在程序的任何地方。
  4. 渐增式测试方法利用以前已测试过的模块取代非渐增式测试方法中所需要的驱动(或桩)模块,这样对后面模块的测试会使得前面已经实际测试过的模块得到更多的检验,因而使得整个程序的测试能取得较好的效果。

那么非渐增式测试方法为什么还要存在呢?一个原因是因为在实际工作中有人是这样进行程序的组装测试的,需要在这里指出其弊端;
另一个原因是非渐增式测试方法在一些特定条件和特定范围内能起到一定作用,它把整个软件系统组装起来也很快,但是必须小心谨慎。

下面是一系列非渐增式测试方法应用的条件,但这仅仅是必要条件。

那就是在一个做得很好且高度模块化的设计中,模块间的相互作用很小,而且详尽说明了接口,且将接口错误保持在最低限度,这时可以考虑用非渐增式测试方法。


本文转载自: https://blog.csdn.net/m0_52586092/article/details/124804948
版权归原作者 星星落在海那边 所有, 如有侵权,请联系我们删除。

“集成测试之增式集成测试和非增式集成测试”的评论:

还没有评论