首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

10款好用的自动化测试工具

我们都希望为我们的Web应用程序构建易维护的测试。作为这个目标的一部分,我们都希望能集中精力在测试本身,而尽量避免困在实施的具体细节中。从长远来看,测试应该是可维护的,对软件定期的变更并不会破坏测试本身或者让团队的开发节奏变慢。

迭代速度/现实环境

某些测试工具可以在做出更改和查看结果之间提供简短的反馈循环,但不能精确地模仿浏览器的行为。其他工具可能会使用实际的浏览器环境,但会降低迭代速度,并且在连续集成系统中可能会变得更加脆弱。

1. Selenium

知名的浏览器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编写测试似乎很容易;但是如果没有最佳实践,将导致项目内的测试自动化框架难以维护且不够稳定可靠。

2. Endtest

Endtest是智能自动化测试解决方案,它使用多个开源和闭源组件去简化创建和执行测试的流程。其中之一就是Recorder组件可以让用户不用编程技巧就能创建和执行测试。你可以用图形化界面编辑管理自己的测试案例,而不用编写任何代码。

它和Selenium一样拥有灵活性,允许你自动化测试场景,其中包含iframe、多个浏览器标签、文件上传、ShadowDOM, 等等。它同Selenium一样拥有跨浏览器的特性, 支持所有主流的浏览器(Chrome、Firefox、Safari、Edge、Internet Explorer)。同时,它也包括跨浏览器的云框架,支持Windows、Mac 以及移动设备上的浏览器。

此外,它还有支持JavaScripts执行的组件,以及发送API 请求和连接数据库执行SQL语句的组件。

这些组件可用于在测试中添加额外的验证步骤,并可准备或清理测试环境。

3. Watir

Watir是一个Ruby的浏览器自动化测试开源库。

Watir与对浏览器的互动方式和人类是一样的:如点击一个网页元素,填输入字符。

它的底层使用了Selenium并且提供同样的灵活性,也支持跨浏览器。同时,它也支持iframes以及多个浏览器标签。

Watir最大的优点是API很容易使用,它在繁复的Selenium API之上增加了一层简单性。

不过,它的主要缺点是,它不如Selenium受欢迎,在寻找答案和解决方案方面你会遇到一些困难。

4. 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展开,但是仍然有一些用户可能想使用其他语言进行自动化测试的开发。

5. Playwright

一个Node库,可通过单个API在Chromium、Firefox和WebKit浏览器上执行自动化测试。

Playwright旨在不断增长的Web浏览器集上实现自动化操作。Playwright类似于Puppeteer。

它支持多页面、多域名和iframes测试,还可以模拟移动端设备,地理指向和权限控制也是可以测试的。

即使它具有更广泛的跨浏览器支持,但它也不支持Internet Explorer。

因为它是一个相对较新的库,所以你可能现在在线上找不到很多资源。

如果你在编写Node.js代码方面有扎实的经验,那么Playwright可以一试。

6. Sikuli

在运行Windows、Mac或Linux的台式计算机屏幕上看到的任何内容,都可以使用Sikuli执行自动化测试。

它使用由OpenCV支持的图像识别来识别视觉组件。如果无法轻松访问GUI内部或要操作的应用程序或网页的源代码,这个工具会非常方便。实际上,这是大多数现代RPA解决方案背后的技术。

Sikuli的优点是,元素具有唯一属性或属性是否更改都无关紧要,因为Sikuli仅依赖于视觉识别。

它的主要缺点是视觉容忍度让用户很难在不同的浏览器和屏幕尺寸之间实现自动化。

并且,使用Sikuli库需要编程技巧,并且你可以在Python、Ruby和Java之间选择。

如果你有涉及Web应用程序和桌面应用程序的混合自动化测试,则较好的做法是将Selenium用于Web组件,将Sikuli用于桌面组件。

7. Micro Focus UFT  (QTP)

专有解决方案,以前称为QuickTest Professional(QTP)。它提供了使Web应用程序和桌面应用程序自动化的功能。

使用Visual Basic脚本语言来定位应用程序中的元素并与之交互。同时,它还提供了一个IDE,你只需在GUI中创建一个流程即可在不编写任何代码的情况下构建测试。

该工具已经存在很长时间,并且确实使Selenium失去了很多市场份额。

8. IBM Rational Functional Tester

一个提供功能、回归、GUI和数据驱动测试的自动化测试的专业工具。它确实包括有限的跨浏览器功能,因为它仅适用于Chrome、Firefox和Internet Explorer。主要优点是它还可用于自动化桌面应用程序。

优势之一是它具有Eclipse Java Developer Toolkit编辑器,这让你的团队可以轻松地使用Eclipse在Java中编写测试脚本。自带的IDE工具箱编辑器包含以下功能,如代码自动完成和高级调试选项。

IBM Rational Functional Tester与CI/CD系统集成可能会很困难,因为它被设计用在你自己的工作站上

9. Jest

Jest是一个JavaScript框架,允许你通过jsdom访问DOM。

值得一提的是,jsdom只是浏览器工作方式的一个近似值,用于React应用程序的测试框架,但不是跨浏览器测试的可靠选择。

Jest确实提供了良好的迭代速度,并且具有强大的功能,例如模拟模块和计时器。

理想情况下,开发人员应使用它来测试某些组件,但结果不能保证该应用程序在实际的浏览器中可以正常工作。

10. Cucumber

Cucumber是一个开源的行为驱动测试工具,支持多种编程语言,包括Ruby,Java,Scala和Groovy。

创建测试案例需要编程技术。实际功能可以通过使用Gherkin来调用。

使用Cucumber的明显优势是,非技术用户可以轻松理解这些方案。

可以说Cucumber并不是Selenium的替代品,而仅仅是对Selenium进行了一层包装。

Selenium和Cucumber的组合可提高代码的可读性,并使其更易于重用组件。

原文链接:

https://medium.com/swlh/the-10-best-test-automation-tools-a51e76c091df

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/5aRJ4CuYqDNzYy3sLRD4
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券