纠错:"Playwright比Selenium更现代、更快速"

2024-09-01   出处: medium  作/译者:Zhimin Zhan/Ares

概述

本文作者批判性地审视了 Playwright 因其清晰的架构而在现代性和速度上优于 Selenium 的说法。

摘要

作者批判性地审视了YouTube视频中的一个观点,即”Playwright是一个比Selenium更优越的Web自动化测试框架”。作者认为,由于Playwright具有清晰的架构,因此它比Selenium更现代、更快的说法是错误的。作者提供了证据来支持这一论点,包括”新并不一定意味着更好”,以及软件测试人员可能并不关心底层架构。作者还指出,虽然Playwright在某些情况下可能更快,但这尚未通过充分的实践得到证实。最后,作者建议测试人员应专注于手头的工作,而不是炒作工具。

要点列表:

  1. 作者批判性地审视了Playwright因其清晰的架构而在现代性和速度上优于Selenium的说法。
  2. 作者认为,”新”并不一定意味着更好,且软件测试人员可能并不关心底层架构。
  3. 作者指出,虽然Playwright在某些情况下可能更快,但这尚未通过充分的实践得到证实。
  4. 作者建议测试人员应专注于手头的工作,而不是炒作工具。

引子

最近,我观看了一个YouTube视频,“Playwright vs Selenium:自动化测试大战中的赢家优势是什么”。演讲者所声称的每一个“Playwright优势”在真实的Web自动化测试环境中要么是错误的,要么是不相关的。在本文中,我将详细阐述分析他的以下这些观点:

  • “Playwright比Selenium更现代、更快” 😒
  • “Playwright支持并行执行”(即将推出)👎🏽
  • “Playwright具有原生自动等待机制”👎🏽
  • “Playwright具有原生测试运行器”👎🏽
  • “Playwright具有原生HTML报告器”👎🏽
  • “Playwright功能可以在一个配置中进行配置”👎🏽
  • “Playwright支持多种测试类型,如API测试、组件测试等”👎🏽
  • “Playwright支持ARIA定位器”👎🏽
  • “Playwright具有UI模式、代码生成、调试支持”👎🏽

这位YouTube博主怎么会错得这么离谱?但仔细想想这也很有可能,因为真正的自动化测试工程师是极其罕见的。(谷歌高级工程总监帕特里克·科普兰将他们称之为“黄金”)

说到完全偏离目标,中国国际金融股份有限公司对2023年中国经济做出了10项预测,结果却全部错误!这真的很难,不过,还是有一些“金融专家”做到了。

目录:

· 我对Playwright的看法

    1. 我对Playwright略有了解
    1. 我在我的测试集成开发环境(TestWise)和获奖的CT服务器(BuildWise)中加入了Playwright支持
    1. Selenium WebDriver非常出色
    1. Playwright正在超越Cypress,但并未超越Selenium WebDriver

· 论点1:“Playwright因其清晰的架构而现代并且速度比Selenium快”。错误!

    1. 新 ≠ 现代 ≠ 更好。
    1. “清晰的架构”?我们测试人员真的在乎吗?
    1. “Playwright更快”,有可能。但我还没有见过支持这一点的坚实的Playwright实现。

我对Playwright的客观性

Playwright粉丝心中的第一个问题是,“伙计,你太主观了”。那么,互联网上有多少陈述不是主观的呢,包括“Playwright因其现代性和速度而优于Selenium”这一说法?

与许多人不同,我将提供客观的证据来支持我的陈述。

  1. 我对Playwright略有了解

许多读者都知道,我主要使用原始的Selenium WebDriver + RSpec(自2011年以来)进行Web自动化测试。我也使用过并改进过其他框架,包括Playwright。我的女儿在实习工作中使用了Playwright,并击败了那里的所谓“最资深的自动化测试工程师”(一个有趣的故事)。

此外,我还改进了一些失败的Playwright自动化测试项目(将其升级到原始的Selenium WebDriver)。

  1. 我在我的测试集成开发环境(TestWise)和获奖的CT服务器(BuildWise)中加入过Playwright支持

我是一个老派的工程师。如果有必要,我会在发表评论之前深入研究新兴的热门技术。在这种情况下,我在我的工具中加入了Playwright支持:TestWise和BuildWise。这也表明我并不是完全反对Playwright;只是我认为它不如Selenium WebDriver那么好。

朋友们可以搜索阅读以下文章(由我女儿撰写):

使用TestWise IDE设置和开发Playwright测试脚本

在BuildWise CT服务器上设置并运行Playwright测试

  1. Selenium WebDriver非常出色

这是一篇对比文章,所以我必须提及我的Selenium经验,以便那些不太了解我的读者能够了解。

以下是一个关于我的WhenWise应用测试套件的案例研究,该套件包含570个用户故事级别的端到端UI测试,使用原生Selenium WebDriver + RSpec编写。

