API测试介绍
API测试的概念
我们常说的是比较狭义的API,指的是Web service或者Web API。
所以一般API测试指的是:直接测试应用程序编程接口(API),并作为集成测试的一部分来确定它们是否满足功能、可靠性、性能和安全性的期望。
API测试的位置
- 应用程序通常有三层:表示(UI)层、业务逻辑层(API层)和数据层。
- API层包含应用程序的业务逻辑——用户如何与应用程序的服务、数据或功能交互的规则。
- 由于业务逻辑层直接触及数据层和表示层,因此它为QA和开发团队提供了持续测试的最佳场所。虽然传统的测试主要集中在UI上,但是API测试的优势正变得众所周知。
API测试的优势
- 更早期的测试
一旦实现了逻辑,就可以构建测试来验证响应和数据的正确性,而不必等待构建前端 - 更简单的测试维护
UI是不断变化的,但是API没有这样的挑战,API测试现在被认为是自动化测试的关键,因为API现在是应用程序逻辑的主要接口。 - 更快的解决问题
当API测试失败时,我们确切地知道系统哪里坏了,哪里可以找到缺陷。 - 更快的测试速度和更广的覆盖范围
300个UI测试可能需要30小时才能运行。300个API测试可能在3分钟内运行。这意味着将在更短的时间内发现更多的bug,同时也将立即修复它们。
API测试的流程
- 开始时间
在接口文档出来的时候就可以进行接口测试了。 - 测试用例
根据接口文档去撰写接口用例。 - 测试环境
准备测试环境。 - 测试工具
测试接口有两种方式,一是用代码脚本去驱动,二是使用工具测试。 - 测试执行
根据执行结果分析问题,定位问题,并对测试过程进行调优。 - 测试报告
测试完成后进行测试总结。
API测试工具
抓包工具:Charles,Fiddler,Wireshark
测试脚本:Python,Java,Go
排行版:十大最佳API测试工具(SOAP和REST API测试工具)
(截至2019年12月14日)
- ReadyAPI
- ACCELQ
- Katalon Studio
- Postman
- REST-Assured
- Swagger.io
- JMeter
- Karate DSL
- Airborne
- APIGee
以下是top6的介绍,其实感觉我们这边用的最多的也是postman,swagger和Jmeter,其他的接触的不多呀。
产品 | ReadyAPI | ACCELQ | Katalon Studio | Postman | REST-Assured | Swagger.io |
---|---|---|---|---|---|---|
测试内容 | web(UI&API) | web(UI&API) | web(UI&API),Mobile apps | API | REST API | API生命周期的工具。 |
适合用于 | API和web服务的功能、安全性和负载测试。 | 无代码自动化逻辑,完整的测试管理,API回归规划和360跟踪 | 自动化测试 | API测试 | 在Java域中测试REST服务 | 适合API设计 |
价格 | 昂贵 | 付费+免费 | 免费 | 付费+免费 | 免费 | 付费+免费 |
兼容平台 | Windows,Linux ,MacOS | 基于云计算的连续测试 | Windows,Linux ,MacOS | Windows,Linux ,MacOS | - | - |
API 测试内容
API评判标准
- 业务功能覆盖是否完整
- 业务规则覆盖是否完整
- 参数验证是否达到要求(边界、业务规则)
- 接口异常场景覆盖是否完整
- 接口覆盖率是否达到要求
- 代码覆盖率是否达到要求
- 性能指标是否满足要求
- 安全指标是否满足要求(sql注入)
单个API测试三步骤
再往小了说,我们现在接触的API请求,主要模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程,总共只有以下这三步。
- 发送带有必要输入数据的请求
- 获取具有输出数据的响应
- 验证响应是否按要求返回
所以我们在验证时,需要验证的也常常是以下这几点:
- HTTP响应码
1xx(临时响应)
2xx (成功)
3xx (重定向)
4xx(请求错误)
5xx(服务器错误) - 返回数据格式
返回的数据格式是json或者text或者是其他 - 返回数据类型
如果是json格式的数据,那么返回的字段是string或者int或者其他的格式 - 返回数据信息
返回的信息是不是和数据库里的一致,或者是否符合预期的情况。
总结
所以API测试说难不难,说简单也绝不简单,现在的API测试是自动化测试最好的切入点,因为相比于经常变化的UI,API一旦稳定就不容易发生变化。
参考文献
【1】https://blog.****.net/ddhsea/article/details/79405996
【2】https://www.cnblogs.com/georgexu/p/11224011.html
【3】https://blog.****.net/wbj_code_life/article/details/8161275