📅  最后修改于: 2021-01-08 09:02:36             🧑  作者: Mango
集成测试是单元测试之后的第二级软件测试过程。在此测试中,将对软件的单元或单个组件进行一组测试。集成测试级别的重点是在集成的组件或单元之间进行交互时暴露缺陷。
单元测试使用模块进行测试,并且这些模块在集成测试中进行了组合和测试。该软件是由许多由不同编码员或程序员编码的软件模块开发的。集成测试的目的是检查所有模块之间通信的正确性。
一旦所有组件或模块独立工作,那么我们需要检查从属模块之间的数据流,这称为集成测试。
让我们看一个银行应用程序的示例示例,正如我们在下图的转账中看到的那样。
此处的积极测试表明,如果总余额为15卢比,则我们要转帐1500卢比,并检查转帐是否正常。如果是这样,则该测试将通过。
否定测试意味着,如果总余额为Rs15,000,而我们正在转账Rs20,000,并检查是否发生金额转账,如果没有发生,则测试通过。如果发生这种情况,则说明代码中存在错误,我们会将其发送给开发团队以修复该错误。
注意:这个世界上的任何应用程序都必须进行功能测试,而集成测试仅在模块相互依赖时才进行。每个集成方案都必须具有源→数据→目标。仅当数据保存在目标位置时,任何方案才可以称为集成方案。
例如:在Gmail应用程序中,“源”可以是“撰写” ,“数据”可以是“电子邮件”,而“目标”可以是“收件箱” 。
让我们假设我们有一个执行集成测试的Gmail应用程序。
首先,我们将在登录页面上进行功能测试,其中包括各种组件,例如用户名,密码,提交和取消按钮。只有我们才能执行集成测试。
不同的集成方案如下:
场景1:
Secanrios2:我们还对垃圾邮件文件夹执行集成测试。如果特定联系人已被标记为垃圾邮件,则该用户发送的任何邮件都应转到垃圾邮件文件夹,而不要在收件箱中。
注意:我们将对所有功能执行功能测试,例如发送邮件,收件箱等。
如下图所示,我们将对所有文本字段和每个功能执行功能测试。然后,我们将对相关功能进行集成测试。我们首先测试添加用户,用户列表,删除用户,编辑用户,然后搜索用户。
注意:
尽管已经在单元测试中测试了软件应用程序的所有模块,但由于以下原因,仍然存在错误:
任何测试技术(黑盒,白盒和灰盒)都可以用于集成测试。下面列出了一些:
集成测试可以分为两部分:
在增量方法中,模块是按升序一个或一个或根据需要添加的。所选模块必须在逻辑上相关。通常,添加并测试两个或两个以上模块以确定功能的正确性。该过程一直持续到成功测试所有模块为止。
要么
在这种类型的测试中,从属模块之间存在很强的关系。假设我们采用两个或多个模块,并验证它们之间的数据流运行正常。如果是,则添加更多模块并再次测试。
例如:假设我们有一个Flipkart应用程序,我们将执行增量集成测试,并且该应用程序的流程将如下所示:
Flipkart→登录→主页→搜索→添加购物车→付款→注销
增量集成测试通过其他方法进行:
自上而下的测试策略涉及以下过程:使用较低级别的模块测试较高级别的模块,直到成功完成所有模块的测试为止。由于首先测试了关键模块,因此可以及早发现并修复主要设计缺陷。在这种类型的方法中,我们将递增地或一个接一个地添加模块,并以相同顺序检查数据流。
在自上而下的方法中,我们将确保添加的模块是前一个模块的子模块,例如Child C是Child B的孩子,依此类推,如下图所示:
优点:
缺点:
自下而上的测试策略涉及以下过程:使用较高级别的模块测试较低级别的模块,直到成功完成所有模块的测试为止。最后对顶级关键模块进行了测试,因此可能会导致缺陷。或者可以说,我们将从底部到顶部添加模块,并以相同顺序检查数据流。
在自下而上的方法中,我们将确保所添加的模块是上一个模块的父模块,如下图所示:
优点
缺点
在这种情况下,我们有一种称为混合测试的附加方法。
在这种方法中,自顶向下和自底向上两种方法都结合在一起进行测试。在此过程中,将同时使用较低级别的模块测试顶级模块,并同时使用较高级别的模块测试较低级别的模块。因为每个模块接口都经过测试,所以发生缺陷的可能性较小。
优点
缺点
当数据流非常复杂并且很难找到谁是父母和谁是孩子时,我们将采用这种方法。在这种情况下,我们将在所有其他现有模块上的任何模块中创建数据,并检查数据是否存在。因此,它也被称为大爆炸法。
在这种方法中,测试是通过一次集成所有模块来完成的。如果用于大型软件系统,则很难识别缺陷,这对于小型软件系统很方便。
由于该测试团队可以在所有模块完成之后进行该测试,因为该测试团队有较少的时间执行该过程,因此内部链接的接口和高风险关键模块很容易被遗漏。
优点:
缺点:
让我们看一些例子,以更好地理解非增量积分测试或大爆炸方法:
例1
在下面的示例中,开发团队开发应用程序并将其发送给测试团队的CEO。然后,CEO将登录到该应用程序并生成用户名和密码,然后将邮件发送给经理。之后,首席执行官将告诉他们开始测试应用程序。
然后,经理管理用户名和密码,并生成用户名和密码,并将其发送给测试线。测试线会将其发送给测试工程师,以进行进一步的测试。从首席执行官到测试工程师的命令是自上而下的增量集成测试。
同样,测试工程师完成测试后,会向测试主管发送报告,然后由测试主管将报告提交给经理,经理将报告发送给首席执行官。该过程称为自下而上的增量集成测试,如下图所示:
注意:增量集成测试(IIT)和非增量集成测试的组合称为三明治测试。
例2
下面的示例演示了Gmail收件箱的主页,我们单击“收件箱”链接,然后将我们移至收件箱页面。在这里我们必须进行非增量集成测试,因为没有父子概念。
注意
存根和驱动程序
存根是一个虚拟模块,可以接收数据并创建大量可能的数据,但其性能类似于真实模块。当数据从模块P发送到存根Q时,它接收数据而不进行确认和验证,并为给定数据产生估计结果。
驱动程序的函数用于验证来自P的数据并将其发送到存根,还检查来自存根的期望数据并将其发送到P。
驱动程序是一种设置测试环境,还负责通信,评估结果并发送报告的驱动程序。我们从不在测试过程中使用存根和驱动程序。
在黑匣子测试中,任何测试都不会优先考虑,因为它取决于应用程序。