1、前言
根据 Tricentis 主导的一项全球调查为我们提供了几个有关测试趋势的重要观察。趋势表明,团队倾向于使用功能测试(自动化测试)。
- Functional Tests 功能测试 77%
- Coded tests 编码测试 67%
- Manual Testing 手动测试 50%
- Exploratory Testing 探索性测试 32%
- Unit Testing 单元测试 31%
- Load Testing 负载测试 23%
- UX/Layout Testing 用户体验/布局测试 16%
- Security Testing 安全测试 14%
怎样选择测试框架?这里有一些标准可参考:
1、相对快速和方便设置(或开箱即用的解决方案)
2、支持社区或开发者自己可以为其框架提供支持
3、有清晰而全面的文档
4、与其他工具充分集成
5、有一些很酷的功能,例如代码可重用性支持在多个平台和环境进行测试
接下来作者汇总了一些测试工具,大家可以参考一下。
还有很多值得推荐的测试工具没有列举出来,欢迎大家在留言处进行补充。
2、Selenium(自动化测试)
Selenium 诞生于 2004 年,它已经逐渐成为 QA 工程师的必备测试工具。它在 GitHub 上有近 20000 Star,是市场上最受欢迎的功能自动化测试工具之一。
Selenium 是一个涵盖几种工具的生态系统,主要包括:Selenium WebDriver、Selenium IDE 和 Selenium Grid。
Selenium 的核心特性是跨浏览器和跨平台测试,多种测试语言(Python、Java、C#等),高度可调整的开源代码,并行运行测试等。
官网地址:
https://www.selenium.dev/
3、Appium(自动化测试)
Appium 是一个开源自动化测试工具,用于在 IOS 移动平台、Android 移动平台和 Windows 桌面平台上自动化本地、移动 Web 和混合应用程序。本机应用程序是那些使用 IOS、Android 或 Windows SDK 编写的应用程序。移动网络应用是使用移动浏览器访问的 web 应用程序(Appium 支持 IOS 上的 Safari,支持 Android 上的 Chrome 或内置的“浏览器”应用程序)。混合应用程序在 “WebDriver” 上有一个包装器,支持与 web 内容交互的本机控件。
Appium 是跨平台的,它允许您使用相同的 API 编写针对多个平台(IOS、Android、Windows)的测试。这使 IOS、Android 和 Windows 测试套件之间的代码重用成为可能。
官网地址:
http://appium.io/
4、Cypress(自动化测试)
Cypress 是基于 web 的下一代前后端测试工具,与 Selenium 相比,Cypress底层协议不采用 WebDriver,这使得它能够实现快速、简单、可靠的测试。
Cypress 支持端到端测试、集成测试、单元测试。
官网地址:
https://www.cypress.io/
5、Robot Framework(自动化测试)
Robot Framework 是一款 Python 编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。
官网地址:
https://robotframework.org/
6、Airtest(自动化测试)
Airtest 是网易出品的一款基于 Python 语言、可通过图像识别和 poco 控件识别的一款 UI 自动化测试工具,包括 AirtestIDE、Airtest、Poco、AirLab 等部分,有 Poco、图像识别、selenium 三个大类库,适用于游戏、APP、web、Windows 程序项目的自动化测试,可以轻而易举的实现自动化测试流程。
官网地址:
https://airtest.netease.com/
7、Macaca(自动化测试)
Macaca 是一套完整的自动化测试解决方案。其特性是支持移动端和 PC 端,支持 Native, Hybrid, H5 等多种应用类型,提供客户端工具和持续集成服务等。
官网地址:
https://macacajs.github.io/
8、Katalon(自动化测试)
Katalon 是一站式测试自动化解决方案。其包括 Katalon Studio、Katalon Recorder、Katalon TestOps、Katalium。
官网地址:
https://www.katalon.com/
9、Unified Functional Testing(自动化测试)
Unified Functional Testing(UFT)称为统一功能测试,是一种自动化测试工具,可为软件应用程序提供自动化功能和回归测试。原名为 QuickTest Professional(QTP)。
UFT 支持关键字和脚本界面,并具有图形用户界面。它使用 Visual Basic Scripting Edition(VBScript)脚本语言来指定一个测试过程,并操纵被测试应用程序的对象和控件。
官网地址:
https://www.microfocus.com/en-us/products/uft-one/overview
10、Taiko(自动化测试)
Taiko 是一个免费的开源 Node.js 库,带有一个简单的 API 来自动化基于Chromium 的浏览器(Chrome、Microsoft Edge、Opera)和 Firefox。
Taiko 测试脚本是用 JavaScript 或任何编译为 JavaScript 的语言编写的,例如 TypeScript。
Taiko 的 API 是为测试人员设计的,与其他测试框架不同,Taiko 将浏览器视为一个黑匣子,使用 Taiko,您可以通过查看网页而不检查其源代码来编写脚本。
官网地址:
https://taiko.dev/
11、Ranorex(自动化测试)
Ranorex 是一款端到端的功能测试工具,具有自动超时处理、动态网页元素识别和内嵌页面对象映射。
Ranorex 特性是跨浏览器和跨平台测试,具有回归、数据驱动、关键字驱动测试选项,扩展的、详细的报告,可用于真实及模拟 iOS 和 Android 设备的自动化测试。
官网地址:
http://www.ranorex.com/
12、Cucumber(BDD工具)
Cucumber 是一个行为驱动的开发测试工具,用于增强终端用户的体验。
Cucumber 涵盖几个产品:Cucumber Open(可执行的规范验证)、CucumberStudio(BDD 协作平台)和 Cucumber School(培训和教程)。
Cucumber 核心特性是与源代码控制系统集成,大量面向业务的文档,兼容多种语言(包括 Java 和 Python)等。
官网地址:
https://cucumber.io/
13、SpecFlow(BDD工具)
SpecFlow 是 .Net 平台的 BDD 工具,可以用自然语言编写测试用例。Specflow 源于 Cucumber,概念和用途几乎一样,可以理解为 Specflow 是 .net 平台下的 Cucumber。
官网地址:
https://specflow.org/
14、MantisBT(缺陷管理)
MantisBT 是一个开源的缺陷记录工具,专门为 QA 工程师和测试人员而设计。它提供本地和托管的安装环境,并支持所有运行 PHP 的平台(Windows、Linux、Mac)。
MantisBT 核心特性是内置报告选项,从时间跟踪工具到聊天工具的多样化集成,适用于台式机和移动设备,与您选择的插件兼容,多 DBMS 和多语言库支持。
官网地址:
http://www.mantisbt.org/
15、PractiTest(测试管理)
PractiTest 被定位为应用生命周期管理方案的一体化工具,该工具提供了手动和测试自动化管理选项,还有探索性测试功能。
PractiTest 特性是测试用例管理,问题状态管理,可定制的仪表板,并附有详细报告,可重用的测试,与其他工具集成:Jira(云、数据中心、服务器)。
官网地址:
https://www.practitest.com/
16、禅道(项目管理)
禅道是第一款国产的开源项目管理软件,其核心管理思想基于敏捷方法scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。
官网地址:
https://www.zentao.net/
17、Jira Software(项目管理)
Jira Software 是 Atlassian 公司开发的课题管理工具(项目管理工具)。通过高度的自定义性,实现 bug 管理,还有任务管理,工数管理,进度管理,日程管理等整个项目的管理。可统一管理多个项目的进度和任务。
Jira Software 是整合旧 Jira 和旧 Jira Agile 的敏捷开发工具。即使是敏捷开发的新手也可以很快上手。通过操作 Scrum 板、看板,Jira Software 可以很方便地实现团队任务的可视化。
官网地址:
https://www.atlassian.com/zh/software/jira
18、pytest(单元测试)
pytest 是成熟的功能齐全的 Python 测试工具,可帮助你编写更好的程序。
pytest 是一个使构建简单和可伸缩的测试变得容易的框架。测试具有表达性和可读性,不需要样板代码。几分钟后就可以开始对应用程序或库进行小的单元测试或复杂的功能测试。
官网地址:
http://pytest.org/
19、unittest(单元测试)
unittest 是 Python 自带的一个单元测试框架,unittest 又被称为 PyUnit,是由 Java 的 Junit 衍生而来,基本结构是类似的。对于单元测试,需要设置预先条件,对比预期结果和实际结果。
由于 unittest 是 Python 自带的标准模块,所以不需要单独再去安装。引入包 import unittest 即可使用。
官网文档地址:
http://docs.python.org/zh-cn/3/library/unittest.html
20、TestNG(单元测试)
TestNG 是基于 Java 的单元测试工具,受非常流行的工具 NUnit 和 JUnit 启发。与 NUnit 和 JUnit 相比,TestNG 具有更加强大的功能,使其成为集成和端到端测试的多功能工具。
TestNG 核心特性是多线程测试执行,数据驱动的测试支持,使用 JDK 方式提供日志和运行,借助 IDE 插件或使用了 build.xml 的 Apache Ant,从而得以灵活执行。
官网地址:
https://testng.org/
21、JUnit(单元测试)
JUnit 是一个 Java 语言的单元测试框架。它由 Kent Beck 和 Erich Gamma建立,逐渐成为源于 Kent Beck 的 sUnit 的 xUnit 家族中最为成功的一个。JUnit 有它自己的 Junit 扩展生态圈,多数 Java 的开发环境都已经集成了 JUnit 作为单元测试的工具。
官网地址:
https://junit.org/junit5/
22、JMeter(性能测试)
JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等等。
JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。
官网地址:
https://jmeter.apache.org/
23、LoadRunner(性能测试)
LoadRunner 是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。企业使用 LoadRunner 能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
LoadRunner 可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。
官网地址:
https://www.microfocus.com/zh-cn/portfolio/performance-engineering/overview
24、WebLOAD(性能测试)
Web 应用程序的企业级负载和性能测试工具。WebLOAD 是用户负载大、测试需求复杂的企业的首选工具。它允许您通过从云和本地机器生成负载,在任何internet应用程序上执行负载和压力测试。
WebLOAD 的优势在于它的灵活性和易用性——允许您使用基于 dom 的录制/回放、自动相关性和 JavaScript 脚本语言等特性快速定义所需的测试。该工具提供了对 web 应用程序性能的清晰分析,指出了可能阻碍实现负载和响应需求的问题和瓶颈。
WebLOAD 支持数百种技术——从 web 协议到企业应用程序,并内置与Jenkins、Selenium 和许多其他工具的集成,以支持 DevOps 的持续负载测试。
官网地址:
https://www.radview.com/
25、LoadNinja(性能测试)
LoadNinja 是一个性能和负载测试框架,用于诊断 API 和 UI 性能问题。
LoadNinja 具有内置的 TrueLoad 技术,与传统的按协议进行的性能测试相比,该技术可使测试终端用户体验的速度提高 60%。
LoadNinja 核心特性是数以千计的在真实浏览器上的用法,测试脚本的录制和回放,问题实时诊断。
官网地址:
https://loadninja.com/
26、Gatling(性能测试)
Gatling 是一款基于 Scala 开发的高性能服务器性能测试工具,同时也是一款功能强大的负载测试工具,它为易于使用,高可维护性和高性能而设计。开箱即用,Gatling 由于对 HTTP 协议的出色支持,使其成为负载测试任何 HTTP 服务器的首选工具。
官网地址:
https://gatling.io/
27、SmartMeter(性能测试)
SmartMeter 是一个负载和性能测试工具,以 JMeter 为核心,任何用户都会立即熟悉它。只需在嵌入式浏览器中单击,就可以在不编写脚本的情况下创建测试场景。也不需要代理设置或浏览器插件。它的功能是自动生成包含测试及其结果的所有细节的报告。结果包含自动评估的验收标准、统计信息、图形比较工具和多个测试运行的趋势分析。
官网地址:
https://www.smartmeter.io/
28、Rational Performance Tester(性能测试)
Rational Performance Tester 是一种自动化的性能测试工具,它可以用于web 应用程序或者基于服务器的应用程序,在这些应用程序中包含一个输入和输出的过程。
官网地址:
https://www.ibm.com/products/ibm-rational-performance-tester
29、Locust(性能测试)
Locust 是一个用于可扩展的,分布式的,性能测试的,开源的,用 Python 编写框架/工具,它非常容易使用,也非常好学。它的主要思想就是模拟一群用户访问你的网站。每个用户的行为由你编写的 Python 代码定义,同时可以从 Web 界面中实时观察到用户的行为。
官网地址:
https://www.locust.io/
30、Loadster(性能测试)
Loadster 是一个基于桌面的高级 HTTP 负载测试工具。Web 浏览器可以用来记录脚本,使用 GUI 可以进行动态变量修改基本脚本以验证响应,通过控制网络带宽,可以为应用程序压力测试模拟大型虚拟用户群,测试执行后,生成 HTML 报告进行分析。此工具最适合识别应用程序中的性能瓶颈。
官网地址:
https://loadster.app/
31、k6(性能测试)
k6 是高性能的负载测试工具,也是一种高性能工具,旨在在预生产和 QA 环境中以高负载运行测试,可使用 JavaScript 编写脚本。它是一个以开发人员为中心(当然,测试人员亦可以使用,因为真的很方便),免费和开源的负载测试工具,旨在使性能测试具有生产力和令人愉悦的体验,可最大程度地减少系统资源的消耗。
官网地址:
https://k6.io/
32、PerfDog性能狗(性能测试)
PerfDog 性能狗是移动全平台 iOSAndroid 性能测试工具平台,快速定位分析性能问题,提升 APP 应用及游戏性能和品质,手机无需 ROOT/越狱,手机硬件、游戏及应用无需做任何更改,极简化即插即用。
官网地址:
https://wetest.qq.com/product/perfdog
33、Monkey(性能测试)
Monkey 是 Android SDK 提供的一个命令行工具,使用简单、方便地运行在任何版本的 Android 模拟器和实体设备上。Monkey 会发送伪随机的用户事件流,适合对 app 做压力测试。
34、QNET(弱网测试)
QNET 网络测试工具能够不借助 PC 或者服务器,搭建一套完善的弱网环境,进行弱网络模拟测试,只需在任一智能手机上安装 QNET 网络测试工具,即完成弱网络环境搭建工作,接下来根据需要选择不同场景进行测试即可;还提供了网络数据包抓包功能,便于进行网络数据问题的分析。
官网地址:
https://wetest.qq.com/product/qnet/
35、Postman(接口测试)
Postman 最早是 Google 的一个插件存在的,之后团队对工具的定位,主攻 PC端的开发与优化,现在的 Google 插件已经很少再使用了,Postman 虽然是一个商用软件,但是对于普通用户来说,基本功能已完全够用了。
Postman 从最初设计上就是为接口测试而生的,所以在程序员中广泛使用,在开发调试网络程序时跟踪一些网络请求,能够高效的帮助后端开发人员独立进行接口测试。
官网地址:
https://www.postman.com/
36、Apifox(接口测试)
Apifox 工具可以进行 API 文档、API 调试、API Mock、API 自动化测试。
Apifox = Postman Swagger Mock JMeter
官网地址:
https://www.apifox.cn/
37、SoapUI(接口测试)
SoapUI 是为开发人员和测试人员等构建的,是唯一涵盖整个测试范围(功能、安全、负载、模拟)的开源工具。凭借其易于使用的图形界面,SoapUI 是 API 测试的入口点,因此您可以轻松验证基于 REST 和 SOAP 的 Web 服务。
官网地址:
https://www.soapui.org/
38、HttpClient(接口测试)
HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。
官网地址:
http://hc.apache.org/
39、OkHttp(接口测试)
OkHttp 是一个很棒的适用于 Android 和 Java 应用程序的 HTTP 和 HTTP/2 客户端,它是一个第三方类库,由移动支付 Square 公司贡献,这是一个开源项目,用于替代 HttpUrlConnection 和 Apache HttpClient。
官网地址:
https://square.github.io/okhttp
40、Requests(接口测试)
Python 的标准库 urllib 提供了大部分 HTTP 功能,但使用起来较繁琐。通常,我们会使用另外一个优秀的第三方库:Requests,适合于人类使用的 HTTP 库,封装了许多繁琐的 HTTP 功能,极大地简化了 HTTP 请求所需要的代码量。
官网地址:
https://docs.python-requests.org/en/latest/
41、YApi(接口管理)
YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。
官网地址:
http://yapi.smart-xwork.cn/
42、MeterSphere(测试平台)
MeterSphere 是一站式开源持续测试平台,涵盖测试跟踪、接口测试、性能测试、团队协作等功能,兼容 JMeter 等开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量软件的交付。
官网地址:
https://fit2cloud.com/metersphere/
43、Django(测试开发)
Django 是一个开放源代码的 Web 应用框架,由 Python 写成。采用了 MVT 的软件设计模式,即模型 Model,视图 View 和模板 Template。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。这套框架是以比利时的吉普赛爵士吉他手 Django Reinhardt 来命名的。
Django 的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件的重用性和可插拔性,敏捷开发和 DRY 法则(Don't Repeat Yourself)。在 Django 中 Python 被普遍使用,甚至包括配置文件和数据模型。
官网地址:
https://www.djangoproject.com/
44、Spring Boot(测试开发)
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
官网地址:
https://spring.io/projects/spring-boot/
45、Swagger(测试开发)
Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。
官网地址:
https://swagger.io/
46、Optimizely(A/B测试)
Optimizely 是一个强大的 UI/UX 测试工具,可以对网站或者应用中重新设计或实现的新特性进行演练测试。该工具主要用于在推出新特性前验证变更,以减少失败的风险。
Optimizely 特性是 A/B 测试构建及运行,顺序测试新功能,FDR 错误控制,借助 snippets 轻松集成到代码中。
官网地址:
https://www.optimizely.com/
47、SonarQube(安全测试)
SonarQube 是一个安全性测试工具,可在代码审查期间提供代码库漏洞检测和协助。
SonarQube 核心特性是多语言覆盖(27 种编程语言),可疑代码段检测,与 GitHub、GitLab、Azure DevOps、Bitbucket 集成。
官网地址:
https://www.sonarqube.org/
48、MobSF(安全测试)
移动安全框架(MobSF)是一种自动、一体化的移动应用(Android / iOS / Windows)静态和动态分析的测试,恶意软件分析和安全评估框架。
官网地址:
https://github.com/MobSF/Mobile-Security-Framework-MobSF
49、Maven(软件项目管理)
Maven 是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
官网地址:
http://maven.apache.org/
50、Jenkins(持续集成)
Jenkins 是一个用 Java 编写的开源的持续集成工具。在与 Oracle 发生争执后,项目从 Hudson 项目复刻。
Jenkins 提供了软件开发的持续集成服务。它运行在 Servlet 容器中(例如Apache Tomcat)。它支持软件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以执行基于Apache Ant 和 Apache Maven 的项目,以及任意的 Shell 脚本和 Windows 批处理命令。
官网地址:
https://jenkins.io/
51、Git(分布式版本管理)
Git 是一个分布式版本控制软件,最初目的是为更好地管理 Linux 内核开发而设计。
官网地址:
https://git-scm.com/
52、Fiddler(抓包工具)
Fiddler 是位于客户端和服务器端的 HTTP 代理,也是目前最常用的 http 抓包工具之一。它能够记录客户端和服务器之间的所有 HTTP 请求,可以针对特定的 HTTP 请求,分析请求数据、设置断点、调试 web 应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是 web 调试的利器。
官网地址:
https://www.telerik.com/fiddler
53、Charles(抓包工具)
Charles 是一个 HTTP 代理/HTTP 监视器/反向代理,使开发人员能够查看他们的机器和 Internet 之间的所有 HTTP 和 SSL/HTTPS 流量。这包括请求、响应和 HTTP 标头(其中包含 cookie 和缓存信息)。
官网地址:
https://www.charlesproxy.com/
54、Docker(容器)
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
官网地址:
https://www.docker.com/
55、Kubernetes(容器)
Kubernetes,简称 K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes 提供了应用部署,规划,更新,维护的一种机制。
官网地址:
https://kubernetes.io/
56、STF(设备管理平台)
STF(Device Farmer)是一个 Web 应用程序,用于在舒适的浏览器上远程调试智能手机、智能手表和其他小工具。
官网地址:
https://github.com/DeviceFarmer/stf
以上工具分享希望对你工作有所帮助