28

您需要知晓的20款测试工具库

 4 years ago
source link: http://news.51cto.com/art/202004/613580.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

【51CTO.com快译】众所周知,优秀的自动化测试工具可以让用户在采用DevOps或Agile的过程中,为团队的自动化提供良好的支持。因此在面对用户需要以更快的速度、交付出更高质量的软件产品时,许多企业自然会通过搜寻各种自动化测试工具,以满足他们在持续集成和DevOps方法论方面的需求。

b6ZJNrf.jpg!web

本文向您介绍20种自动化测试工具与库,其中包括一些对于自动化测试、单元测试、以及各种其他类型测试需求非常实用的工具。希望它们能够对您的项目有所帮助。

1. Selenium

q67RjqJ.png!web

Selenium由如下三个工具组成:

  • Selenium WebDriver能够让用户就像在本地或远程使用Selenium服务器那样,在本机上驱动浏览器,以实现基于浏览器的自动化测试。WebDriver备受W3C的推崇(请详见:https://www.w3.org/TR/webdriver1/)。
  • Selenium Grid是一个智能代理服务器。它允许用户将测试命令路由到远程Web浏览器的实例上。同时,它能够提供一种能够在多台计算机上并行运行测试的简便方法。
  • Selenium IDE可以被用于Web的开源记录和回放自动化测试(请详见: https://dzone.com/articles/record-and-play-load-testing-in-5-steps)。

许可证:开源

2. Appium

ZNZnmuY.png!web

Appium是一款开源、且跨平台的自动化测试工具。它适用于原生的移动Web、以及混合式的桌面应用。Appium支持iOS模拟器、Android模拟器、以及各种类型的实际设备,包括:iOS、Android、Windows和Mac。

由于在默认情况下,Appium不包含任何驱动程序。因此任何人都可以通过Appium 2.0的构建方式,创建和发布某个驱动程序。也就是说,驱动程序的版本维护与Appium的版本并无直接关系。同时,Appium提出了一个基于插件的生态系统。在该生态系统中,用户可以在真实的Appium命令之前、或之后任意添加各种插件功能。

许可证:开源

3.Taiko

YryqQzN.png!web

Taiko是由来自ThoughtWorks(https://www.thoughtworks.com/)的团队,所构建的、免费开源的浏览器自动化工具。作为一个Node.js库,Taiko具有清晰而简洁的API,可以自动化诸如Chrome、Microsoft Edge、以及Opera等浏览器。通常,用Taiko编写出的测试程序,具有很高的可读性和可维护性。

用户可以使用ChromeDevtoolsProtocol,让Taiko专注于围绕着UI的功能,进行自动化测试。Taiko的功能可以通过各种插件来进行扩展,其中包括:

许可证:开源

4. TestProject

J32IfiU.png!web

TestProject是一个免费的端到端自动化测试平台,可被用于Web、移动和API等测试。基于Selenium和Appium等开源工具构建的TestProject,能够得到自动化测试社区的支持,其中包括:轻松地编写脚本、协作测试脚本、以及智能测试记录器等的附加组件。

作为一个开源的平台,TestProject具有强大且齐全的功能,可供任何人免费使用。另外,TestProject也能够轻松地支持诸如Windows、macOS、Linux、iOS、Android、Web服务等平台。

TestProject有着一些不错的特有功能,其中包括:iOS和Android设备的屏幕镜像、元素检查器与资源管理器、报告仪表板与智能测试记录器等。同时,其支持社区也通过使用TestProject SDK,构建出了一些附加的组件。其中包括:NLP引擎、RESTful客户端、Android权限管理器等,它们都可以通过浏览器记录器的形式、或直接在测试类中被使用到。

许可证:免费

5. WebdriverIO

faAJ32e.png!web

WebdriverIO是一款基于JavaScript的自动化测试框架。它能够让您基于Webdriver协议和Appium自动化技术开展测试。它不但支持常用的BDD/TDD(行为驱动开发/测试驱动开发)测试框架,也能够使用Sauce Labs、BrowserStack或TestingBot,在本地或云中运行各种测试。

作为一款被广泛使用的自动化测试框架,WebdriverIO在开发人员和测试人员中非常流行。它能够提供的服务包括:

许可证:开源

6. Applitools

Vf2ERrj.png!web

Applitools是一款针对应用程序可视化管理,以及基于AI的可视化UI测试与监控的软件。Applitools能够自动在每个应用程序、浏览器、操作系统、以及屏幕尺寸上,进行大规模的功能性和视觉测试。

利用现有的测试,Applitools可以基于AI的认知视觉,实现自动化的测试维护、跨设备和浏览器的测试、以及视觉测试的管理和分析。最近,Applitools推出了Ultrafast Grid(请参见:https://applitools.com/ultrafast-grid),可用于大规模的、跨浏览器的并行多视口(viewport)测试。

有关Applitools定价计划,请参考:https://applitools.com/pricing。

7. Cypress

EBnuQfY.png!web

Cypress可谓专为现代网络打造的下一代前端测试工具。Cypress可以被用来编写单元测试、端到端测试、以及集成测试。它可与用户的应用程序在同一个运行循环中被执行。作为一个节点服务器的进程,Cypress可以在这两个进程中,始终保持相互通信,并同步执行各项任务。当然,Cypress也有一定的局限性,它能够支持的测试框架比较有限,调试起来也非常困难。另外,在同一个测试中,Cypress无法在不同的来源或域之间,实现跨域的iframe。

值得一提的是,Cypress测试库(https://github.com/testing-library/cypress-testing-library),具有简单而完整的自定义Cypress命令和实用程序,可被用户用来培养良好的测试习惯。

许可证:开源

8. Pact

VZNf6zE.png!web

Pact是一种代码优先(code-first)类型的工具,可以通过contract test来测试各种HTTP和消息集成。也就是说,使用Pact,我们可以contract的形式(即库的名称)定义给定提供者(provider,可以是一种HTTP REST服务)的消费者(consumer)期望。此处,消费者驱动类型的contract(https://dzone.com/articles/consumer-driven-contracts-with-pact-feign-and-spri)也是一种从消费者的角度驱动提供者开发的模式。

许可证:开源

9. REST-assured

vINVRvY.png!web

REST-assured是一种Java DSL(Domain-specific language),它构建于HTTP Builder之上,可被用于简化针对基于REST服务的测试。它能够支持POST、GET、PUT、DELETE、OPTIONS、PATCH和HEAD等请求,可用于验证和确证此类请求的响应。

旨在简化REST API测试与验证的REST-assured,受到了Ruby和Groovy等动态语言在测试技术方面的影响。因此,该工具库为标准的HTTP操作提供了可靠的支持。

许可证:开源

10. OWASP ZAP

MJ7jaeQ.jpg!web

作为一款开源的Web应用安全扫描程序,OWASP ZAP适合于应用安全的新手和专业渗透测试人员。ZAP提供了丰富的测试功能,适用于各种主要操作系统、以及Docker版本。它是目前最流行的开放式Web应用安全项目,其核心是所谓的“中间人代理(https://dzone.com/articles/the-magic-behind-burp-and-zap-and-other-proxies)”。也就是说:它位于测试人员的浏览器和Web应用程序之间,以便拦截和检查两者之间往来的消息,进而按需修改内容,将新的数据包转发到目标位置上。而且,它既可以用作独立应用程序,又可以被当作守护进程被使用。

许可证:开源

11. JMeter

fi2yYvF.png!web

Apache JMeter是一款纯Java应用的开源软件,它能够测试各项功能的行为,以衡量其性能。JMeter最初是为测试Web应用而设计的。不过,如今它已经扩展到了其他功能性测试场景中。Apache JMeter的主要功能包括:

  • 能够针对多种不同的应用程序、服务器、协议类型等开展负载和性能测试。
  • 具有功能齐全的Test IDE,能够快速地记录来自浏览器、或本机应用的测试计划、构建和调试。
  • 完整的多线程框架既允许通过多个线程进行并发采样,又能够通过单独的线程组,同时对不同的函数进行采样。
  • 能够缓存、脱机分析、并重放各种测试结果。
  • 能够从HTML、JSON、XML或任何文本格式中提取数据,并轻松地进行关联。

许可证:开源

12. Gatling

jUJnM3M.png!web

Gatling是一个基于Scala、Akka和Netty的开源式负载和性能测试框架。它能够支持HTTP、WebSocket、服务器发送事件(Server-Sent-Events),以及JMS。

Gatling不会为每个用户分配单独的线程。相反,所有的多线程都是通过参与者之间的消息(并发计算)来完成。也就是说,该消息允许仅使用单个线程来模拟一系列用户。

Gatling不但拥有断言和人类可读的测试,还能够提供开箱即用的详细指标仪表板。此外,通过Taurus,Gatling还能够提供可配置的测试执行和详细的实时在线报告。

许可证:开源版本和企业版本。

13. Terratest

Terratest是一个Go库,能够对Terraform、Packer、Docker、Kubernetes、AWS、以及GCP等提供一流的支持。同时,它为常见的基础架构测试任务提供了多种帮助类程序功能和模式,其中包括:

  • 测试Terraform的代码。
  • 测试Packer的模板。
  • 测试Docker的镜像。
  • 通过SSH在服务器上执行命令。
  • 与AWS、Azure、GCP和Kubernetes API的协同。
  • 测试Helm Charts。
  • 发出HTTP请求。
  • 运行shell命令等。

14. Axe-Core

作为测试引擎,Axe可被用于测试网站和其他基于HTML界面的可访问性。它不但快速、安全、轻巧、而且能够与任何现有的测试环境进行无缝集成,因此您可以在进行常规功能性测试的同时,自动执行可访问性的测试。

借助Axe,开发人员可以在任何主流的浏览器、工具和测试环境中,将可访问性作为单元测试、集成测试、以及功能测试的一部分来予以执行。

Axe不但能够与现有的功能测试或验收测试相集成,而且可以通过评估上下文来自动确定需要运行的规则。此外,Axe还能够支持内存中(in-memory)的固定、静态固定、集成测试、无限深度iframe,以及具有高度可配置性。

许可证:开源

15. Testcontainers

re2MJvn.png!web

作为一个Java库,Testcontainers能够支持各种JUnit测试。它提供常见的数据库、Selenium Web浏览器、以及能够在Docker容器中运行的轻量级一次性实例。通过Testcontainer,您可以轻松地开展数据访问层集成测试、应用程序集成测试、以及UI接受性测试。

许可证:开源

16. Jest

32Yr6z7.png!web

Jest是一款简单的JavaScript测试框架。它通过协助执行快照测试,以检测出UI中的任何意外更改。Jest既不会存储UI的图像截图,也不会执行图像的比较,而是会在快照文件中存储被测React组件的标准输出版本。

通常,快照文件与单元测试会一起被提交。在后续的测试中,测试框架将其与既有组件的输出进行比较。如果测试失败,Jest则会显示出预期结果与实际输出之间的差异。

许可证:开源

17. Locust

iInYbiR.png!web

Locust是用Python编写的一种可扩展的用户负载测试工具。作为一款易用的分布式测试工具,Locust能够通过对网站(或其他系统)产生负载,以确认目标系统能够处理的并发用户数。

在测试期间,该工具可以模拟“一群蝗虫”攻击目标网站。您可以定义每个“蝗虫”(如:测试用户)的行为,并能够通过Web UI来实时监视群集的整个过程。此举可以协助您在允许真正的用户使用之前,事先测试并发现代码中的瓶颈。目前,Locust的功能包括:测试分发和可扩展性。作为一种轻量级的过程,它不像市场上的其他工具那样用到了回调(callback),而是采用专用的Web服务器发布测试结果。

许可证:开源

18. Pywinauto

pywinauto是一个功能强大的Python模块,可被用于自动执行Windows GUI的应用。它允许用户将鼠标和键盘事件发送到Windows的对话框和控件中。相对于广为大家所熟悉的Sikuli或Appium等Windows驱动程序,pywinauto拥有强大的社区支持,并能得到持续的模块维护。

Pywinauto既可以灵活、且隐式地等待对话框的初始化(使用的是默认超时),也可以显式地使用专用的方法和函数,来简化并加固程序代码。

许可证:开源

19. Burp Suite

rYjIBzV.png!web

Burp Suite是一个用于执行Web应用安全性的集成测试平台。它的各种工具可以无缝地协同工作,以支持整个测试过程,进而对应用攻击面的初始化映射进行分析,发现那些可能被利用安全漏洞。

此外,Burp Suite的其他特性还包括:目标站点的地图功能,使用Spider爬取Web应用程序,处理Web请求,以及对数据进行解码和编码。

许可证:开源版、专业版和商业版

20. GTXiLib

GTXiLib是一款用于iOS的Google辅助功能工具集。其中,GTX-eye是用于iOS辅助功能测试的框架。它能够与EarlGrey等基于XCTest的框架无缝集成。用户可以将现有的XCTests集成到GTXiLib中,以实现在无需修改大量代码的情况下,执行可访问性的检查。而此类检查主要关注的是屏幕上元素是否存在可访问性标签。

通过将GTXiLib安装到单个测试用例、测试类、以及特定的测试子集中,您可以自由地添加各种可访问性测试。这将有助于用户在大型项目中逐步推进可访问性的勘察。另外,您还可以根据GTXiLib所提供的简单API,按照目标应用的特定需求,自定义创建检查测试的关键点。

许可证:开源

原文标题:20 Testing Tools and Libraries You Need to Know,作者:Srinivasan Sekar

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK