(图片来源网络,侵删)
我们都希望为 Web 应用程序构建易维护的测试作为这个目标的一部分,我们都希望能集中精力在测试本身,而尽量避免困在实施的具体细节中从长远来看,测试应该是可维护的,对软件定期的变更并不会破坏测试本身或者让团队的开发节奏变慢迭代速度 / 现实环境某些测试工具可以在做出更改和查看结果之间提供简短的反馈循环,但不能精确地模仿浏览器的行为其他工具可能会使用实际的浏览器环境,但会降低迭代速度,并且在连续集成系统中可能会变得更加脆弱Selenium知名的浏览器 web 应用测试框架,可以用 Java、C#、Ruby、JavaScript、R 和 Python 等多种编程语言编写测试案例Selenium 为每种语言提供客户端 APISelenium 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.ioWatirWatir 是一个 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 在安装后不会自动下载 Chromiumpuppeteer 的主要缺点是缺乏跨浏览器功能,因为它仅适用于基于 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/overviewIBM 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-testerJestJest 是一个 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官网,获取最新资讯~
0 评论