博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[敏捷开发实践] 端到端测试你了解多少?
阅读量:4042 次
发布时间:2019-05-24

本文共 3923 字,大约阅读时间需要 13 分钟。

端到端测试你了解多少?

端到端测试是一种软件测试方法,用于从开始到结束测试应用程序流。此测试的目的是模拟真实的用户场景,验证被测系统及其组件的集成和数据完整性。

它自始至终都是在实际场景下执行的,比如应用程序与硬件、网络、数据库和其他应用程序的通信。

执行此测试的主要原因是确定应用程序的各种依赖关系,并确保在各个系统组件之间传递准确的信息。它通常在任何应用程序的功能和系统测试完成后执行。

End-to-end testing is a Software testing methodology to test an application flow from start to end. The purpose of this testing is to simulate the real user scenario and validate the system under test and its components for integration and data integrity.

It is performed from start to finish under real-world scenarios like communication of the application with hardware, network, database and other applications.

The main reason for carrying out this testing is to determine various dependencies of an application as well as ensuring that accurate information is communicated between various system components. It is usually performed after the completion of functional and system testing of any application.

 

端到端测试是软件开发生命周期(SDLC)中使用的一种方法,用于在类似产品的环境下测试应用程序的功能和性能,以及用于复制实时设置的数据。目标是从开始到结束模拟真实的用户场景。该测试的完成不仅是为了验证被测系统,而且是为了确保其子系统的工作和行为符合预期。

今天的软件变得越来越复杂。应用程序构建在子系统的层和整个网络上,包括UI和API层、外部数据库、网络,甚至第三方集成。当一个组件失败时,整个产品也会失败,这使得每个组件的稳定性对于应用程序的成功至关重要。这意味着很明显需要测试整个应用程序,从开始到结束-在API和UI层。端到端的测试应该使用自动化测试和手动测试策略来运行——允许您的团队最大化覆盖率,同时以探索的方式发现新的bug。


为什么需要端到端测试?

现在软件系统包括其与多个子系统的互连。这使得现在的软件系统成为一个非常复杂的系统。

这些子系统可以在同一个组织内,或者在许多情况下也可以是不同组织的子系统。此外,这些子系统可能与当前系统有些相似或不同。因此,如果任何子系统出现任何故障或故障,都可能对整个软件系统产生不利影响,导致其崩溃。

这些主要风险是可以避免的,并且可以通过这种类型的测试来控制:

  • 检查并执行系统流程验证。
  • 增加软件系统涉及的所有子系统的测试覆盖范围。
  • 检测子系统的任何问题,从而提高整个软件系统的生产率。

以下是端到端流程中包含的少数活动:

  • 对执行此测试的需求的彻底研究。
  • 测试环境的正确设置。
  • 对硬件和软件需求的深入研究。
  • 所有子系统及涉及的主要软件系统的说明。
  • 登记所有相关系统和子系统的角色和职责。
  • 本测试所用的测试方法以及所遵循的标准、及其说明。
  • 测试用例的设计以及需求矩阵的跟踪。
  • 记录或保存每个系统的输入和输出数据。

端到端测试的优点

进行端到端测试将帮助您确保您的软件已准备好生产,并避免发布后的风险。这个过程对软件发布成功至关重要,原因如下:

  • 确认应用程序运行状况:端到端测试将验证软件在各个级别(从前端到后端以及在多个系统上)的功能,并提供跨不同环境的性能透视图。
  • 扩展测试覆盖率:通过在测试过程中合并许多不同的子系统,可以有效地扩展测试覆盖率,并创建以前未考虑过的其他测试用例。
  • 检测错误并提高应用程序的生产效率:在端到端测试中,软件通常在每次迭代后都要进行测试,这意味着您将能够更快地发现和修复任何问题。这将减少错误进一步进入测试过程(以及生产)的机会,从而确保应用程序工作流无缝运行。
  • 减少测试工作和成本:在减少bug、故障和每个步骤的全面测试的情况下,端到端测试还将减少重复测试的需要,并最终减少与重复测试相关的成本和时间。

端到端测试的方法

1. 水平测试(Horizontal Test):

这种方法很常用。它在多个应用程序的上下文中水平发生。这种方法很容易出现在单一的ERP(企业资源计划)应用中。以在线订购系统的基于web的应用程序为例。整个过程将包括帐户、产品的库存状态以及发货细节。

2. 垂直测试(Vertical Test):

在这种方法中,任何应用程序的所有事务都会从开始到结束进行验证和评估。应用程序的每一层都从上到下进行测试。以一个使用HTML代码访问web服务器的基于web的应用程序为例。在这种情况下,需要API根据数据库生成SQL代码。所有这些复杂的计算场景都需要适当的验证和专门的测试。因此,这种方法要困难得多。

