迭代速率 / 现实环境
某些测试工具可以在做出变动和查当作果之间供应简短的反馈循环,但不能精确地模拟浏览器的行为。其他工具可能会利用实际的浏览器环境,但会降落迭代速率,并且在连续集成系统中可能会变得更加薄弱。
有名的浏览器 web 运用测试框架,可以用 Java、C#、Ruby、JavaScript、R 和 Python 等多种编程措辞编写测试案例。

Selenium 为每种措辞供应客户端 API。
Selenium WebDriver 尽可能利用原生操作系统级别的功能,而非基于浏览器 JavaScript 的命令来驱动浏览器。
这样就绕过了原生功能和 JavaScript 命令之间由于细微差别而产生的问题(包括安全限定)。它供应了很大的灵巧性,乃至还支持 iframe 和多个浏览器标签。
卓越的跨浏览器功能令人印象深刻。可以在主流浏览器(Chrome、Firefox、Safari、Edge、Internet Explorer)上实行 Selenium 测试。
Selenium Grid 可以与 WebDriver 一起利用,以在远程系统上实行测试。
利用 Selenium 的唯一缺陷是,它须要大量的技能,并且编写测试非常耗时。对没有编程履历的人来说,乍一看用 Selenium 编写测试彷佛很随意马虎;但是如果没有最佳实践,将导致项目内的测试自动化框架难以掩护且不足稳定可靠。
https://www.selenium.dev/
EndtestEndtest 是智能自动化测试办理方案,它利用多个开源和闭源组件去简化创建和实行测试的流程。个中之一便是 Recorder 组件可以让用户不用编程技巧就能创建和实行测试。你可以用图形化界面编辑管理自己的测试案例,而不用编写任何代码。
它和 Selenium 一样拥有灵巧性,许可你自动化测试场景,个中包含 iframe、多个浏览器标签、文件上传、ShadowDOM, 等等。它同 Selenium 一样拥有跨浏览器的特性, 支持所有主流的浏览器(Chrome、Firefox、Safari、Edge、Internet Explorer)。同时,它也包括跨浏览器的云框架,支持 Windows、Mac 以及移动设备上的浏览器。
此外,它还有支持 JavaScripts 实行的组件,以及发送 API 要乞降连接数据库实行 SQL 语句的组件。
这些组件可用于在测试中添加额外的验证步骤,并可准备或清理测试环境。
https://endtest.io
WatirWatir 是一个 Ruby 的浏览器自动化测试开源库。
Watir 与对浏览器的互动办法和人类是一样的:如点击一个网页元素,填输入字符。
它的底层利用了 Selenium 并且供应同样的灵巧性,也支持跨浏览器。同时,它也支持 iframes 以及多个浏览器标签。
Watir 最大的优点是 API 很随意马虎利用,它在繁复的 Selenium API 之上增加了一层大略性。
不过,它的紧张缺陷是,它不如 Selenium 受欢迎,在探求答案和解决方案方面你会碰着一些困难。
http://watir.com/
Puppeteer一个 Node 库,它供应了高等的 API 并通过 DevTools 协议来掌握 Chrome(或 Chromium)。
我认为未来它可以代替 Selenium。它也具有支持 iframe 和多个浏览器标签的灵巧性。
值得一提的是,它有 2 种不同的软件包:puppeteer-core 和 puppeteer
唯一的差异是 puppeteer-core 在安装后不会自动*** Chromium。
puppeteer 的紧张缺陷是缺少跨浏览器功能,由于它仅适用于基于 Chromium 的浏览器。
纵然 Opera 和 Edge 迁移到 Chromium,也无法担保 Firefox 和 Safari 将来也会这样做。
另一个缺陷是,唯一受支持的措辞是 Node.js。纵然到 2020 年统统彷佛都环绕 JS 展开,但是仍旧有一些用户可能想利用其他措辞进行自动化测试的开拓。
https://pptr.dev/
Playwright一个 Node 库,可通过单个 API 在 Chromium、Firefox 和 WebKit 浏览器上实行自动化测试。
Playwright 旨在不断增长的 Web 浏览器集上实现自动化操作。Playwright 类似于 Puppeteer。
它支持多页面、多域名和 iframes 测试,还可以仿照移动端设备,地理指向和权限掌握也是可以测试的。
纵然它具有更广泛的跨浏览器支持,但它也不支持 Internet Explorer。
由于它是一个相对较新的库,以是你可能现在在线上找不到很多资源。
如果你在编写 Node.js 代码方面有踏实的履历,那么 Playwright 可以一试。
https://playwright.dev/
Sikuli在运行 Windows、Mac 或 Linux 的台式打算机屏幕上看到的任何内容,都可以利用 Sikuli 实行自动化测试。
它利用由 OpenCV 支持的图像识别来识别视觉组件。如果无法轻松访问 GUI 内部或要操作的运用程序或网页的源代码,这个工具会非常方便。实际上,这是大多数当代 RPA 办理方案背后的技能。
Sikuli 的优点是,元素具有唯一属性或属性是否变动都无关紧要,由于 Sikuli 仅依赖于视觉识别。
它的紧张缺陷是视觉容忍度让用户很难在不同的浏览器和屏幕尺寸之间实现自动化。
并且,利用 Sikuli 库须要编程技巧,并且你可以在 Python、Ruby 和 Java 之间选择。
如果你有涉及 Web 运用程序和桌面运用程序的稠浊自动化测试,则较好的做法是将 Selenium 用于 Web 组件,将 Sikuli 用于桌面组件。
http://sikulix.com/
Micro Focus UFT (QTP)专有办理方案,以前称为 QuickTest Professional(QTP)。它供应了使 Web 运用程序和桌面运用程序自动化的功能。
它利用 Visual Basic 脚本措辞来定位运用程序中的元素并与之交互。同时,它还供应了一个 IDE,你只需在 GUI 中创建一个流程即可在不编写任何代码的情形下构建测试。
该工具已经存在很永劫光,并且确实使 Selenium 失落去了很多市场份额。
https://www.microfocus.com/en-us/products/uft-one/overview
IBM Rational Functional Tester一个供应功能、回归、GUI 和数据驱动测试的自动化测试的专业工具。它确实包括有限的跨浏览器功能,由于它仅适用于 Chrome、Firefox 和 Internet Explorer。紧张优点是它还可用于自动化桌面运用程序。
上风之一是它具有 Eclipse Java Developer Toolkit 编辑器,这让你的团队可以轻松地利用 Eclipse 在 Java 中编写测试脚本。自带的 IDE 工具箱编辑器包含以下功能,如代码自动完成和高等调试选项。
将 IBM Rational Functional Tester 与 CI/CD 系统集成可能会很困难,由于它被设计用在你自己的事情站上
https://www.ibm.com/us-en/marketplace/rational-functional-tester
JestJest 是一个 JavaScript 框架,许可你通过 jsdom 访问 DOM。
值得一提的是,jsdom 只是浏览器事情办法的一个近似值,用于 React 运用程序的测试框架,但不是跨浏览器测试的可靠选择。
Jest 确实供应了良好的迭代速率,并且具有强大的功能,例如仿照模块和计时器。
空想情形下,开拓职员应利用它来测试某些组件,但结果不能担保该运用程序在实际的浏览器中可以正常事情。
https://jestjs.io/
CucumberCucumber 是一个开源的行为驱动测试工具,支持多种编程措辞,包括 Ruby,Java,Scala 和 Groovy。
创建测试案例须要编程技能。实际功能可以通过利用 Gherkin 来调用。
利用 Cucumber 的明显上风是,非技能用户可以轻松理解这些方案。
可以说 Cucumber 并不是 Selenium 的替代品,而仅仅是对 Selenium 进行了一层包装。
Selenium 和 Cucumber 的组合可提高代码的可读性,并使其更易于重用组件。
https://cucumber.io/
原文链接:
https://medium.com/swlh/the-10-best-test-automation-tools-a51e76c091df
延伸阅读:
网易CI/CD实践(下):测试自动化及API版本管理-InfoQ
移动金融类 APP 自动化测试平台技能揭秘-InfoQ
敏捷交付中的自动化测试-InfoQ
关注我并转发此篇文章,私信我“领取资料”,即可免费得到InfoQ代价4999元迷你书,点击文末「理解更多」,即可移步InfoQ官网,获取最新资讯~