接口测试
一、基础知识
1. 接口API
API,全称 Application Programma Interface。通俗的说,就是某一个功能的实现或展示基于对另一个功能的调用,那么调用与被调用之间的连接点就是接口。
2. 接口测试
是测试系统组件间接口的一种测试。主要是检查数据的交换,传递和控制管理过程,以及系统之间的相互逻辑依赖关系。
现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
3. 接口测试工作原理
URL通过get或者post请求像服务器发送一些东西,然后得到一些相应的返回值。
4. 接口测试本质
本质就是数据的传输与接收。
二、组成部分
1. 接口地址
URL,Uniform Resource Localtor,统一资源定位器。
实例:http://127.0.0.1:8000/api/departments/
转业名词 | 符号 | 备注 |
---|---|---|
访问协议 | http | https 、 ftp 、 ftps ... |
服务器的IP地址 | 127.0.0.1 | |
服务器的端口号 | 8000 | 基于http协议的一般是80 基于https协议的一般是443 |
资源路径 | /api/departments/ | 一个资源路径一般映射一个接口实现 |
2. 请求方式
请求方式 | 功能 | 数据库对应操作 |
---|---|---|
GET | 查 | select |
POST | 增 | update |
PUT | 改 | insert |
DELET | 删 | delet |
GET和POST的比较
(1) 提交方式不同(GET提交的数据显示在地址栏,而 POST 隐式的提交数据,后者更安全)
(2) 可提交的数据量不同(GET提交的数据量有限制,而 POST 无限制)
(3) 执行效率不同(GET 的执行效率比 POST 稍高)
然而在实际开发过程中
(1) 很多人贪方便,更新资源时用了GET,因为用POST必须要到FORM(表单),这样会麻烦一点。
(2)对资源的增,删,改,查操作,都通过GET/POST完成,没有用到PUT和DELETE。
(3)早期的Web MVC框架设计者们并没有有意识地将URL当作抽象的资源来看待和设计,所以导致一个比较严重 的问题是传统的Web MVC框架基本上都只支持GET和POST两种HTTP方法,而不支持PUT和DELETE方法。
3. 参数类型
(1)键值对格式
username=huluwa&password=jiuyeye&aihao=tuhuo&aihao=tuishui&aihao=yinshen
(2)JSON格式
{ "username":"huluwa",
"password":"jiuyeye",
"aihao":["tuhuo","tushui","yinshen"]
}
4. HTTP header
Http header请求头分为两部分,分别是Request headers、Response headers。
响应结果状态码
(response code | status code)
1xx: 请求正常,但是无响应,只在实验状态下使用
2xx: 请求正常,响应正常,比如: 200 201 204 ...
3xx: 以其他方式获取响应,比如: 302 重定向 304 取本地缓存
4xx: 浏览器端异常,比如: 404 资源路径有误
5xx: 服务器端异常,比如: 500 服务器运行异常
响应结果状态体
响应html文档,比如:访问百度首页
响应JSON数据,比如:查询直播列表响应的数据
三、文档分析
关注标准接口文档
参数 | |
---|---|
URL | 接口路径 |
参数 | 接口请求参数 |
请求类型 | get or post |
返回参数 | 返回的数据 |
错误类型 | 请求出错后返回相应的错误类型 |
加密方式 | 参数加密方式,一般为hash+salt |
四、接口实例
调用京东云接口查询深圳天气。
返回的Headers
返回的Body
{
"code": "10000",
"charge": false,
"msg": "查询成功",
"result": {
"HeWeather5": [
{
"aqi": {
"city": {
"aqi": "38",
"co": "0.5",
"no2": "15",
"o3": "119",
"pm10": "32",
"pm25": "15",
"qlty": "优",
"so2": "6"
}
},
"basic": {
"city": "深圳",
"cnty": "中国",
"id": "CN101280601",
"lat": "22.547001",
"lon": "114.085945",
"update": {
"loc": "2021-12-10 15:17",
"utc": "2021-12-10 07:17"
}
...
"dew": "14",
"fl": "24",
"hum": "53",
"pcpn": "0.0",
"pres": "1011",
"tmp": "24",
"vis": "30",
"wind": {
"deg": "135",
"dir": "东南风",
"sc": "2",
"spd": "7"
}
},
"status": "ok",
"suggestion": {
"air": {
"brf": "中",
"txt": "气象条件对空气污染物稀释、扩散和清除无明显影响,易感人群应适当减少室外活动时间。"
},
"comf": {
"brf": "舒适",
"txt": "白天不太热也不太冷,风力不大,相信您在这样的天气条件下,应会感到比较清爽和舒适。"
},
...
]
},
"requestId": "d5c9ea06fe95495db45a8ce1e50358e7"
}
}