谈谈端到端测试(End-to-End Testing)

article/2025/11/11 5:27:54

谈谈端到端测试(End-to-End Testing)

当今的软件系统是复杂的,并且与许多子系统相互关联。如果任何子系统出现故障,整个软件系统都可能崩溃。这是一个主要的风险,可以通过端到端测试来避免。

端到端测试是一种技术,它从头到尾测试整个软件产品,以确保应用程序流按预期运行。它定义了产品的系统依赖关系,并确保所有集成的部分按预期协同工作。

端到端(E2E)测试的主要目的是通过模拟真实的用户场景,验证被测系统及其组件的集成性和数据完整性,从最终用户的体验进行测试。

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

端到端测试是软件开发生命周期(SDLC)中使用的一种方法,用于在类似产品的环境下测试应用程序的功能和性能,并使用数据复制实时设置。

目标是模拟真实用户场景从头到尾的样子。

完成此测试不仅是为了验证被测系统,而且是为了确保其子系统按预期工作和行为

什么是端到端测试(End-to_End Testing)?

端到端测试是一种软件测试方法,它从开始到结束验证整个软件,以及与外部接口的集成。

端到端测试的目的是测试整个软件的依赖性、数据完整性以及与其他系统、接口和数据库的通信,以实现完整的生产场景。

与软件系统一起,它还验证来自其他上游/下游系统的批处理/数据处理。因此,有了“端到端”的名称。

端到端测试通常在功能和系统测试之后执行。它使用实际的生产数据和测试环境来模拟实时设置。

端到端测试也称为链测试。

为什么要进行端到端测试?

端到端测试验证完整的系统流,并通过检测问题和增加子系统的测试覆盖率来增加信心。

现代软件系统是复杂的,并且与多个子系统相互关联,这些子系统可能不同于当前的系统。

任何子系统的故障都可能导致整个系统崩溃,这是通过端到端测试可以避免的重大风险。

端到端测试的好处

端到端测试因以下优点而更为可靠和广泛采用:

  • 扩大测试覆盖范围
  • 确保应用程序的正确性
  • 缩短发布时间
  • 降低成本
  • 检测Bug

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

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

现代软件系统通过技术进步允许子系统交互。无论子系统与主系统相同或不同,在组织内部或外部,子系统故障都会对整个系统造成不利影响。

通过执行以下操作可以避免系统风险:

  • 验证系统流程
  • 增加测试覆盖区域
  • 检测与子系统相关的问题

E2E测试广泛地吸引了许多群体:

  • 开发人员从中受益,因为大部分测试都被转移给了其他人。
  • 测试人员发现它很有用,因为编写验证真实世界行为的测试可以帮助他们避免问题并获得更大的成就感。
  • 管理者喜欢它,因为用户模拟测试让他们知道失败的测试将如何影响用户。

何时应用端到端测试?

有许多场景可以应用端到端测试。举个例子:

在测试之前,设计人员和开发人员创建一个列表,列出需要执行的UI、函数或特性。应跟踪系统之间的数据流,以发现依赖性、缺陷和不准确之处。团队还必须在测试前准备条件(可能改变任何接口选项的因素)。

定期对成品和系统进行E2E测试,使每次评审成为对已完成系统的测试。如果系统没有输出预期的结果或发现问题,将进行第二次测试。在这种情况下,团队必须记录和分析数据,以确定问题的根源;然后修复并重新测试它们。

端到端测试和功能测试的对比

端到端测试不仅仅是几个单元测试和功能测试串联在一起——它们更复杂,也带来更多风险。为了进一步说明这一点,我列出了功能测试和E2E测试之间的主要区别。

功能测试端到端测试
测试仅限于一段代码或应用程序。测试跨越多个应用程序和用户组。
确保测试软件符合验收标准。确保流程在进行更改后继续工作。
测试单个用户参与应用程序的方式。测试多个用户跨应用程序工作的方式。
验证每个输入和输出测试的结果。验证流程中的每个步骤是否已完成。

 

端到端测试和系统测试的对比

系统测试和端到端测试的对比,如表格所示:

 

端到端测试流程(End to End Testing Process)

如下图所示:

 

端到端测试生命周期由四个组件组成:测试规划、测试设计、测试执行和结果分析。

测试计划:指定关键任务、相关时间表和资源

测试设计:测试规范、测试用例生成、风险分析、使用分析和调度测试

测试执行:执行测试用例并记录测试结果

