API:应用程序接口(全称:application programming interface),缩写为API,是一种计算接口,它定义多个软件中介之间的交互,以及可以进行的调用(call)或请求(request)的种类,如何进行调用或发出请求,应使用的数据格式,应遵循的惯例等。它还可以提供扩展机制,以便用户可以通过各种方式对现有功能进行不同程度的扩展。一个API可以是完全定制的,针对某个组件的,也可以是基于行业标准设计的以确保互操作性。通过信息隐藏,API实现了模块化编程,从而允许用户实现独立地使用接口。
接口测试是软件测试的一种,它包括两种测试类型:狭义上指的是直接针对应用程序接口(下面使用缩写API指代,其中文简称为接口)的功能进行的测试;广义上指集成测试中,通过调用API测试整体的功能完成度、可靠性、安全性与性能等指标。
API Best Practice:
- API 定义遵循RESTFUL API 风格,语意化的URI定义,准确的HTTP 状态码,通过API的定义就可以知道资源间的关系
- 配有详细且准确的API文档(如Swagger 文档)
- 对外的API 可以包含版本号以快速迭代(如https://thoughtworks.com/v1/users/)
测试四象限中不同象限的测试,其测试目的跟测试策略也不同,API 测试主要位于第二、第四象限
API测试在测试金子塔中处于一个相对靠上的位置,主要站在系统、服务边界来测试功能和业务逻辑,执行时机是在服务完成构建、部署到测试环境之后再执行、验证。
功能测试
- 正确性测试
- 异常处理
- 内部逻辑
- ……
非功能测试
- 性能
- 安全
- ……
- 发送请求
- 得到响应
- 验证响应结果
设计理论
- 正面
- 负面
- 异常处理
- 内部逻辑
- ……
测试方法
- 等价类划分
- 边界值
- 错误推断
- ……
安全测试
- 随机测试
- SQL注入
- XSS
- ……
性能测试
- 性能瓶颈
- 稳定性测试
- ……
API请求工具
- CURL
- Soap UI
- Postman
- Swagger UI
- ……
Http proxy工具
- Fiddler
- Charles
- ……
API性能测试工具
- ab(apache bench)
- Jmeter
- ……