前言
软件产品的构成都是非常复杂的,这也就意味着它将含有多个模块,这些模块通过接口进行交互。针对于这些集成模块的测试,我们称之为集成测试。也可以认为它是由单元测试扩展出来的。
集成测试的定义
集成测试是测试单元模块之间的连接或数据传输的过程。它又称为I&T(集成与测试)。
它分为大爆炸法、自上而下法、自下而上法和三明治或混合集成法(自上而下和自下而上相结合)。这个过程是通过使用名为stub和Drivers的虚拟程序来执行,其不需要实现软件整个模块,而只是模拟与调用模块的数据通信即可。
它通常是在单元测试之后完成之后执行的。集成测试中涉及的每个模块都应该在集成测试之前进行单元测试。通过在集成测试之前进行单元测试,可以提高执行软件集成测试的信心。
集成测试也需要编写相应的测试计划,从而减少了测试的混乱,并为有效执行集成测试提供了清晰的路径。
集成测试的目标
- 降低风险
- 验证接口的功能和非功能行为是否符合设计和规定
- 建立对接口质量的信心
- 查找缺陷(可能接口本身或组件或系统内)
- 防止集成接口的缺陷在后期测试中发现
如何写集成测试用例
假设网页程序中有三个模块,如“登录页”、“收件箱”和“删除邮件”。
在编写集成测试用例时,我们不关注单个模块的功能,因为在单元测试期间应该覆盖单个模块,在集成测试阶段我们主要关注模块之间的通信。根据上述假设,我们必须关注“登录页面如何链接到收件箱页面”和“收件箱页面如何链接到删除邮件模块”。
什么是大爆炸式的集成测试
它是将所有模块合并一次,并在完成单个模块测试后验证功能。在大爆炸式集成测试中,只有在所有模块都准备好之后,才能集成各个模块。然后他们会去检查它是否表现良好。在这种类型的测试中,可能会出现一些缺点,例如,可能是在很后期发现缺陷。很难定位缺陷是来自于某个模块或者是接口,亦或是集成方面的问题。
什么是自上而下的集成测试
在自上向下的集成测试中,测试是自上而下进行的。首先测试高级模块,然后测试低级模块,最后将低级模块集成到高级模块,以确保系统工作正常。
在这种类型的测试中,如果模块还没有准备好进行集成测试,那么桩程序(stub)将用作临时模块。
什么是自下而上的集成测试
在自下而上的集成测试中,测试是自下而上进行的。首先测试底层模块,然后测试高层模块,最后将高层模块集成到低层,以确保系统按预期工作驱动程序用作集成测试的临时模块。
桩和驱动程序有什么区别
桩和驱动程序用于组件级的测试
假设我们在一个应用程序中有两个模块,即“模块1”和“模块2”。开发人员只开发了应用程序的“模块1”。在他们完成“模块2”的开发之前,我们(测试人员)收到了测试“模块1”的要求。我们可以测试“模块1”,如果其与“模块2”没有依赖关系。假设“模块1”依赖于“模块2”。那我们该怎么办?在这种情况下如果想要测试“模块1”,需要开发人员创建一个桩(stub)模块来替换“模块2”。如果“模块2”依赖于“模块1”,但“模块1”尚未就绪,则采用相同的方法在本例中,我们使用驱动(driver)替换“模块1”。
像我们之前提过的登录并且登录邮箱页面的案例。
您必须测试登录页面(假设,邮箱页面正在开发中)。登录页面将在登录后调用邮箱页面,但邮箱页面尚未就绪。为了克服这种情况,开发人员编写了一个虚拟程序作为邮箱页面。这个就是桩(stub)程序。
桩(stub)被称为“程序”。如果“调用的程序”不完整,则将其替换为桩。(这是自上而下的方法)。
再来说说驱动程序,登录页面已经准备好了,但不是邮箱页面。这次假设邮箱页面已经准备好测试,但是登录页面还没有准备好。为了克服这种情况,开发人员编写了一个类似于登录页面的虚拟程序。这个虚拟程序就是驱动程序,驱动程序也就是“调用程序”。如果“调用程序”不完整,则将其替换为驱动程序。(这种情况在自下而上的方法中发生)。
桩 | 驱动 |
---|---|
自顶向下集成测试中使用桩 | 自下而上集成测试中使用驱动程序 |
在开发子程序时使用桩 | 开发过程中使用驱动程序 |
首先测试最上层的模块 | 最底层模块最先测试 |
它用来模拟未集成的底层模块的行为 | 它用来模拟未集成的上层模块的行为 |
桩是被调用程序 | 驱动是调用程序 |
什么是混合集成测试
混合集成测试也称为三明治集成测试。它是自顶向下和自下而上集成测试的结合。
集成测试的工具
一些集成测试工具如下:
总结
集成测试是测试环节中很重要的一个部分,尤其是在今天软件产品的架构都在向微服务的架构转变,那么集成各个服务间的测试就显得尤为重要。希望对大家有所帮助,如果有疑问或者想法,也请大家留言区回复。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。