【51CTO.com快译】不可否认,API测试是成功实现持续集成,并保持DevOps实践的重要组成部分。根据Google的一项趋势分析,开发人员对于Web和API服务的测试兴趣,在过去几十年中呈逐渐增长的趋势。同时,根据SmartBear在2019年对3372名软件专业人员进行的API测试调查显示,有91%的参与者目前、或将要制定正式的API测试流程。而大约有45%的API测试人员认为,他们的公司已经自动化了50%以上的测试项目。此外,有超过75%的跨行业公司认为API质量是测试中的重点。
总的说来,API测试是一个过程,它主要关注的是已开发的API是否满足安全性、可靠性、性能、以及功能性的预期值。随着API逐渐成为软件开发中的关键元素,对于程序员和开发人员来说,他们需要使用先进且合适的API测试工具。
API测试时需要考虑的要点
- API的使用者或目标受众
- 正常运行状态下的测试
- 可能用到的API环境
- 针对异常情况的测试
为什么要执行API测试?
随着越来越多的公司转向持续部署(CD)、持续集成(CI)、以及DevOps,他们对测试反馈的要求比以往任何时候都更加迅速。同时,开发人员已逐渐从单一的应用程序,移为采用微服务技术进行软件开发。其中,API正是此类微服务软件开发的基础。因此,越来越多的团队需要借助自动化测试工具,来开展全面、及时的测试。
市面上六大API测试工具
1.Katalon Studio
Katalon Studio是一个开源、全面且健壮的测试自动化工具,可用于测试API、Web应用、桌面端、以及移动应用程序。使用Katalon Studio的主要好处是:它能够测试运行在多个操作系统(如:Mac OS、Linux和Windows)上的业务级别(如:API、Web服务)和UI。Katalon Studio支持带有DELETE、PUT、POST等多种命令,以及参数化的RESTful和SOAP请求。
为了方便部署,Katalon Studio将所有插件、ALM集成和框架打入了一个包。除了免费开源,Katalon也为企业和小型团队提供了付费的支持服务。
主要特点:
- 通过DELETE、PUT、GET、POST等多种命令类型,支持SOAP和RESTful请求,并具有参数化的能力。
- 具有结合API和用户界面验证的能力。
- 提供许多用于创建测试用例的内置关键字。
- 支持数据驱动的方法。
- 支持最具影响力的断言库--AssertJ,可用于创建具有行为数据驱动风格的流畅断言。
- 可用于自动化的试探性测试。
- 为非技术人员、专家、以及初学者同时提供了脚本和手动模式。
- 提供可定制和预构建的代码模板。
- 具有代码的自动完成、自动格式化、以及检查功能。
缺点
- 不支持分布式测试。
官方网站: https://www.katalon.com/
2.Postman
这是一个应用程序编程接口的开发协作平台。作为最流行的API客户端之一,Postman使用户能够计划、构建、共享、分配、测试、以及记录API。最初,Postman只是Google Chrome的一个插件。如今,它对现有的Mac和Windows进行了扩展。
如果您不想编写代码的话,那么可以选择Postman进行API测试。也就是说,对于那些不想在IDE(集成开发环境)中,使用与软件开发人员类似的语言,来编写代码的初学者来说,Postman是他们进行API测试的最佳选择之一。从2020年发布的高级版本7.3开始,该工具可使用最新首选项,从API模式进行创建,进而帮助用户更好地管理各种集合和API元素(如:监视器、模拟服务器、测试和文档等)。2020年8月发布的针对Linux、Windows和Mac应用的7.31.1版,也修复了过往版本的一些细微缺陷。
主要特点:
- 适用于Windows、Mac OS、Linux、以及Chrome应用程序。
- 支持与Newman的持续集成和持续交付服务。
- 提供易用的REST客户端。
- 支持运行、测试、记录和监视功能。
- 提供丰富且易用的界面。
- 可用于自动化和试探性的测试。
- 支持RAML和Swagger格式。
- 用户无需学习新的语言。
- 允许用户便捷地汇总各种请求和可能的响应,并共享和发送给其他团队成员。
缺点
- 尽管其企业版易于安装和使用,但是在请求数量上有所限制。
- 商业版的定价过高。
官方网站:https://www.postman.com/
3.SoapUI
SoapUI是针对REST和SOAP API的最佳自动化测试工具。在API测试中,它更适合于复杂的测试场景,可以让开发人员轻松地测试SOAP、REST、以及Web服务。作为一个headless功能性的测试工具,它为用户提供了一个完整的源框架。
在2020年7月份发布的5.6更新版中,SoapUI升级了第三方库--JUnit、commons logging、org.apache.httpcomponents和commons codec,也删除了未使用的第三方库—KeenIO和Jackson。为了提高测试的安全性,此工具目前禁用了加载,以及在默认情况下保存的各种项目脚本。
主要特点:
- 提供开源包。
- 可通过拖放和点击,来快捷地生成测试。
- 通过测试脚本的可重用性,来启用负载测试。
- 可为所有API测试创建可执行的安全扫描。
- 提供高级尊享套餐。
- 支持数据驱动测试(可从excel、数据库和文件处加载数据),进而模仿客户机与API的交互。
- 支持原生的异步测试,以及与CI/CD的集成。
- 在非项目的情况下,能够协助终端客户的资源管理器对话框,发送一个试探性的请求和检查反应。
- 支持扩展性的HTTP方式,其中包括PURGE、LOCK、COPY、PROPFIND和UNLOCK。
缺点
- 虽然执行起来比较简单,但是缺少文档。
官方网站: https://www.soapui.org/
4.Tricentis Tosca
如果您正在为DevOps和敏捷开发寻找一个持续的测试平台,那么Tricentis Tosca恰好能够帮助您完成API测试。作为一种全面的自动化测试方法,它无需代码,可以使用脚本来加速测试。Tricentis Tosca可以覆盖包括移动应用、Web应用、桌面应用以及API在内的多种应用程序。目前,该工具被Gartner誉为自动化测试领域的领先者。
主要特点:
- 支持DevOps和敏捷周期。
- 支持诸如SOAP、HTTP(s)JMS、Rabbit MQ、REST、TIBCO EMS、AMQP、nettcp、以及IBM MQ等各种协议。
- 通过基于模型的自动化测试,最大限度地提高可维护性和可重用性。
- API测试可以横跨打包应用、浏览器、移动设备。
- 可实现持续性的自动化测试。
- 可缩短回归测试的时间。
- 其交互式测试可运行各种手动测试,并在无需设置Tosca环境的状态下,收集结果。
- 支持API连接管理器中的Web服务安全配置。
- 用户可以使用签名安全替代方案,对消息的多个部分进行签名。
- QA工程师可以在API引擎中连接一个文件,从而实现有效的文件读写。
缺点
- 其开箱即用的功能有时并不尽人意。
官方网站:https://www.tricentis.com/software-testing-tools/
5.JMeter
作为一个自由软件工具,JMeter工作在协议层,且支持跨平台,因此它既可以执行性能和负载测试,又可以凭借着其附加功能与特性,被广泛地用于功能性API测试。开发人员可以将JMeter用作测试JDBC数据库连接的单元级测试工具,并基于其插件架构生成测试数据。此外,它的协助命令行模式,对于那些兼容Java的操作系统来说,非常实用。JMeter于2019年11月发布了最新的5.2版。它不但包含JMESPath提取器、新协议、HTTP Samplers、StringtoFile、JDBC增强等新特性,也修复了一些显著的缺陷,并且给用户带来更佳的体验。
主要特点:
- 允许用户使用多种编程语言。
- 支持测试结果的重放。
- 支持团队通过CSV文件,为API测试快速创建异常的数据(或参数值)。
- 通过与Jenkins的整合,用户可以在CI管道中启用API测试。
- 可用于动态和静态资源的性能测试。
- 可以对许多不同应用、协议、以及服务器开展性能和负载的测试。
- 既支持每个线程的cookie,又支持各种变量断言和参数化。
缺点
- 虽然鼓励用户实施较重的负载,但是在可视化测试报告方面却比较浪费内存。
官方网站: http://jmeter.apache.org/download_jmeter.cgi
6.Rest-Assured
由于重点针对的是Java领域的语言,因此Rest-Assured能够让那些针对HTTP的REST服务测试变得更加简单。它通过REST-Assured-API来支持JSON和XML方式的请求与响应。由于这款免费且开源的工具集成了多种基于Java的自动化框架,因此您根本不需成为HTTP方面的专家。
同时,REST-Assured通过提供一种类似于BDD(behavior-driven development,行为驱动开发)的准确域语言(domain-precise language),使得在Java中生成API测试变得非常容易。而且,用户可以直接使用其大量内置的功能,而不需从头开始编写代码。REST-Assured至少需要Java 8、Apache Johnzon的额外帮助、以及初始的OSGi支持,来修复各种测试中可能发现的问题。
主要特点:
支持任何一种HTTP方法,以及各种命令,其中包括:DELETE、PUT、POST、GET、OPTIONS、HEAD、PATCH、以及各种head、参数、正文和cookies等声明与验证。
- 用户既不需要从头开始编写代码,又不必精通HTTP。
- 能够与Serenity自动化测试框架相整合。
- 能够产生精美的报告。
- 能够与持续集成/持续交付工具相整合。
- 支持BDD的Then、When、Given等语法。
缺点
- 仅支持Java编程语言
官方网站:http://rest-assured.io/
小结
上述所罗列的六种API测试工具,只是当前众多可用工具中最常用的一些。鉴于各个企业需求的不同,以及团队手头项目的差异性,您需要在仔细了解工具细节的基础上,选用最适合自己业务的一款工具。
原文标题:6 of the Best API Testing Tools in the Market,作者:Shormistha Chatterjee
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】