专栏首页FunTester敏捷中的端到端测试

敏捷中的端到端测试

当今敏捷流行时代,大多数应用程序架构都是采用面向服务的体系结构设计的。因而,应用程序与可以在应用程序环境之外的许多子系统或者服务互连。如果任何子系统出现故障,都可能导致整个应用程序陷入瘫痪。

为了确保一切正常,我们需要从头到尾(端到端)测试应用程序的整个流程。

端到端测试主要用于两个目的:

  • 测试整个应用程序的主要业务组件,例如与其他服务、接口、数据库、网络和第三方应用程序进行数据交换。
  • 要创建一个尽可能接近线上的场景并测试满意的流程,以便测试人员可以模拟真实用户和环境并避免任何应用程序异常。

为什么需要端到端测试

在每个冲刺中,开发团队和测试团队都专注于应用程序中使用的所有集成服务中的单个服务。大量微服务和子系统的功能和较短的测试时间会让他们有可能错过了子系统或服务中存在的隐患。

因此,质量检查小组必须确保单个服务中的特定更改不会影响整个工作流程。

端到端测试与传统测试

传统测试包括单元测试、集成测试、系统测试、验收测试。但是端到端测试是在系统测试之后开始的。有时系统/单元/集成测试端到端测试之间区别不大,有时候很难界定,但是这些完全不同。

这是一个简单的例子,设我们有一个包含三个子系统的应用程序:「搜索」「订购」「支付」

在当前的冲刺中,支付子系统中的需求规范更改如下:添加新的支付选项。因此,根据要求,系统测试将仅处理与新添加的付款选项相关的功能。

但是端到端测试将具有从搜索到付款(带有新添加的付款选项)以及订单确认的场景。端到端测试的范围,复杂性和维护性高于单元和集成测试。

因此,在准备测试用例和自动化测试脚本,测试人员最好先了解与完整的应用架构,这样它会很容易界定的覆盖范围。

谁进行端到端测试

端到端测试应由对应用程序有深入了解并了解产品架构的测试人员执行。除了测试人员外,业务人员、营销人员、内测用户甚至技术经理都是进行端到端测试的理想人选。

端到端测试方法

水平端到端测试

它贯穿业务工作流程的每个阶段,并确保功能需求文档与开发的应用程序相对应。

水平的端到端测试从头到尾通过各个应用程序验证每个工作流,以确保每个相互关联的过程正常工作。通常这种类型的测试会在发布周期结束时并在稳定的环境中进行。通过这种方法,测试可以在功能部分获得更多的覆盖,但是只有在所有版本更改都完全实现后才能执行。

垂直端到端测试

此方法是指分层测试,测试按分层的顺序进行。垂直测试用于分别彻底地测试每个组件,它是测试生命周期的一部分。执行此操作的最常见方法是「BDD」「TDD」「CI/CD」

实现此目标的最佳方法是对每个组件执行单元测试,然后对API集成UI层执行测试。通过这些工作,我们可以对核心代码进行大量测试。由于可以分阶段实施,因此很容易找到每个阶段的「BUG」

端到端测试步骤

这些是端到端测试必不可少的步骤:

  • 需求分析:全面分析需求,并涵盖端到端工作流程中的主要业务组件。
  • 环境设置:设置测试环境时要牢记生产环境的详细信息。就软件和硬件要求而言,请尝试使其与产品相似。
  • 子系统:确保所有子系统都是端到端工作流的一部分。
  • 测试用例:设计具有最大覆盖范围的测试用例,并添加测试数据以测试常见的用户场景。专注于高优先级的功能,并设计更复杂的测试用例进行验证。
  • 执行:执行整个端到端测试套件,然后分析结果。永远不要忘记按正确的顺序运行套件。如果需要,请在多个设备和系统中中执行端到端场景。
  • 维护:由于端到端测试包含整个应用程序,因此测试用例比功能测试用例更为复杂。系统的每个组件都必须进行测试,这会增加故障百分比。执行的结构和顺序在端到端测试中至关重要。首先进行单元测试和集成测试以解决最初的错误。一旦开始端到端测试,就可以在高风险的用户场景下同时运行冒烟和健全性测试。

提高端到端测试效率

  • 尝试以最大的覆盖范围自动化端到端测试用例。
  • 将端到端自动化套件与冒烟测试、健全性测试和验收测试分开。
  • 在任何冲刺版本发布之前执行端到端套件,以确保应用程序的正常运行按预期进行,并且新的更改不会对产品的子系统产生任何影响。
  • 使用诸如Jenkins之类的任何工具将测试套件与「CI/CD」管道集成在一起。
  • 由于测试套件需要花费一些时间来执行,因此创建Jenkins任务并将其安排在晚上,以便可以在工作时间内分析所有失败的测试用例。
  • 端到端测试经常也确实包含一些跨浏览器和并行测试,因此在这种情况下,请尝试在Docker中使用Selenium Grid
  • 在运行自动化套件时,需要创建一个接近生产环境,并且需要避免任何环境级别的问题。

结论

端到端的目标是验证系统与功能流程的集成。因此在测试任何应用程序时,必须注意用户界面或表示层不是唯一要关注的领域,但应用程序行为背后的基础数据、流程和逻辑也需要进行验证。连接的系统和集成在前端、后端、功能和集成方面均同等重要。

本文分享自微信公众号 - FunTester(NuclearTester),作者:八音弦

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 自动化测试解决了什么问题

    为了解自动化测试的当前和未来状态,我们采访了14位非常熟悉自动化测试的IT专业人员。我们问他们:“通过自动化测试解决了哪些现实问题?”

    FunTester
  • 选择手动测试还是自动化测试?

    在软件测试行业中,争议最大的话题是“更好的是手动测试还是自动化测试”。尽管自动化测试最常谈论流行语,并且正在慢慢主导测试领域,手动测试的重要性不可忽视。

    FunTester
  • 功能自动化测试策略

    在与软件测试团队一起工作时,经常会发生功能测试BUG的情况,需要制定均衡的测试策略。模仿用户体验的测试策略有其自身的成本。如果组织仍在手动进行功能测试,通过实施...

    FunTester
  • 在云平台上进行网站测试的好处

    人们需要了解在云中执行网站测试如何更快、更具成本效益,以及与自动化和敏捷工作流之间的协作。

    CloudBest
  • 功能测试流程规范建设

    测试规范,网上随便一搜,都是一堆堆的范文,其实规范也是因人而定,每个人的规范或者依据项目或者部门,需要有特殊性,不过虽然可以定制部分,但是大体还是有很多相似之处...

    测试开发社区
  • 前端技能图谱

    基础 HTML / CSS JavaScript Node.js 正规表达式 数据格式(如JSON、XML) RESTful API交互(如jQuery Aja...

    Phodal
  • 如何避免移动测试自动化失败

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • 【SEDA异步框架】【三】异步框架技术选型

            采用了spring+quartz+fastjson+rabbitmq来实现。和传统SEDA架构区别比较大的地方在于:

    吃橙子的狐狸
  • 异常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项

    常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项

    跟着阿笨一起玩NET
  • 如何杀掉pg数据库正在运行的sql

    我们在生产环境可能经常遇到长sql,长sql对数据库的影响还是挺大的,不仅可能对主机资源消耗较大,还可能会阻塞其他sql的正常执行,所以对于长sql我们要尤其注...

    数据库架构之美

扫码关注云+社区

领取腾讯云代金券