展示一个500+的端到端(通过UI)测试套件:端到端自动化测试对于我们来说绝对是可行的。

实现端到端自动化测试,这是最有价值的测试类型,也是大多数QA工程师的责任。

zhiminzhan.medium.com

这只是我的Selenium套件之一,它使我能够自2012年以来为我的所有Web应用进行“每日生产发布”。

  1. Playwright正在超越Cypress,但尚未超越Selenium WebDriver。

有一个明显的趋势是Playwright正在取代Cypress(这是我在这篇文章中5个月前的预测。一位技术博主不同意,我使用他提到的参考资料证明了他的错误)。最近的两项独立调查得出了类似的结果:

可以看出,“老牌”的Selenium WebDriver以巨大优势领先。

论点:“Playwright因其清晰的架构而现代且速度比Selenium快”。错误!

  1. 新≠现代≠更好。

Playwright是更新的,但这并不意味着它更“现代”或“更好”。下面的这些失败的自动化测试框架便可证明这一点:

  1. “清晰的架构”?我们测试人员真的在乎这个吗?

顺便说一句,作者还把架构的名字搞错了。

据我所知,并没有“Chrome Driver Protocol”这样的东西😱。他可能指的是“Chrome DevTools Protocol”(CDP)。如果是这样,Selenium v4也支持它。

从架构的角度来看,Selenium WebDriver 显然更胜一筹。为什么呢?因为它符合由顶级专家多年设计和完善的 WebDriver 标准。W3C 为所有网络技术设定了标准,所有浏览器供应商都支持 WebDriver。还有谁能超越这一点呢?

软件测试人员真的需要关心底层架构吗?我认为不需要。我认为自己是一个技术高超、亲自动手的自动化测试工程师(100X 和国际获奖程序员),并且已经用过了数十种自动化测试框架/工具。在担任自动化测试人员的工作时,我从未想过自动化测试框架的架构问题。

例如,使用Selenium WebDriver点击一个链接:

driver.find_element(:link, "TestWise").click

我需要关心WebDriver使用的底层JSON协议吗?在编写关于Selenium WebDriver的书籍时,我确实会关心,但在编写脚本步骤时则不需要。

对于Web自动化测试来说,知道一个框架符合W3C标准并且得到了主要浏览器供应商的支持,对我来说就足够了。

“Facebook 每天发布两次,保持这种发布速度是我们文化的核心。在这种发布速度下,使用 Selenium 进行自动化测试对于确保发布前一切正常至关重要。”——Facebook 工程总监 DAMIEN SERENI 在 2013 年 Selenium 会议上说。

我对测试人员的建议是:专注于手头的工作,而不是炒作。

  1. “Playwright 更快”,也许吧。但我还没见过支持这一点的可靠 Playwright 项目实现。

运行少数几个测试用例可能会显示 Playwright 稍微快一些,但差异很小(正如几个基准测试所揭示的,这里还没有加入并行执行,我将在另一篇文章中解释这一点)。记得 Cypress 也曾这么声称过。

Cypress 的声明没有提供任何证明(测试套件和时间)。像这样的各种基准测试表明,Cypress 在 Selenium、Cypress 和 Playwright 中是最慢的。所以,“快很多很多”只是一个笑话。

对于单个端到端测试用例的执行,几乎所有的 Web 自动化框架都足够快。毕竟,大部分端到端测试的执行时间都在应用本身上。

请注意,在少数样本测试上快速执行(我称之为演示模式)并不意味着它在执行大型测试套件时仍然会很快。此外,请不要与之将这里的 Playwright 并行模式混淆。

“由于 CDP(Chrome DevTools Protocol)的设计目的,它是一个通信协议,而不是一个面向用户的 API,允许你深入了解浏览器。更糟糕的是,在测试和浏览器之间引入了网络跳跃,这种频繁的通信导致测试速度变慢,因为网络延迟增加了。”——Simon Stewart,2020年11月6日

我们关心的是大型测试套件(比如 200 个端到端用户故事级别的测试)的执行速度。然而,我从未见过一个使用 Cypress 或 Playwright 进行自动化测试的实现能达到 OK 级别的案例。我对 OK 级别的定义(AgileWay 持续测试评级的第二级)是:每天运行 50 个用户故事级别的 UI 测试,并且在大多数日子里这些测试都保持有效。这个要求并不高,对吧?但我从未见过使用 Cypress 或 Playwright 的项目案例能达到这个要求。所有成功的案例都是使用 Selenium WebDriver。

在速度方面,请查看我的文章《Playwright vs Selenium 速度比较》。对于单个测试用例的执行,差异很小(这是另一个基准测试)。对于真正的 Web 自动化测试,如果你有一个大型测试套件,你需要在并行测试实验室中的性能良好的持续测试(Continuous Testing, CT)服务器上运行它们。


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
130° /1300 人阅读/0 条评论 发表评论

登录 后发表评论