在FutureStack错过了我们的大消息?在我们的圆润博客中阅读有关它的一切。 现在读它

新的遗物是一种软件作为服务(SaaS)提供,因此我们的用户与我们的主要互动通过其Web浏览器发生。不幸的是,我们无法支持每个可用的浏览器,我们也无法手动测试我们支持的浏览器的每个版本。

但我们确实在三个不同平台上支持八个不同浏览器的应用程序,因此自动化的跨浏览器测试对于我们提供基于浏览器的交互点的产品是至关重要的。亚博最新版直播这种类型的测试允许我们跨许多浏览器和平台组合自动化测试运行我们的应用程序。跨多个平台测试8个浏览器对人来说很乏味,但对机器来说很容易。

使用跨浏览器测试,我们编写测试,配置我们支持的浏览器,测试软件在右侧浏览器中运行测试。本质上,测试模拟了在浏览器中与软件交互的用户,并在出现问题时让您知道。

下面是自动化测试的好处和一些要避免的陷阱的几个例子。

主要福利1:测试所有工作的件

开发人员经常使用自动跨浏览器测试作为集成测试.测试针对在浏览器中运行的完整应用程序运行。这些类型的测试可以捕捉到被遗漏的东西单元测试,只有在隔离中测试代码的组件。测试运行的所有代码可以捕获潜在的问题,例如:

  • 跨多个代码组件进行复杂交互时出现的错误。
  • 打破客户端代码的后端API的更改。

关键好处2:测试浏览器的完整UI

许多团队使用依赖的单元测试工具无头浏览器, 喜欢无头铬,在不加载图形UI的情况下运行测试。浏览器模拟器,例如jsdom,团队也用于对浏览器的子集进行测试。此类工具对于大多数单元测试非常重要,但没有真正的UI的测试使得难以对全面浏览器测试应用程序的所有工作流和复杂性。浏览器自动化测试可以帮助涵盖在这种情况下难以写入的测试。它们还有助于确保您的应用程序在浏览器的UI中实际工作。

关键好处3:扩展测试

很长一段时间,严格依赖浏览器测试手工测试,真正的人类测试了您的申请。手动测试始终是重要的,因为有些人注意到他们无法自动化的事情。但是,开发团队通常具有有限的资源可用于手动测试。随着申请的增长,手动覆盖一切是不切实际的,事情开始落下裂缝。另一方面,自动跨浏览器测试可帮助您扩展测试,并允许您将手动测试集中在最需要的区域。

避免片质测试

自动化跨浏览器测试的最大陷阱是不稳定的测试。如果您的测试间歇性地失败,人们就不再信任它们。他们开始忽略失败,注释掉测试,并最终完全关闭它们。下面是一些导致薄片测试的常见原因和避免它们的建议。

避免片质软件

有时你的测试是片状的,因为他们正在测试的东西是片状的。如果您的自动化测试定期达到错误,您的用户也有合理的机会。这里的问题不是自动化测试 - 您可能需要花时间来修复这些错误。

如果您的团队已决定那些错误永远不会修复,则应删除定期击中它们的自动化测试。这允许您专注于您计划维护的代码路径的可靠测试。

避免时间问题

异步加载内容时,定时问题是一个常见问题。用户在尝试与页面交互之前,会直觉地等待加载指示器完成。需要对自动化测试进行编程来实现这一点。Selenium(将在下面讨论)允许您等待页面上的元素存在(或不存在),然后再继续前进。仔细地使用这些方法可以让您的自动化测试处理这些问题。

时间问题可以来自缓慢的应用程序。大多数测试框架都有超时限制。如果您的应用程序很慢,您可能会达到这些超时并因此具有测试失败。一个解决方案是增加超时。另一种解决方案是调查为什么您的应用程序缓慢并采取措施提高性能。

从历史上看,由于特定浏览器的运行速度非常慢,因此存在与它们相关的超时问题。值得庆幸的是,我们只支持现代浏览器,所以我们不太可能遇到这个特定的问题。

避免不稳定的数据

如果一个应用程序依赖于经常变化的数据,那么自动化测试就会很脆弱。例如,如果New Relic中的一个应用突然开始发出警告,因为它突然停止收集数据,我们的测试无疑会失败。

我们建议对稳定的数据集进行自动化测试。如果您的测试依赖于测试中的不稳定数据集,则在失败时,您将最终忽略它们。

避免耗时的测试

在构建大型应用程序时,自动化测试的数量可能会变大而笨重,特别是如果您将它们运行,则作为拉索请求过程的一部分。如果拉出请求作业需要20分钟运行,则会很难快速变化。在这种情况下,您应该将您的测试与不同的用例中的不同集合中断。

对于临界功能的较小测试,通常被称为烟雾测试,可以与拉出请求一起运行。然后,可以在部署或定期间隔后运行较长运行测试的完整列表,以便在发生故障时通知您。这种混合方法允许您在仍然存在于生产之前捕获问题,同时仍然保持相对较快的拉动请求过程。

最好的跨浏览器自动化测试工具

在新遗物中,我们使用两种工具 - 硒和酱油实验室来执行我们的跨浏览器自动化测试。这些工具的最佳部分是您不需要深入了解他们的内部人员来使用它们。这是他们为我们工作的方式:

是一套工具,可在许多平台上自动化Web浏览器,包括硒韦伯里夫,这是一个非常流行的浏览器自动化测试工具。

WebDriver使用浏览器对自动化的原生支持直接调用每个浏览器。每个浏览器都以自己的方式处理这些直接调用,并有自己的一组受支持的特性。参考每个浏览器驱动程序的文档:

WebDriver提供了一个没有绑定到任何特定测试框架的API。有一些测试库和框架可以与WebDriver一起工作,适用于你可能想要编写自动化测试的每种语言。在New Relic,我们使用了以下测试和框架:

除了测试库外,硒还提供了整体生态系统帮助您运行自动化测试的服务和工具。

酱实验室

虽然它完全可以运行测试,但是管理测试所需的所有平台和浏览器所需的基础架构可以是一个巨大的资源漏极。酱实验室但是,提供了基础架构,因此您可以编写自动化测试,而无需聘请整个团队来管理运行所需的资源。

基于对安全性的关注,Sauce Labs从它们自己的数据中心提供了一次性虚拟机,您可以在真正的浏览器中运行Selenium测试。在运行测试之后,Sauce Labs将销毁您使用的任何VM,因此您的数据永远不会暴露给未来的会话。它们还提供代理服务,因此您可以安全地在防火墙后面测试应用程序。

在用户之前发现问题

在理想情况下,在一个浏览器中测试您的应用程序意味着它将在所有浏览器中正常工作。不幸的是,浏览器的行为并不都是相同的,这可能会导致用户在不太可能测试和开发但仍然需要支持的浏览器和平台上的体验下降。在用户发现问题之前,使用自动跨浏览器尽早发现问题。