E2E 测试确认集成组件(如前端、后端、数据库和第三方服务)可以顺利协同工作。它还努力融入真实世界的用户场景。
目前已有全套软件测试类型可用。您可以测试整个应用程序的特定区域,放大感兴趣的特定方面,甚至可以深入到对其最小增量级别的单元测试。也许您想测试该软件执行各种特定功能的效果,或者测试其不同组件之间的配合情况。在这种情况下,您最好深入了解功能测试或集成测试。
但是,假设您的目标是全面了解软件应用程序的运行方式。您希望洞察应用程序从开始到结束的运行情况,并了解其如何有效处理子系统和相关依赖项。
除了这些步骤之外,我们假设您还想大致了解用户界面 (UI) 的运行情况。因此,无论您选择哪种用户界面测试方法,都需要从用户的角度解决应用程序的性能问题。
E2E 测试提供了一种全面的测试框架,它提供了应用程序行为的从头到尾的视图以及评估用户体验 (UX) 质量的方法。
由于 E2E 测试雄心勃勃,足以覆盖整个应用程序开发生命周期,因此发现 E2E 测试需要更多的投入、资源和时间也就不足为奇了。
E2E 测试与“黑匣”测试战略有很大不同;在“黑匣”测试战略中,操作被归结为“通过/失败”评估。这种战略意味着我们只需了解应用程序是否按规定运行。因此,E2E 并不是适用于所有目的的理想选择。这通常是一个耗时的测试过程,最适合测试人员确实需要对应用程序性能的每个阶段进行评估的情况。
E2E 测试过程基于以下步骤:
此阶段涉及测试环境,这是另一个需要预先规划的步骤。理想情况下,测试人员应开发近似于生产环境的暂存环境。
测试人员将通常会集成到软件开发过程中的各个组件(例如应用程序编程接口 (API)、数据库和其他必要组件)填充到这个暂存环境中。而且,在无法访问真实性能数据的情况下,测试人员可能会选择使用合成数据。
我们已经进入了测试人员制定测试脚本的阶段,该脚本概述与所有相关组件(如前端、后端、数据库和 API)有关的不同使用场景。
当 E2E 测试运行时,测试人员会随着工作流程的进展评估应用程序的行为,确保在整个测试执行过程中保持数据完整性。如果测试人员选择不使用测试脚本,则他们需要对测试场景进行手动测试。
测试方法的有用性取决于它们所揭示的内容,在此阶段是时候仔细评估测试生成的测试数据了。测试人员将测试结果及其相关指标与预期结果进行比较,以了解可以从测试覆盖率中获知哪些内容,以及代码中当前还存在哪些缺陷或错误。
测试人员现在要着手解决测试中发现的问题。测试人员研究错误消息和性能日志,以了解故障的根源。测试人员成功调试应用程序问题后,会重新运行测试,以查看测试过程中问题是否已得到修复以及性能是否已得到优化。
此阶段测试人员运行正常的质量保证 (QA) 功能,目标是建立无缝的数据质量。
E2E 测试的最后一步涉及利用自动化的力量来确保自动化测试正确地集成为定期发生的活动。这意味着将来自开源框架 Playwright 等工具的测试自动化添加到持续集成和持续交付 (CI/CD) 管道中,以便定期进行必要的测试。
使用 CI/CD 管道的测试人员可以在软件开发过程的早期检测到性能问题,并快速轻松地缓解这些问题。
想要完善端到端测试实践?不妨参考以下建议。
用户旅程通常差异很大,虽然在测试中包含尽可能多的用户旅程很重要,但您可能需要确定测试的优先级。这种方法首先应该集中于测试最重要的用户旅程。
定义“重要”的方式会产生影响。不过,一般来说,我们在这里讨论的是那些定期进行的测试,因为它们对一个组织具有稳定和持续的重要性,例如网站登录。
此步骤的另一部分是将工作流分解为可管理的步骤,以便于测试。
选择器是调用网页文档对象模型 (DOM) 中的响应式元素的模式。选择器作为地址,帮助测试框架定位屏幕元素,如输入字段、文本元素和按钮。
同样,最好使用“data-*”属性或其他稳定的标识符。应避免使用类名等易失效的选择器。此外,DOM 结构可能会经历不同的迭代,因此最好谨慎使用。
怎样才能做好测试?成功可以有多种形式,但最好的测试示例通常具有一些共同的特性。首先,测试人员应该能够在需要时调用相同的测试,因此确保测试可重复是可取的。
同样,测试需要能够自由运行,并且不受外部影响,例如第三方可用性和网络计时问题。这些问题可能会产生不可靠的结果。
如果没有有效的管理来控制范围蔓延,E2E 测试很容易变得太大。发生这种情况时,测试可能会陷入困境并难以运行。因此,测试性能也会受到影响。
这就是为什么在可行的情况下,去除一些最繁重的处理任务是有意义的。首先,这意味着逻辑验证活动,测试人员可以将其作为单元测试和集成测试的一部分来执行。这种方法使得 E2E 测试能够继续致力于验证用户行为趋势和同步软件系统。
为了高效而全面地开展测试,测试人员的要务在于释放测试自动化所具备的强大处理能力。这是确保以适当频率执行测试的关键策略。
除了自动执行重复性测试任务外,它还是限制测试持续产生人为错误的主要手段。在使用跨浏览器应用程序和移动应用程序时,许多测试人员会选择基于云的测试服务。
创建和维护测试环境是系统测试的重要组成部分。测试人员应优化测试环境并使其尽可能敏捷,从而实现快速设置和即时测试。
测试环境提供深度隔离以保护测试结果免受外部源的不当干扰也至关重要。
当所有相关方协同参与时,E2E 测试就能达到最佳效果。测试人员由此可获得高质量的测试结果,这些结果在代码修订阶段的价值尤为显著。特别是,DevOps 团队和 QA 团队需要保持密切沟通和协作,以维持最佳软件质量。
对 QA 团队进行培训也很重要,这可确保他们清楚地了解组织的业务需求,并且不会在修订过程中无意中损害需求。
最后,提醒所有相关利益相关者注意项目的进展。
API 对于运行应用程序至关重要,因为它们允许应用程序中的各种相关组件相互通信。
API 测试侧重于 API 功能,可以在测试人员评估用户界面功能之前消除任何逻辑问题。
运行多个测试时,应并行运行测试,充分利用系统同时处理多个测试的能力。这种方法尤其适用于基于云的测试配置,但它总体上是一个很好的指导。
当您并行运行测试时,您可以减少测试执行所需的时间,而且可以更快地从这些测试中获得反馈。
我们不断见证着计算机领域瞬息万变的局势。技术与环境日新月异,应用程序也不例外。正因如此,测试人员的工作永无止境。
定期重新考虑 E2E 测试用例,并确认是否有任何可能对其分析性能产生负面影响的变化,是明智的做法。
人工智能 (AI) 为计算领域的各个环节注入了活力,并激发了颠覆性变革。AI 对 E2E 测试的核心优势,与其赋能其他软件测试形式的价值一脉相承。本质上,AI 能够加速 E2E 测试、提高测试流程的效率,并增强对应用程序的保护以避免出错。
除了这些方面之外,AI 还通过基于应用程序行为和用户流生成测试用例来协助 E2E 测试过程。这种方法包括“自我修复”测试,可以根据系统对用户界面变化的识别进行自我纠正。
AI 可以监控不断发展的应用程序中的测试,并根据它感知到的显著变化调整这些测试。当需要进行这些测试时,AI 能以超快的速度完成测试。此外,它可以识别可能需要额外后续测试的领域。
对于希望避免本地部署基础设施的巨额费用的组织来说,可以在云上运行 AI 测试。对于从事软件发布的公司来说,AI 可以帮助他们更快地运行所需的软件测试,从而实现更快的产品发布。
最后,与 AI “接管”任何业务活动的主流观点相比,AI 能够帮助非技术用户轻松参与测试过程。它通过人工智能驱动式工具将更多的人员引入这一过程,而这些工具对测试人员的经验要求较低。
完全托管的单租户服务,用于开发和交付 Java 应用程序。
使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。
云应用程序开发意味着一次构建、快速迭代和随处部署。