接口测试基础
一、接口测试理论
接口:系统之间数据交互的通道
接口测试:校验接口响应数据与预期数据是否一致
接口测试价值:
- 测试页面测试发现不了的问题
- 符合质量控制前移理念
- 测试成本低,效益高
接口测试-实现
工具
- Postman
- JMeter
代码
- Python + Requests
- Java + HttpClient
HTTP协议
HTTP:超文本传输协议,基于请求与响应的应用层协议
HTTP请求—定义请求数据格式:请求行、请求头、请求体
HTTP响应—定义响应数据格式:状态行、响应头、响应体
HTTP请求-请求行
- 位置:请求数据第一行
- 作用:说明请求方法、访问的资源、协议版本
POST http://demo.zentao.net/user-login.html HTTP/1.1
常用请求方法:
GET:从服务器获取资源
POST:在服务器新建一个资源
PUT:在服务器更新资源
DELETE:从服务器删除资源
HTTP请求-请求头
- 位置:第二行到空白行之间
- 作用:通知服务器客户端请求信息
- 特点:请求头部由键值对组成,每行一对
Host:demo.zentao.net
Accept-Encoding: gzip, deflate
Referer: http://demo.zentao.net/user-login.html
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: keep-alive
Content-Type:请求体数据类型
- text/html: HTML格式
- text/plain:纯文本格式
- image/jpeg:jpg图片格式
- application/json: JSON数据格式
- application/x-www-form-urlencoded: 表单默认的提交数据格式
- multipart/form-data: 在表单中进行文件上传时使用
HTTP请求-请求体
- 位置:空白行之后的内容
- 作用:传输数据实体
- 请求体常在POST、PUT方法中使用
- 常配合的请求头:Content-Type和Content-Length
account=demo&password=efc4a3b32e48054865e5a8321cfda3e4
HTTP响应-状态行
- 位置:响应数据中第一行
- 作用:描述服务器处理结果
- 内容:状态行由协议版本号、状态码、状态消息组成
HTTP/1.1 200 OK
状态码三位数字组成,第一个数字定义响应类别:
- 1xx:指示信息
- 2xx:成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务器端错误
HTTP响应-常见响应状态码
状态码 | 状态信息 | 说明 |
---|---|---|
200 | OK | 服务器成功返回用户请求的数据 |
201 | CREATED | 用户新建或修改数据成功 |
204 | NO CONTENT | 用户删除数据成功 |
301 | Moved Permanently | 被请求的资源已永久移动到新位置 |
302 | Move Temporarily | 被请求的资源临时性移动到新位置 |
400 | Bad Request | 客户端请求有语法错误,不能被服务器所理解 |
401 | Unauthorized | 未授权的(未登录 |
403 | Forbidden | 表示用户得到授权,但是访问是被禁止的 |
404 | Not Found | 请求资源不存在 |
500 | INTERNAL SERVER ERROR | 服务器发生错误,用户将无法判断发出的请求是否成功 |
503 | Server Unavailable | 服务器当前不能处理客户端的请求,一段时间后可能恢复正常 |
HTTP响应-响应头
- 位置:第二行开始到空白行之间
- 作用:描述客户端要使用的一些附加信息
- 特点:响应头由键值对组成,每行一对
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type:text/html;charset=UTF-8
<html>
<head></head>
<body>...</body>
</html>
HTTP响应-响应体
- 位置:响应数据空白行之后
- 作用:服务器返回的数据实体
- 特点:有图片、json、xml、html等多种类型
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
<html>
<head></head>
<body>...</body>
</html>
二、接口规范和测试流程
接口规范
RESTful
RESTful是一种网络应用程序的设计风格和开发方式,并不是必须要遵守的标准,只是提供了一组设计原则和约束条件
操作 | 请求方式 | URL | 成功状态码 |
---|---|---|---|
查询某个用户 | GET | http://127.0.0.1:8080/myweb/users/1 | 200 |
查询所有用户 | GET | http://127.0.0.1:8080/myweb/users | 200 |
添加用户 | POST | http://127.0.0.1:8080/myweb/users | 201 |
修改用户 | PUT | http://127.0.0.1:8080/myweb/users/1 | 201 |
删除用户 | DELETE | http://127.0.0.1:8080/myweb/users/1 | 204 |
接口API设计规范
特点: 面向资源
-
请求 API 的 URL 用来定位资源(名词表示)
资源集合 /users //所有用户 单个资源 /users/1001 //id为1001的用户
-
通过标准HTTP方法对资源CRUD
GET /Users //获取所有用户
GET /Users/1001 //获取id为1001的用户
POST /Users/1002 //新增id为1002的用户
PUT /Users/1001 //修改id为1001的用户
DELETE /Users/1001 //删除id为1001的用户
传统风格和RESTful对比
接口规范 | 请求方式 | URL | 状态码 |
---|---|---|---|
传统风格 | 使用post完成增删改查 | url定义资源和操作混合 | 均为200 |
RESTful | 遵循HTTP协议方法定义 | url仅定义一个资源,不包含对资源的操作 | 遵循HTTP协议状态码定义 |
接口测试流程
需求分析、接口文档解析、设计测试用例、脚本开发、执行及缺陷跟踪 、生成测试报告、接口自动化持 续集成 (可选)
接口文档解析
-
为什么要进行接口解析?
熟悉接口的相关信息,为设计接口用例准备 -
接口解析要关注的核心要素?
请求报文:请求方法/请求路径/请求数据
响应报文:响应状态码/响应数据
接口文档:又称为API文档,是由后端 开发编写,用来描述接口信息的文档。
为什么要写接口文档?
协同:团队人员工作协同配合
约束:项目更新修改同步维护