集成测试(类型、自顶向下和自底向上)
什么是集成测试?
集成测试是一种软件测试,其中软件模块在概念上连接在一起并作为一个单元进行测试。一个典型的软件项目由多个软件模块组成,这些模块由多个程序员编写。此级别测试的目标是查找各种软件组件在组合在一起时交互方式中的缺陷。
集成测试关注确保数据在各个单元之间进行通信。因此,它也被称为“I&T”(集成和测试),“字符串测试”和“线程测试”。
什么是集成测试以及它是如何工作的?
集成测试的目的是什么?
集成测试用例示例
集成测试方法、策略和方法
大爆炸方法
逐步方法
存根和驱动程序有什么区别?
自底向上集成
自顶向下集成
三明治/混合集成
什么是集成测试以及它是如何工作的?
集成测试计划:快速概述
集成测试入口和出口标准
集成测试最佳实践/指南
集成测试的目的
尽管每个软件模块都进行了单元测试,但由于各种原因,故障仍然会发生,例如 -
通常,模块由单个软件开发人员创建,其编程逻辑和理解可能与其他程序员不同。需要进行集成测试以确保软件部分能够协同工作。
客户的需求很有可能在模块开发过程中发生变化。这些额外需求可能不会进行单元测试,因此需要进行系统集成测试。
软件模块与数据库的接口可能不正确。
如果存在,外部硬件接口可能不正确。
不合格的异常处理可能会导致问题。
集成测试用例示例
集成测试用例与其他测试用例的不同之处在于,它主要关注组件之间的接口和数据/信息流。应优先考虑集成链接而不是已经过测试的单元功能。
对于以下情况,以下是一些集成测试用例示例:应用程序包含三个模块:“登录页面”、“邮箱”和“删除邮件”,每个模块在逻辑上都已集成。
登录页面测试已在单元测试下完成,因此此处无需花费太多时间。但是,请查看它如何连接到邮箱页面。
同样,检查邮箱与删除邮件模块的连接。
测试用例 ID | 测试用例目标 | 测试用例描述 | 预期结果 |
---|---|---|---|
1 | 验证登录和邮箱模块之间是否存在接口关系。 | 输入登录凭据后,单击登录按钮。 | 将被定向到邮箱。 |
2 | 验证邮箱和删除邮件模块之间的接口关系是否完好无损。 | 从邮箱中选择电子邮件并将其删除。 | 已删除/垃圾文件夹应包含选定的电子邮件。 |
集成测试方法和方法
软件工程提供了多种执行集成测试的策略,包括 -
大爆炸方法
增量方法
三明治方法 - 自顶向下和自底向上的组合
下面列出了各种策略、如何实施以及它们的局限性和优势。
大爆炸实验
大爆炸测试是一种集成测试技术,其中所有组件或模块都同时组合在一起,然后作为单个实体进行测试。在测试过程中,此集成组件集合被视为单个对象。除非单元中的所有组件都已完成,否则集成过程将不会运行。
优点
它非常适合小型系统。
缺点
很难查明故障的确切位置。
鉴于此方法中必须检查的大量接口,可能会忽略某些必须评估的接口。
由于集成测试只能在“所有”模块都定义后才能开始,因此测试团队在测试阶段执行测试的时间会减少。
由于所有模块都是同时评估的,因此不会分离和首先检查高风险关键模块。处理用户界面的外围模块不会被分离或优先考虑进行测试。
增量测试
增量评估技术包括合并两个或多个在逻辑上相互关联的模块,然后测试应用程序的功能是否正确。然后逐步集成其他连接的模块,并重复此过程,直到所有逻辑上连接的模块都已成功集成和测试。
增量方法使用两种替代方法实施 -
自底向上
自顶向下
驱动程序和存根
存根和驱动程序是集成测试中使用的虚拟程序,用于简化软件测试过程。这些程序充当测试中缺少的模型的替身。它们没有实现软件模块的所有编程逻辑,但它们确实在测试期间模拟与调用模块的数据传输。
存根 - 此方法由被测模块调用。
驱动程序 - 这是调用将要测试的模块的程序。
自底向上完整性检查
自底向上集成测试的策略是首先测试最低级别的组件。然后使用经过测试的模块来帮助测试更高级别的模块。重复此过程,直到所有顶级模块都已测试。当较低级别的模块经过测试和合并后,将生成下一级别的模块。
优点
更容易找到故障。
与大爆炸策略不同,不会浪费时间等待所有模块构建。
缺点
影响程序流程的关键模块(在软件架构的顶层)最后进行测试,并且更有可能存在错误。
无法创建早期原型。
自顶向下集成测试
自顶向下集成测试是一种从软件系统控制流的顶部到底部进行集成测试的方法。为了确保软件功能,首先测试更高级别的模块,然后测试和集成更低级别的模块。如果某些模块未准备好,则使用存根对其进行测试。
优点
更容易找到故障。
可以尽早获得原型。
关键模块首先进行测试;可以首先发现和纠正严重的设计缺陷。
缺点
需要许多存根。
较低级别的模块没有经过彻底测试。
三明治测试
三明治测试是一种方法,其中顶级模块与较低级模块一起进行测试,而较低级组件与顶级模块一起组合并作为系统进行评估。混合集成测试是一种混合技术,结合了自顶向下和自底向上的方法。此项目中使用了存根和驱动程序。
集成测试方法
无论软件测试方法(如上所述)如何,集成测试方法如下 -
制定集成测试计划。
创建测试场景、用例和脚本。
在执行测试用例后,报告缺陷。
缺陷跟踪和重新测试
步骤 3 和 4 会重复执行,直到集成成功完成。
集成测试计划:快速概述
它具有以下特征 -
测试方法/方法(如上所述)。
范围和排除集成测试项目
职责和角色
集成测试有几个先决条件。
测试环境。
风险和缓解计划。
集成测试入口和出口标准
在任何软件开发方法中,集成测试阶段都存在入口和出口标准。
入口标准
已进行单元测试的组件/模块
所有高优先级错误都已解决并关闭。
所有模块都必须编码并正确集成。
集成计划、测试用例和方案的测试都必须获得批准并记录在案。
集成测试需要创建测试环境。
出口标准
已成功测试集成应用程序。
已完成的测试用例已记录在案。
在提交技术文档和发行说明之前,必须修复并关闭所有高优先级缺陷。
集成测试最佳实践/指南
首先确定可以使用哪种集成测试策略,然后创建相应的测试用例和数据。
检查应用程序的架构并确定关键模块。必须尽快对其进行测试。
获取架构团队的接口设计并编写测试用例以彻底检查所有接口。必须彻底测试数据库接口以及任何外部硬件或软件应用程序。
在测试用例之后,测试数据是最重要的因素。
在执行之前,始终准备好模拟数据。在执行测试用例期间,请勿选择测试数据。
集成测试挑战
我们已经广泛介绍了集成测试的工作原理及其带来的好处。好处,一如既往,也伴随着一些缺点。由于一些问题,集成测试可能比您想象的更困难。以下是一些类似场景的示例 -
当太多人参与代码开发过程,每个人都有自己的风格时,很难理解单元的逻辑。
各种元素(数据库、平台、环境等)可能会使测试变得复杂。
集成两个遗留系统,以及将新系统集成到现有系统中,很少一帆风顺。
如果多个团队构建不同的系统进行集成,它们可能不兼容。
由于多种方法和测试组合,选择最有效的模型可能具有挑战性。
结论
集成测试是测试层次结构的第二层。在单元测试之后,它为 QA 团队创造了一个更具挑战性的职责:确定不同的单元如何协同工作以及它们是否能够工作。
集成测试可以尽早发现缺陷,降低错误成本并加快产品交付速度。如果您忽略此步骤,则可能会忽略一个严重的问题,这将降低用户体验或迫使您推迟发布日期。