(应用程序编程接口)本质上是应用程序或软件中各层和系统的“中间人”。 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的开发团队指定。因此,作为测试人员,需要验证:代码是否遵循全球标准类,是否在要求中规定了代码。
还应该避免在一个测试案例中测试多个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自动化测试考虑为实际的开发项目。它的结构应该是可扩展、可重用和可维护的。
————————————————
版权声明:本文为CSDN博主「前端搬砖小助手」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40857096/article/details/118158526