结果分析:分析测试结果,评估测试,必要时进行附加测试

端到端测试步骤:

  • 第一步:分析需求。对应用程序应该如何在各个方面工作有一个清晰的想法
  • 第二步:建立一个符合所有需求的测试环境
  • 第三步:分析软件和硬件需求
  • 第四步:列出每个系统需要如何响应
  • 第五步:列出测试这些响应所需的测试方法。包括每个测试中要遵循的标准(语言、工具等)的明确描述。
  • 第六步:设计测试用例
  • 第七步:运行测试、研究并保存结果

端到端测试方法

水平E2E测试

跨多个应用程序的上下文水平出现的一种常用方法,很容易在单个ERP(企业资源规划)应用程序中发生。

一个例子:基于Web的电子商务系统应用程序包括帐户、产品库存状态和装运详细信息。

垂直E2E测试

这种方法指的是分层测试,这意味着测试按顺序、层次顺序进行。为了确保质量,系统或产品的每个组成部分都要从头到尾进行测试。

垂直测试通常用于测试复杂计算系统的关键组件,这些组件通常不涉及用户或接口。

端到端测试的指标

E2E测试使用的许多指标包括:

  • 测试用例准备状态:用于确定正在准备的测试用例相对于计划的测试用例的具体位置。
  • 测试进度跟踪:应每周跟踪测试进度。此步骤将提供测试完成百分比的常规详细信息,如通过/失败、已执行/未执行、有效/无效测试用例等。
  • 缺陷状态和细节:它给出每周打开和关闭缺陷的百分比。而且,每周的缺陷分布是基于严重性和优先级的。
  • 环境可用性:实际操作小时数和每天计划用于测试的小时数。

在软件工程中,端到端测试是验证软件系统及其子系统的过程。在这个测试中最大的挑战是对整个系统以及一个相互连接的子系统有足够的了解。

 


http://chatgpt.dhexx.cn/article/0CHJw5lW.shtml

相关文章

“汽车人”眼中的网络安全---关于AUTOSAR E2E及测试开发实践

1.前言 上篇文章“聊聊网络安全的5W1H”对网络安全知识体系和技术脉络做了深入浅出的介绍,提到AUTOSAR所定义的网络和通信安全相关的技术,本期我们将介绍其中的E2E策略(严格来说属于Safety的范围),并分享在项目中的测…

【E2E】E2E通信保护协议学习1

文章目录 前言一、E2E简介和功能介绍1.E2E简介2.一些名词简写及其对应含义 二、一些功能规格1.通讯保护概述2.配置文档概述 总结 前言 在软件测试工作中,E2E是功能的一部分。 非E2E专业工程师,如果有哪里写的不对,请大家多多指正。 一、E2E简…

使用Nightwatch进行E2E测试

本文在线预览 E2E测试 不同于行为驱动测试(BDD)和单元测试独立运行并使用模拟/存根,端到端测试将试着尽可能从用户的视角,对真实系统的访问行为进行仿真。对Web应用来说,这意味着需要打开浏览器、加载页面、运行Java…

cypress进行e2e测试之理论

cypress 进行 e2e 测试之理论 cypress 是目前 e2e 很火的一个测试组件,内部绑定了 macha、chai、chai-jquery 之类的断言,为了让代码代码 更有说服力,减少提交测试错误,进行 e2e 测试显然是非常有必要的。 官网 GitHub 借鉴官网一句话来说…

自动化测试(二)01-前端测试分为单元测试、集成测试和E2E测试 测试工具对比-适合TDD或 BDD、断言、异步测试 测试工具的类型

自动化测试(二)01-前端测试分为单元测试、集成测试和E2E测试 & 测试工具对比-适合TDD或 BDD、断言、异步测试 & 测试工具的类型 前端自动化测试 测试是一个庞大的主题,包括各种分类的测试,诸如黑盒测试/白盒测试、单元测…

web前端测试——e2e测试

开发环境:安装有node的macbook(windows没测) 第一步: 创建自己需要测试的项目,如在桌面创建一个test目录作为我们的项目根目录。 打开sublim text ,并将项目拖到sublim text中,方便管理。 第…

E2E 端到端测试学习 - E2E 介绍、Cypress 案例基本使用

E2E 测试介绍 E2E E2E(end to end)端到端测试是最直观可以理解的测试类型。在前端应用程序中,端到端测试可以从用户的视角通过真实浏览器自动检查应用程序是否正常工作。 E2E 把整个系统当作一个黑盒,测试人员模拟真实用户在浏…

