分层测试:端到端测试

于果alpha技术博客 于果alpha技术博客     2023-02-22     806

关键词:

分层测试系列文章

https://www.cnblogs.com/yuxiuyan/tag/分层测试/

1. 什么是端到端测试

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

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

2. 端到端测试的模型

在我们当前的业务实践中,端到端测试由测试同学主导编写,用例代码和业务模块独立仓库管理。

下面按照用户使用银行卡申购指数基金为例,说明端到端测试的依赖关系:

可以看到,端到端测试的用例模块是跟业务模块独立存在的,并且逻辑也比集成测试用例和接口测试都要复杂,通过模拟真实用户行为、打通系统全周期的测试方式,来验证系统的全链路流程。

3. 端到端测试的优点

  1. 扩大测试覆盖范围
  2. 确保应用程序的正确性
  3. 缩短发布时间
  4. 降低成本
  5. 检测Bug
  6. 通过添加比其他测试方法(如单元和功能测试)更详细的测试案例,帮助团队扩大他们的测试范围。
  7. 通过运行基于终端用户行为的测试用例,确保应用程序的正确执行。
  8. 帮助发布团队缩短上市时间,允许他们自动化关键用户路径。
  9. 通过减少测试软件的时间,降低构建和维护软件的总体成本。

4. 端到端测试的挑战

端到端测试也不是万能的,任何收益必然伴随着成本。端到端测试的挑战如下:

4.1 编写耗时长

端到端测试需要对产品服务流程有完整的了解才能编写测试用例,因此编写的耗时很长。如果你的产品属于大型产品,那用户在产品中就有很多的浏览途径。我们不能针对每个路径进行测试。
所以,通常做法是更频繁地使用单元测试、接口测试,只对最高优先级的用户工作流使用端到端测试。

4.2 测试用例设计难度大

因为端到端测试是模拟用户的真实行为,因为在设计这些测试用例时就需要考虑多许多因素。
比如,一个在多浏览器运行的web程序,每个浏览器都有不同的规范。这意味着我们需要针对不同浏览器编写测试。时间成本很高。
在开发过程中,不能依赖端到端测试来快速寻找代码反馈,而是应该使用单元测试和接口测试。

4.3 容易终端且难以维护

端到端测试因为要走完完整流程,流程长,涉及系统多,非常容易中断,用例的前置依赖也非常多,这些都强依赖一个稳定的服务测试环境。整体维护成本非常高。

4.4 站在用户角度

用户不是在体验功能,而是通过产品解决他们的某些问题。所以端到端测试应该侧重于如果有效有效地解决用户问题。
并不是所有的开发团队都详细了解用户意图的。所以在开发期间就必须尽快部署,快速收集用户反馈。

5. 端到端测试的最佳实践

要进行端到端测试,遵循以下概述的做法至关重要,以确保测试顺利进行和成本可控。

5.1 优先考虑最终用途

  1. 模拟用户:创建测试用例时,像用户一样进行测试。了解第一次使用该应用程序的人的心态。
  2. 易用性:是否容易找到所有选项?特征有标注吗?用户能否通过两步或三步得到他们想要的东西?
  3. 文档先行:使用有助于阐明用户观点的验收测试文档和用户故事,相应地设计测试用例。
  4. 考虑投入产出:将 E2E 测试重点放在失败会导致最大问题的应用程序功能上。从这些特性开始,设计更精细的测试用例来验证它们。

5.2 避免异常测试

E2E 测试最适合用于测试常见的用户场景。对于特殊的用户场景,使用单元测试或接口测试。

5.3 维护整体用例的代码结构

  1. 由于 E2E 测试涵盖整个应用程序,因此测试用例必然很复杂。
  2. 每个系统组件都必须进行测试,这增加了故障点以及调试每个异常的难度。
  3. 结构和组织在 E2E 测试中至关重要。
  4. 通过单元测试和接口测试等底层测试消除简单的错误。

5.4 优化环境和清理机制

  1. 确保测试环境随时可以开始测试。
  2. 测试完成后,务必清理测试数据,以便环境恢复到原始状态,从而准备好再次进行测试。

鉴于端到端测试的重要性,需要从项目一开始就对其进行规划。端到端测试最好手动进行,因为它允许测试人员设身处地为用户着想。如果需要自动化测试,最好将其限制在只需要重复操作的低风险功能上。

端到端测试框架建议

】端到端测试框架建议【英文标题】:Endtoendtestingframeworkrecommendations【发布时间】:2011-05-1122:54:32【问题描述】:我在一个新项目中,希望包含端到端测试框架。我们想要一些灵活的东西,我以前用过Fitnesse,我认为我们需要类... 查看详情

端到端测试中遗留应用程序的代码覆盖率

】端到端测试中遗留应用程序的代码覆盖率【英文标题】:Codecoverageoflegacyapplicationsinendtoendtests【发布时间】:2021-09-2410:40:50【问题描述】:我正在构建一个基于specflow和XUnit的测试套件,其中包含运行一些遗留.net4.5应用程序的... 查看详情

量角器给出错误的端到端测试

】量角器给出错误的端到端测试【英文标题】:EndtoEndtestingwithprotractorgivingerror【发布时间】:2014-08-0418:15:42【问题描述】:我试图通过angularjs.org的angular-phonecat中的教程。在第三步中,我在使用量角器进行端到端测试时遇到错误... 查看详情

