SOAP和REST API测试技巧
Posted 隔壁王书
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SOAP和REST API测试技巧相关的知识,希望对你有一定的参考价值。
API(应用程序编程接口)本质上是应用程序或软件中各层和系统的“中间人”。 API测试是在没有GUI的消息层执行的。它是集成测试的一部分,确定API是否满足测试人员对功能、可靠性、性能和安全性的期望。
API测试技巧
Web API有两大类Web服务:SOAP和REST。
SOAP(简单对象访问协议)是W3C标准定义的一种标准协议,用于发送和接收Web服务请求和响应。
REST(表示状态传输)是使用HTTP的基于Web标准的体系结构。与基于SOAP的Web服务不同,RESTful Web API没有官方标准。
以下是API测试所需了解的基本技巧:
1.了解API要求
在测试API之前,需要回答以下问题彻底了解API的要求:
API的用途是什么?
了解API的用途为准备好输入和输出的测试数据奠定坚实的基础。此步骤还可以定义验证方法。例如,对于某些API,针对数据库验证响应;对于其他一些API,最好根据其他API来验证响应。
应用程序的工作流程是什么?该流程中的API在哪里?
通常,应用程序中的API用于在读取(GET),创建(POST),更新(PUT)和删除(DELETE)中操作资源。例如,“创建用户” API的输出将是“获取用户” API的输入以进行验证。“获取用户”API的输出可用作“更新用户”API的输入。
2.指定API输出状态
在API测试中需要验证的最常见API输出是响应状态代码。
验证响应代码是否等于200来确定API测试是通过还是失败,对于新的API测试人员来说很熟悉的,这不是错误的验证。但是,它并不反映API的所有测试场景。
在全球标准中,所有API响应状态代码被分为五个类。状态码的第一位数字定义响应的类别。后两位数字没有任何类别或分类角色。
第一个数字有五个值:
1xx(信息性):收到请求并继续进行处理
2xx(成功):成功接收,理解并接受了请求
3xx(重定向):需要采取进一步的操作才能完成请求
4xx(客户端错误):请求包含错误的语法或无法实现
5xx(服务器错误):服务器无法满足看似有效的请求
但是,API的实际响应状态代码由构建该API的开发团队指定。因此,作为测试人员,需要验证:代码是否遵循全球标准类,是否在要求中规定了代码。
3. 专注于小型功能性API
在测试项目中,总有一些简单的API,只有一个或两个输入,例如登录API,获取token API,运行状况检查API等,这些API是必需的,被认为是进入更多API的“大门”。首先关注这些API确保API服务器、环境和身份验证正常工作。
还应该避免在一个测试案例中测试多个API。如果发生错误是很痛苦的,必须按顺序调试API生成的数据流。让API测试尽可能简单。在某些情况下,需要调用一系列API来实现端到端测试流程,这些任务应该在所有API都经过单独测试之后执行。
4.利用自动化功能进行API测试
尽可能早地利用自动化功能进行API测试。自动化API测试的一些重要好处:
(1)测试数据和执行历史记录可以与API端点一起保存。使得以后重新运行测试变得更加容易。
(2)API测试稳定且需要谨慎更改。API反映了系统的业务规则,API的任何更改都需要明确的要求,因此,测试人员始终可以随时了解任何更改并及时进行调整。
(3)与Web UI测试相比,测试执行速度要快得多。
(4)API测试被认为是黑盒测试,用户可以发送输入并获取输出进行验证。采用数据驱动方法的自动化(即在同一测试场景中应用不同的数据集)有助于提高API测试覆盖率。
(5)数据输入和输出遵循某些特定的模板或模型,因此创建一次测试脚本,这些测试脚本也可以在整个测试项目中重复使用。
(6)可以在软件开发生命周期的早期阶段执行API测试。具有模拟技术的自动化方法可以帮助在开发实际的API之前验证API及其集成。因此,减少了团队内部的依赖程度。
5.选择合适的自动化工具
选择API测试自动测试工具时,应考虑以下一些标准:
(1)是否支持测试AUT(被测应用程序)正在使用的API / Web服务类型?如果在AUT使用SOAP服务时,所选的工具支持测试RESTful服务,则没有意义。
(2)是否支持AUT服务所需的授权方法?这是一项必不可少的任务,因为无法在未经授权的情况下开始测试API。
(3)是否支持从WSDL,Swagger,WADL和其他服务规范中导入API / Web服务?这是一项可选功能。但是,如果要测试数百个API,没有该功能非常耗时。
(4)是否支持数据驱动的方法?这也是一项可选功能。如果工具有此功能,测试覆盖范围将大大增加。
6.选择合适的验证方法
当响应状态代码告诉请求状态时,响应主体的内容是API在给定输入下返回的内容。
API响应内容因数据类型和大小而异。响应可以是纯文本,JSON数据结构,XML文档等。它们可以是简单的几个单词的字符串(甚至为空),也可以是一个一百页的JSON / XML文件。因此,必须为给定的API选择合适的验证方法。
Eolinker:www.eolinker.com提供了丰富的类型来使用匹配,正则表达式、JsonPath和XmlPath验证不同的数据类型。
有一些基本方法可以验证API响应主体内容:
将整个响应正文内容与预期信息进行比较,这种方法适用于静态内容的简单响应。动态信息,如日期时间、增加ID等,会在断言中造成麻烦。
比较响应的每个属性值
对于JSON或XML格式的响应,很容易获得给定键或属性的值。因此,该方法在验证动态内容或单个值而不是整个内容时非常有用。
比较匹配与正则表达式
与验证单个属性值一起,该方法用于验证具有特定模式的数据响应,用来处理复杂的动态数据。
每种验证方法都有优点和缺点,并且没有“一刀切”的选项。需要选择最适合测试项目的解决方案。
7.创建正面和负面的测试
API测试需要正反两种测试来确保API正常工作。由于API测试被视为一种黑盒测试,所以这两种测试都是由输入和输出数据驱动的。对于测试方案的生成,有一些建议:
正面测试
验证API是否已收到输入并按要求中指定的方式返回了预期的输出。
验证响应状态代码是否按照需求中的指定返回,无论它返回2xx还是错误代码。
用最小必填字段和最大字段指定输入。
负面测试
验证当预期输出不存在时,API是否返回适当的响应。
执行输入验证测试。
使用不同的授权级别验证API的行为。
8.现场测试流程
建议在测试过程中每天安排时间执行API测试。由于API测试执行速度快、稳定且足够小,所以很容易以最小的风险将更多的测试添加到当前的测试过程中。
9.不要低估API自动化测试
API测试流程非常简单,只需三个主要步骤:
1.发送带有必要输入数据的请求
2.获取具有输出数据的响应
3.验证响应是否按需求中的预期返回
API测试最重要的部分既不是发送请求也不是接收响应。对于API来说,测试任务变得越来越困难。因此,API测试任务很容易被低估。
在某个时间点,会发现自己处于选择测试数据和验证方法中间。这是因为返回的数据具有相似的结构,但在测试项目中却不相同。
建议将API自动化测试考虑为实际的开发项目。它的结构应该是可扩展、可重用和可维护的。
以上是关于SOAP和REST API测试技巧的主要内容,如果未能解决你的问题,请参考以下文章