测试 十月 30, 2019

软件测试笔记(十一)如何做到有效的集成测试?

文章字数 4.4k 阅读约需 4 mins. 阅读次数 0

前言

软件产品的构成都是非常复杂的,这也就意味着它将含有多个模块,这些模块通过接口进行交互。针对于这些集成模块的测试,我们称之为集成测试。也可以认为它是由单元测试扩展出来的。

集成测试的定义

集成测试是测试单元模块之间的连接或数据传输的过程。它又称为I&T(集成与测试)。

它分为大爆炸法、自上而下法、自下而上法和三明治或混合集成法(自上而下和自下而上相结合)。这个过程是通过使用名为stub和Drivers的虚拟程序来执行,其不需要实现软件整个模块,而只是模拟与调用模块的数据通信即可。

它通常是在单元测试之后完成之后执行的。集成测试中涉及的每个模块都应该在集成测试之前进行单元测试。通过在集成测试之前进行单元测试,可以提高执行软件集成测试的信心。

集成测试也需要编写相应的测试计划,从而减少了测试的混乱,并为有效执行集成测试提供了清晰的路径。

集成测试的目标

  1. 降低风险
  2. 验证接口的功能和非功能行为是否符合设计和规定
  3. 建立对接口质量的信心
  4. 查找缺陷(可能接口本身或组件或系统内)
  5. 防止集成接口的缺陷在后期测试中发现

如何写集成测试用例

假设网页程序中有三个模块,如“登录页”、“收件箱”和“删除邮件”。

在编写集成测试用例时,我们不关注单个模块的功能,因为在单元测试期间应该覆盖单个模块,在集成测试阶段我们主要关注模块之间的通信。根据上述假设,我们必须关注“登录页面如何链接到收件箱页面”和“收件箱页面如何链接到删除邮件模块”。

image.png

什么是大爆炸式的集成测试

它是将所有模块合并一次,并在完成单个模块测试后验证功能。在大爆炸式集成测试中,只有在所有模块都准备好之后,才能集成各个模块。然后他们会去检查它是否表现良好。在这种类型的测试中,可能会出现一些缺点,例如,可能是在很后期发现缺陷。很难定位缺陷是来自于某个模块或者是接口,亦或是集成方面的问题。

什么是自上而下的集成测试

image.png

在自上向下的集成测试中,测试是自上而下进行的。首先测试高级模块,然后测试低级模块,最后将低级模块集成到高级模块,以确保系统工作正常。

在这种类型的测试中,如果模块还没有准备好进行集成测试,那么桩程序(stub)将用作临时模块。

什么是自下而上的集成测试

image.png

在自下而上的集成测试中,测试是自下而上进行的。首先测试底层模块,然后测试高层模块,最后将高层模块集成到低层,以确保系统按预期工作驱动程序用作集成测试的临时模块。

桩和驱动程序有什么区别

桩和驱动程序用于组件级的测试

image.png

假设我们在一个应用程序中有两个模块,即“模块1”和“模块2”。开发人员只开发了应用程序的“模块1”。在他们完成“模块2”的开发之前,我们(测试人员)收到了测试“模块1”的要求。我们可以测试“模块1”,如果其与“模块2”没有依赖关系。假设“模块1”依赖于“模块2”。那我们该怎么办?在这种情况下如果想要测试“模块1”,需要开发人员创建一个桩(stub)模块来替换“模块2”。如果“模块2”依赖于“模块1”,但“模块1”尚未就绪,则采用相同的方法在本例中,我们使用驱动(driver)替换“模块1”。

像我们之前提过的登录并且登录邮箱页面的案例。
您必须测试登录页面(假设,邮箱页面正在开发中)。登录页面将在登录后调用邮箱页面,但邮箱页面尚未就绪。为了克服这种情况,开发人员编写了一个虚拟程序作为邮箱页面。这个就是桩(stub)程序。

桩(stub)被称为“程序”。如果“调用的程序”不完整,则将其替换为桩。(这是自上而下的方法)。

再来说说驱动程序,登录页面已经准备好了,但不是邮箱页面。这次假设邮箱页面已经准备好测试,但是登录页面还没有准备好。为了克服这种情况,开发人员编写了一个类似于登录页面的虚拟程序。这个虚拟程序就是驱动程序,驱动程序也就是“调用程序”。如果“调用程序”不完整,则将其替换为驱动程序。(这种情况在自下而上的方法中发生)。

驱动
自顶向下集成测试中使用桩 自下而上集成测试中使用驱动程序
在开发子程序时使用桩 开发过程中使用驱动程序
首先测试最上层的模块 最底层模块最先测试
它用来模拟未集成的底层模块的行为 它用来模拟未集成的上层模块的行为
桩是被调用程序 驱动是调用程序

什么是混合集成测试

混合集成测试也称为三明治集成测试。它是自顶向下和自下而上集成测试的结合。

集成测试的工具

一些集成测试工具如下:

  1. Citrus Integration Testing
  2. VectorCAST/C++
  3. FitNesse
  4. Validata

总结

集成测试是测试环节中很重要的一个部分,尤其是在今天软件产品的架构都在向微服务的架构转变,那么集成各个服务间的测试就显得尤为重要。希望对大家有所帮助,如果有疑问或者想法,也请大家留言区回复。

0%