javascript单元测试或端到端测试

...。因为我们能够重新开始,我们希望这次能够做到-通过测试!我们为我们的单元测试和Selenium/Nightwatch发现了Jasmine和Karma,用于我们的端到端测试。当我为那些从未通过jQuery触及任何DOM的系统组件编写单元测试时,我很高兴。但... 查看详情

protractor端到端测试例子

protractor_conf.js文件:exports.config={directConnect:true,capabilities:{‘browserName‘:‘chrome‘,"chromeOptions":{args:["--window-size=2000,2000"],}},specs:[‘test-organization.js‘],//运行的测试文件地址jasmineNodeO 查看详情

端到端测试大数据管道的工具?

】端到端测试大数据管道的工具?【英文标题】:ToolstotestaBigDataPipelineendtoend?【发布时间】:2016-05-1203:09:03【问题描述】:我有这个管道:Webserver+rsyslog->Kafka->Logstash->ElasticSearch->Kibana我找到了这些工具来帮助测试我的管... 查看详情

我应该使用 Protractor 还是 Karma 进行端到端测试? [关闭]

】我应该使用Protractor还是Karma进行端到端测试?[关闭]【英文标题】:ShouldIbeusingProtractororKarmaformyend-to-endtesting?[closed]【发布时间】:2014-03-1100:59:01【问题描述】:我应该使用Protractor还是Karma进行端到端测试?Angular-seed使用Protract... 查看详情

端到端测试 RESTful Web 服务 (Rails)

】端到端测试RESTfulWeb服务(Rails)【英文标题】:End-to-endtestingaRESTfulWebservice(Rails)【发布时间】:2011-06-1509:00:35【问题描述】:我正在尝试筛选无数的测试解决方案,我什至不确定我是否朝着正确的方向前进。故事是:我们正在运... 查看详情

在端到端测试中捕获服务器 JSON 响应

】在端到端测试中捕获服务器JSON响应【英文标题】:CaptureserverJSONresponseinend-to-endtest【发布时间】:2015-10-1908:20:48【问题描述】:我正在编写一个端到端测试,它使用Protractor模拟用户身份验证。用户感觉到她的凭据并单击提交... 查看详情

端到端测试,protractor测试的教程

之前我们介绍了如何测试某段js代码的逻辑是否正确,考虑的情况是否全面,但是在ui界面上我们每次做好的功能都要自己去填写内容,点击按钮等,那么是否存在自动化测试的工具呢,让这些事情可以自动完成,答案是肯定的... 查看详情

Maven下多个spring boot应用的端到端集成测试

】Maven下多个springboot应用的端到端集成测试【英文标题】:EndtoendintegrationtestformultiplespringbootapplicationsunderMaven【发布时间】:2016-02-2516:58:23【问题描述】:在Maven构建的验证阶段,对多个Spring引导应用程序运行端到端集成测试的... 查看详情

如何等待在量角器端到端测试中处理事件?

】如何等待在量角器端到端测试中处理事件?【英文标题】:Howtowaitforaeventtobeprocessedinaprotractorendtoendtest?【发布时间】:2016-04-0113:38:21【问题描述】:我有非常简单的AngularJs1.4.8前端:填写完表格并按下确定按钮后,新的人就会... 查看详情

哪种是对 Spring Boot Rest API 进行端到端测试的最佳方法? [关闭]

】哪种是对SpringBootRestAPI进行端到端测试的最佳方法?[关闭]【英文标题】:WhichisthebestwaytodoendtoendtestingofSpringBootRestAPIs?[closed]【发布时间】:2018-11-2513:00:52【问题描述】:我已经在google和***中检查了SpringBootRestAPI的端到端测试。... 查看详情

vue-cli脚手架基于nightwatch的端到端测试环境的过程(代码片段)

不同公司和组织之间的测试效率迥异。在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发应用,因此测试自动化也成为软件项目的必备部分。测试自动化意味着使用软件工具来反复运行项目中的测试... 查看详情

Python - 如何使用 mysql 数据库运行端到端测试用例?

】Python-如何使用mysql数据库运行端到端测试用例?【英文标题】:Python-howtorunendtoendtestcaseswithmysqldatabase?【发布时间】:2019-06-2016:44:43【问题描述】:是否有任何类似于HSQLDB的Python内存数据库。MySQL是应用程序使用的数据库,为... 查看详情

如何使用 Mocha 在 Detox 中重试失败的端到端测试?

】如何使用Mocha在Detox中重试失败的端到端测试?【英文标题】:HowcanIretryfailedendtoendtestsinDetoxusingMocha?【发布时间】:2019-03-2217:09:06【问题描述】:我有一个使用Detox和Mocha的flakyend-to-endtest。Mocha测试运行器允许multipleretries。我尝... 查看详情

由于 webdriver-manager 未被识别为内部或外部命令,Gitlab CI 端到端测试失败

...webdriver-manager未被识别为内部或外部命令,GitlabCI端到端测试失败【英文标题】:GitlabCIEndtoEndtestingfailingbecauseofwebdriver-managerisnotrecognizedasaninternalorexternalcommand【发布时间】:2021-10-3103:29:00【问题描述】:我正在开发一个包含端到... 查看详情

text使用赛普拉斯javascript端到端测试框架的注意事项。(代码片段)

查看详情