“白盒测试”和“黑盒测试”都与此测试相关。或者换句话说,我们可以说,这是白盒测试和黑盒测试的结合。根据正在开发的软件类型,在不同的级别上,测试技术(即白盒测试和黑盒测试)都在需要时使用。基本上,端到端测试执行任何软件或程序的功能和体系结构方法,以验证系统功能。

测试人员喜欢端到端的验证,因为从用户的角度和在真实场景中编写测试用例可以避免两个常见的错误:

  • “遗漏一个bug”
  • “编写不验证真实场景的测试用例”。

这为测试人员提供了巨大的成就感。

下面列出了一些在设计用于执行此类测试的测试用例时应牢记的准则:

  • 测试用例应该从最终用户的角度设计。
  • 应重点测试系统的一些现有功能。
  • 创建多个测试用例应该考虑多个场景。
  • 应该创建不同的测试用例集,以关注系统的多个场景。

当我们执行任何测试用例时,与此测试类似。如果测试用例是“通过”的,也就是说我们得到了预期的输出,那么据说系统已经成功地通过了端到端的测试。同样,如果系统没有产生所需的输出,那么需要重新测试一个测试用例,同时考虑到失败的区域。


端到端测试(E2E)与系统测试(System Test)的区别

其实这两个数据放在一起比较就像在比较水果和颜色一样,是不同类的事物在比较。

我们知道测试级别(Test Level)划分为:单元测试(Unit Test)、集成测试(Integration Test)、系统测试(System Test)和用户确认测试(UAT,User Acception Test)

而端到端测试(End to End Test)是一种测试方法。就像探索性测试(Explore Testing)和渗透测试(Penetration Test)一样,这些都是测试方法。

换言之,E2E测试始终是系统测试,但系统测试不一定是E2E测试。

 

系统测试(System Testing)是一种测试级别(Test Level),它包括一系列不同的测试,其目的是对集成系统进行完整的测试。系统测试基本上是黑盒测试的一种形式,从用户的角度出发,将重点放在软件系统的外部工作上,并将实际情况作为考虑因素。

系统测试包括:

  • 测试完全集成的应用程序,包括主系统。
  • 确定组件之间以及系统内部的交互。
  • 根据提供的输入验证所需的输出。
  • 分析用户在使用应用程序的各个方面时的体验。

系统测试:您正在测试整个系统,即系统的所有组件,以确保每个组件都按预期运行。这更多的是从功能的角度来检查需求。

端到端测试:这更多的是关于在更真实的最终用户场景中通过测试系统的实际流程来验证系统是否能够工作正常。用户能否按预期使用应用程序并且系统正常工作。其实是在测试业务流和数据流。

上面我们已经看到了系统测试的基本描述来理解它。现在,我们来看看“系统测试”和“端到端测试”之间的区别。

端到端测试

End to End Testing

系统测试

System Testing

验证软件系统和所有相互连接的子系统。 根据需求文档中提供的规范,它只是验证软件系统。
重点是验证端到端测试流程。 重点是验证和检查软件系统的特性和功能。
在执行测试时,将考虑所有接口,包括软件系统的后端进程。 在执行测试时,只考虑功能和非功能区域及其特性进行测试。
端到端测试在任何软件系统的系统测试完成后执行。 系统测试基本上是在软件系统集成测试完成后进行的。
在执行端到端测试时,通常首选手动测试,因为这些测试形式涉及外部接口的测试,有时也很难实现自动化。会使整个过程变得非常复杂。 手动和自动测试都可以作为系统测试的一部分来执行。

对于任何商业版本的软件,端到端的验证都扮演着重要的角色,因为它在一个完全模仿真实用户(如网络通信、数据库交互等)的环境中测试整个应用程序。

大多数情况下,端到端测试是手动执行的,因为自动化此类测试用例的成本太高,每个组织都无法承担。这不仅有利于系统验证,而且可以被认为对测试外部集成有用。

转载地址:http://evvdi.baihongyu.com/

你可能感兴趣的文章
Linux常用统计命令之wc
查看>>
测试必会之 Linux 三剑客之 sed
查看>>
Socket请求XML客户端程序
查看>>
Java中数字转大写货币(支持到千亿)
查看>>
Java.nio
查看>>
函数模版类模版和偏特化泛化的总结
查看>>
VMware Workstation Pro虚拟机不可用解决方法
查看>>
最简单的使用redis自带程序实现c程序远程访问redis服务
查看>>
redis学习总结-- 内部数据 字符串 链表 字典 跳跃表
查看>>
iOS 对象序列化与反序列化
查看>>
iOS 序列化与反序列化(runtime) 01
查看>>
iOS AFN 3.0版本前后区别 01
查看>>
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
iOS __block和__weak的区别
查看>>
Android(三)数据存储之XML解析技术
查看>>
Spring JTA应用之JOTM配置
查看>>
spring JdbcTemplate 的若干问题
查看>>