Unity射线与UI碰撞检测

问题产生背景:我们有的时候,需要实现射线与3D UI之间的碰撞,当射线碰撞到3D UI之后(将Canvas设置为World Space),调整到合适的位置。使用LineRender表示射线的直观显示,使用一把枪结合第一人称控…

unity中射线碰撞检测总结

这阵子通过看视频,看书对unity中射线碰撞检测,有了一些了解,这里我把它总结一下写下来,希望能帮助到你们,也希望通过各位大神来指正不足之处; 射线碰撞检测,就是由某一物体发射出一道射线&#…

Unity 射线与碰撞范围检测【踩坑记录】

射线检测 射线检测在2D和3D的区别比较大 一定要加上对应的Collider组件 对应的函数只检测对应的Collider,Physics.Raycast是不会检测到Collider 2D的(这个让我有一次debug了好久才发现) 对应API如下 Physics.Raycast(Vector3 origin,Vec…

Unity 碰撞位置

获取碰撞位置的方法1:使用 Collider.ClosestPoint Returns a point on the collider that is closest to a given location. 返回碰撞器上最接近给定位置的点。 下方是子弹打到物体上,生成撞击火星的代码: // 碰撞体的检测 private void O…

Unity入门7——物理系统之碰撞检测

一、刚体 Rigid Body ​ 刚体利用体积(碰撞器 Collider)进行碰撞计算,模拟真实的碰撞效果,产生力的作用 ​ 碰撞产生的必要条件: 两个物体都有碰撞器 Collider至少一个物体有刚体 Mass:质量 默认为千克&a…

解决Unity物体速度过快无法进行碰撞检测(碰撞检测穿透)

一、解决碰撞检测穿透方法一 首先我们知道只要是跟碰撞相关的基本都是离不开刚体 Rigidbody这个组件,刚体中有一个参数适用于检测碰撞的 如下图 Collision Detection就是碰撞检测。 然而有时候开发游戏,对于高速运动的物体(比如&#xff…

【Unity】Unity中获得碰撞体碰撞的位置

有时间的直接看sprite slicer这个插件的代码,原理也是发射线检测,代码逻辑什么的比下面的文章来的好的多,如果有空我也可以整理一下。 在纯物理环境中,为了获得碰撞体碰撞的位置,我们可以使用Collider2D.OnCollisionE…

Unity 3D中的射线与碰撞检测

在我们的游戏开发过程中,有一个很重要的工作就是进行碰撞检测。例如在射击游戏中子弹是否击中敌人,在RPG游戏中是否捡到装备等等。在进行碰撞检测时,我们最常用的工具就是射线,Unity 3D的物理引擎也为我们提供了射线类以及相关的函…

unity3D之简单的碰撞检测 .

版权声明:欢迎订阅公众号【5厘米的理想】,愿生命里的每一个小理想,都能成为生命里的小确幸。本文地址为: http://blog.csdn.net/qinyuanpei/article/details/23093665 大家好,欢迎大家关注由我为大家带来的Unity3D游戏…

Unity碰撞检测的必要条件

Unity中有两个独立的物理引擎,一个用于3D物理系统,一个用于2D物理系统。两个引擎是使用不同的组件实现的。因此BoxCollider和Rigidbody一起使用,代码中用OnTriggerEnter才能检测到触发;BoxCollider2D和Rigidbody2D一起使用,代码中…

Unity3D入门(二):碰撞检测

碰撞器由来 1.系统默认会给每个对象(GameObject)添加一个碰撞组件(ColliderComponent),一些背景对象则可以取消该组件。 2.在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。这两种方式的应用非…

Unity碰撞检测机制的原理(更新中...)

总是碰到关于碰撞的问题,今天实在忍不住了,来把它搞懂,不然听到八叉树,BSP什么的就怕可不行。 转自:http://www.manew.com/thread-102595-1-1.html 碰撞机制 最近做动态地形生成的时候,发现碰撞检测无效&…

Unity 3D之碰撞检测

一、碰撞器 碰撞检测两大必备条件&#xff1a;1.其中一方具备刚体&#xff0c;碰撞双方碰撞器 1、刚体 2、盒子碰撞器 3、碰撞检测方法 void Start(){this.gameObject.AddComponent<Rigidbody>();//添加刚体}void OnCollisionEnter(Collision other){if (other.gameOb…