概述
本文作者批判性地审视了 Playwright 因其清晰的架构而在现代性和速度上优于 Selenium 的说法。
摘要
作者批判性地审视了YouTube视频中的一个观点,即”Playwright是一个比Selenium更优越的Web自动化测试框架”。作者认为,由于Playwright具有清晰的架构,因此它比Selenium更现代、更快的说法是错误的。作者提供了证据来支持这一论点,包括”新并不一定意味着更好”,以及软件测试人员可能并不关心底层架构。作者还指出,虽然Playwright在某些情况下可能更快,但这尚未通过充分的实践得到证实。最后,作者建议测试人员应专注于手头的工作,而不是炒作工具。
要点列表:
- 作者批判性地审视了Playwright因其清晰的架构而在现代性和速度上优于Selenium的说法。
- 作者认为,”新”并不一定意味着更好,且软件测试人员可能并不关心底层架构。
- 作者指出,虽然Playwright在某些情况下可能更快,但这尚未通过充分的实践得到证实。
- 作者建议测试人员应专注于手头的工作,而不是炒作工具。
引子
最近,我观看了一个YouTube视频,“Playwright vs Selenium:自动化测试大战中的赢家优势是什么”。演讲者所声称的每一个“Playwright优势”在真实的Web自动化测试环境中要么是错误的,要么是不相关的。在本文中,我将详细阐述分析他的以下这些观点:
- “Playwright比Selenium更现代、更快” 😒
- “Playwright支持并行执行”(即将推出)👎🏽
- “Playwright具有原生自动等待机制”👎🏽
- “Playwright具有原生测试运行器”👎🏽
- “Playwright具有原生HTML报告器”👎🏽
- “Playwright功能可以在一个配置中进行配置”👎🏽
- “Playwright支持多种测试类型,如API测试、组件测试等”👎🏽
- “Playwright支持ARIA定位器”👎🏽
- “Playwright具有UI模式、代码生成、调试支持”👎🏽
这位YouTube博主怎么会错得这么离谱?但仔细想想这也很有可能,因为真正的自动化测试工程师是极其罕见的。(谷歌高级工程总监帕特里克·科普兰将他们称之为“黄金”)
说到完全偏离目标,中国国际金融股份有限公司对2023年中国经济做出了10项预测,结果却全部错误!这真的很难,不过,还是有一些“金融专家”做到了。
目录:
· 我对Playwright的看法
-
- 我对Playwright略有了解
-
- 我在我的测试集成开发环境(TestWise)和获奖的CT服务器(BuildWise)中加入了Playwright支持
-
- Selenium WebDriver非常出色
-
- Playwright正在超越Cypress,但并未超越Selenium WebDriver
· 论点1:“Playwright因其清晰的架构而现代并且速度比Selenium快”。错误!
-
- 新 ≠ 现代 ≠ 更好。
-
- “清晰的架构”?我们测试人员真的在乎吗?
-
- “Playwright更快”,有可能。但我还没有见过支持这一点的坚实的Playwright实现。
我对Playwright的客观性
Playwright粉丝心中的第一个问题是,“伙计,你太主观了”。那么,互联网上有多少陈述不是主观的呢,包括“Playwright因其现代性和速度而优于Selenium”这一说法?
与许多人不同,我将提供客观的证据来支持我的陈述。
许多读者都知道,我主要使用原始的Selenium WebDriver + RSpec(自2011年以来)进行Web自动化测试。我也使用过并改进过其他框架,包括Playwright。我的女儿在实习工作中使用了Playwright,并击败了那里的所谓“最资深的自动化测试工程师”(一个有趣的故事)。
此外,我还改进了一些失败的Playwright自动化测试项目(将其升级到原始的Selenium WebDriver)。
我是一个老派的工程师。如果有必要,我会在发表评论之前深入研究新兴的热门技术。在这种情况下,我在我的工具中加入了Playwright支持:TestWise和BuildWise。这也表明我并不是完全反对Playwright;只是我认为它不如Selenium WebDriver那么好。
朋友们可以搜索阅读以下文章(由我女儿撰写):
使用TestWise IDE设置和开发Playwright测试脚本
在BuildWise CT服务器上设置并运行Playwright测试
这是一篇对比文章,所以我必须提及我的Selenium经验,以便那些不太了解我的读者能够了解。
以下是一个关于我的WhenWise应用测试套件的案例研究,该套件包含570个用户故事级别的端到端UI测试,使用原生Selenium WebDriver + RSpec编写。
展示一个500+的端到端(通过UI)测试套件:端到端自动化测试对于我们来说绝对是可行的。
实现端到端自动化测试,这是最有价值的测试类型,也是大多数QA工程师的责任。
zhiminzhan.medium.com
这只是我的Selenium套件之一,它使我能够自2012年以来为我的所有Web应用进行“每日生产发布”。
有一个明显的趋势是Playwright正在取代Cypress(这是我在这篇文章中5个月前的预测。一位技术博主不同意,我使用他提到的参考资料证明了他的错误)。最近的两项独立调查得出了类似的结果:
可以看出,“老牌”的Selenium WebDriver以巨大优势领先。
论点:“Playwright因其清晰的架构而现代且速度比Selenium快”。错误!
Playwright是更新的,但这并不意味着它更“现代”或“更好”。下面的这些失败的自动化测试框架便可证明这一点:
顺便说一句,作者还把架构的名字搞错了。
据我所知,并没有“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 会议上说。
我对测试人员的建议是:专注于手头的工作,而不是炒作。
运行少数几个测试用例可能会显示 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)服务器上运行它们。