无头浏览器的自动化测试如何与真实浏览器中的测试齐头并进?

How does automated testing with a headless browser go hand-in-hand with testing in real browsers?

我一直在研究使用无头浏览器与真实浏览器的优缺点,但我不确定它们是如何组合在一起的。

我的印象是:

了解以上内容后,我该如何构建测试套件?无头浏览器有哪些有价值的用途?

关于您的印象:

Tests in a headless browser run much faster

也许吧。您的里程可能会有所不同。毫无疑问,启动无头浏览器来执行测试 应该 比启动功能齐全的浏览器更快,但整体性能的提升将取决于测试和被测系统。如果一个测试等待 30 秒来执行一个动作,运行在无头浏览器上运行它没有帮助;如果被测系统需要大量时间来响应操作,运行在无头浏览器上运行它也无济于事。

A headless browser will miss certain things that may appear differently on specific browsers

没错。它是具有不同引擎的完全不同的浏览器。在无头浏览器中,测试将捕获不依赖于浏览器的错误和仅在无头浏览器中发生的错误。值得考虑的是,您系统的最终用户通常不会使用无头浏览器,因此您可能不关心只在无头浏览器中发生的错误。

考虑到这一点,为了构建测试套件,请仔细查看您的具体情况:

  • 如果您的代码具有特定于浏览器的行为,您应该通过编写涵盖该特定行为的测试并运行将它们与相关浏览器结合来验证这一点。

  • 但是,必须 运行 在特定浏览器中进行一些 测试并不意味着您的整个套件必须 运行针对 "real" 浏览器。您可以在您的测试套件中针对无头浏览器进行通用测试 运行,特别是如果您的 运行 可以受益于无头浏览器在您的案例中提供的性能改进。

  • 如果您的最终用户主要使用一种浏览器并且您不希望这种情况发生变化,那么也许值得 运行在该浏览器中安装整个套件,将其作为您的主要关注点和参考。您将发现对您的用户最重要的错误,这可能会补偿您因不 运行ning headless 而可能获得的性能损失。

话虽如此,浏览器遵守标准和行为越相似,特定于浏览器的问题和行为发生的次数就越少,因此无头测试的吸引力就越大。