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

2020 年 11 月 05 日

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

2020 年 11 月 05 日 14:321411

评论

发布
暂无评论
发现更多内容

在网上的AG账户登录异常说是涉嫌套利不给办理取出怎么办?

Geek_a6658e

专业出黑团队

作业-第6周

arcyao

食堂就餐卡系统设计

cc

架构师训练营一期学习心得

cc

一次有效的产品需求头脑风暴

Bruce Talk

敏捷开发 Agile Product Owner

一万三千字的HashMap面试必问知识点详解

云流

Java 编程 面试 计算机

架构师训练营第 1 期 -- 第十周作业

发酵的死神

极客大学架构师训练营

刘华:我最近听到最对味的话,就是“先Scale down再Scale out”

刘华Kenneth

DevOps 敏捷

在Spring data中使用r2dbc

程序那些事

WebFlux R2DBC 程序那些事 spring data spring-data-r2dbc

初学小白你不知道的C语言经典算法(附带答案)

ShenDu_Linux

c++ 程序员 算法 C语言 数据结构与算法

第十周作业

fmouse

极客大学架构师训练营

架构师训练营 1 期第 10 周:模块分解 - 总结

piercebn

极客大学架构师训练营

第十周总结

fmouse

极客大学架构师训练营

试试,阿里P7的笔试题:多线程按序打印如何实现?

Java架构师迁哥

架构师Week6总结

lggl

总结

redis 基础数据 sets 业务场景分析

sinsy

redis 业务场景分析

今日份学习之Spring Boot自动配置实现原理

比伯

Java 编程 架构 面试 计算机

刘华:上云后,你的架构设计可以更飞

刘华Kenneth

云计算 架构设计 技术选型 云平台

Java-Mock简化单元测试

落日楼台H

Java 测试 单元测试 Mock Mock测试框架

架构师训练营—第十周作业

Geek_shu1988

《华为数据之道》读书笔记:第 5 章 面向“联接共享”的数据底座建设

方志

大数据 数据中台 数据仓库 数字化转型

LeetCode题解:860. 柠檬水找零,模拟情境,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

如果不想你被称做掉包侠,那么请有效地学习机器学习算法知识

计算机与AI

学习

STL 源码剖析之五大组态常量介绍

herongwei

c++ 源码 后端 stl

大家都知道jmeter,但是它会让你的工作效率至少提升80%

996小迁

Java 编程 程序员 架构 面试

程序员:我熟悉多线程!面试官:都不敢写精通,还敢要26K?

Crud的程序员

编程 程序员 面试 多线程

架构师训练营—第十周学习总结

Geek_shu1988

尾调用与尾递归

哈希说

算法

架构师训练营第十周总结

_

总结 极客大学架构师训练营

架构师训练营第十周作业

_

极客时间架构师一期 第十周作业

架构师训练营第六周作业

丁乐洪

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