什么是端到端测试?

4,665 阅读7分钟

端到端测试,也被称为E2E测试,是一种方法,用于确保应用程序的行为符合预期,并确保各种用户任务和流程的数据流得到保持。这种类型的测试方法从最终用户的角度出发,模拟真实世界的场景。例如,在一个注册表格上,你可以期望用户执行一个或多个这样的动作。

  • 输入一个空白的电子邮件和密码
  • 输入一个有效的电子邮件和密码
  • 输入一个无效的电子邮件和密码
  • 点击一个注册按钮

你可以使用端到端测试来验证所有这些操作是否如用户所期望的那样工作。

端到端测试听起来很全面,但还有许多其他的测试方法,你应该和它一起使用,以创建一个强大的持续集成实践。你应该考虑的其他一些测试类型。

  • 单元测试确保系统中的每一个组件都能按预期工作。
  • 功能测试确保系统对某一特定输入给出正确的输出。
  • 集成测试将各个软件模块结合在一起,作为一个整体进行测试。

这些类型的测试与端到端测试不同,后者侧重于完整的用户工作流程。

为什么端到端测试很重要?

端到端测试已被广泛采用,因为它。

  • 通过添加比其他测试方法(如单元和功能测试)更详细的测试案例,帮助团队扩大他们的测试范围。
  • 通过运行基于终端用户行为的测试用例,确保应用程序的正确执行。
  • 帮助发布团队缩短上市时间,允许他们自动化关键用户路径。
  • 通过减少测试软件的时间,降低构建和维护软件的总体成本。
  • 有助于可预测地、可靠地检测错误。

端到端测试吸引了包括开发人员、测试人员、管理人员和用户在内的多学科群体。开发人员受益于此,因为他们可以把大部分测试和质量保证的工作交给QA团队,让开发人员腾出手来为应用程序增加功能。测试人员更容易编写端到端测试,因为它们是基于用户的行为,可以在可用性测试中观察到并记录在票据中。端到端测试使得在将软件发布给最终用户之前抓住问题变得更加简单。通过确定一个工作流程对现实世界的用户的重要性,端到端测试帮助管理人员确定开发积压任务的优先次序。

端到端测试还可以改善用户体验。特别是对于需要大量用户交互的应用程序,如网络、桌面和移动应用程序,用户的期望是测试案例的基础。

端到端测试的挑战

端到端测试是测试软件的好方法,但它也有一些挑战。挑战的出现是因为端到端测试。

  • 很耗时。
  • 必须设计成重现真实世界的场景。
  • 需要对用户目标有很好的理解。

消耗时间

端到端测试是很耗时的,因为写测试用例需要对产品有一个完整的了解。在一个大型的软件产品中,用户可以遵循许多路径,很少值得去测试每一条路径。相反,公司通常会更多地使用单元测试、快照测试和集成测试,并对优先级最高的用户工作流使用端到端测试。

难以设计测试

因为端到端测试模拟了用户的真实行为,在设计这些测试时,有许多组件需要考虑。

例如,你可以在许多浏览器上运行一个网络应用程序,而每个浏览器都有不同的规格。这意味着你必须编写针对这些浏览器的测试。这项艰巨的任务会导致预算超支。在测试驱动的开发中,你正在寻找对代码的快速反馈,依靠端到端的测试并不是一个好方法。

了解用户目标

用户不是在寻找功能:他们在寻找解决他们的具体问题。端到端测试应该关注应用程序如何有效地解决用户的问题。

问题是,不是所有的开发团队都能详细了解用户的意图。所以,他们必须在软件开发的早期部署方法,收集用户对软件运作的看法。用户研究的成本可能相当高,所以团队经常依靠同一组用户作为应用程序的 "测试者 "来工作。

如何实施端到端测试

现在你知道你想在开发过程中加入一些端到端的测试,你从哪里开始呢?设计端到端测试案例是很好的第一步。然后,你可以从手动测试开始,直到开始自动化你的端到端测试。

设计端到端的测试用例

因为端到端测试需要一些准备,熟悉实施这些测试的步骤是很好的。下面是一个典型的端到端测试程序的步骤。

  • 审查需求,以验证端到端测试结果。
  • 设置测试环境和要求。
  • 定义系统和子系统的所有过程。
  • 描述每个系统和子系统的角色和责任。
  • 概述测试工具和框架。
  • 列出设计测试案例的要求。
  • 列出每个系统的输入和输出数据。

一旦你经历了这些步骤,你就可以实施端到端测试。

人工端到端测试

手动测试是由人类测试人员直接与测试软件进行互动。这些测试人员在编写测试计划时,可以迅速了解什么是有效的,什么是无效的。人工测试有助于确定测试用例,帮助测试人员发现系统中隐藏的用户交互路径。这给测试人员提供了他们所需要的信息,以便在未来开始自动化这些测试案例。手工建立的测试计划和测试用例可以成为自动化测试。

有两种方法来做手工测试:水平和垂直。

横向的端到端测试覆盖整个应用程序。它要求软件开发团队有明确的工作流程和建立的测试环境。一个测试工作流程可以跨越多个子系统。一个同时测试用户界面、数据库和电子邮件集成的计划就是一个水平端到端测试的例子。

垂直端到端测试将应用程序分解成可以单独测试的层。由于这种粒度,垂直端到端测试往往先于水平测试。例如,对用户界面子系统进行垂直端到端测试,可以很容易地识别和修复错误。

自动化的端到端测试

随着你的项目的增长,手动执行所有的端到端测试将变得不太容易管理。在测试用户界面时尤其如此,因为用户界面中的一个动作会导致许多其他动作。这种复杂性使得测试自动化变得至关重要。端到端测试可以帮助实现用户交互测试的自动化,节省宝贵的时间。

一旦你决定了测试案例,你可以把它们写成代码,并与自动化测试工具集成。例如,你可以使用CI/CD管道来自动进行软件的端到端测试。

随着软件获得新功能的速度,自动化软件测试是唯一可行的选择。自动化使你能更快地抓住错误,因为每次你添加新代码时,整个代码库都会自动对照测试用例进行检查。

总结

这篇文章回顾了什么是端到端测试,描述了它的好处和挑战。涵盖了端到端测试的实施技术,包括水平测试,垂直测试,以及手动和自动测试之间的区别。

手动测试是一个很好的开始,也是建立自动测试的一个良好基础。自动化不仅可以节省时间,防止复杂化,而且可以让你的团队做他们最擅长的事情--开发应用程序。