接口测试理论
概念
- 接口:系统之间(外部系统与内部系统,内部系统与内部系统)数据交通的通道
- 接口测试:校验 接口回发的 响应数据与预期结果 是否一致
- 接口测试,可以饶过前端界面。直接对服务器进行测试
价值
- 可以发现页面测试发现不了的问题
- 符合 质量控制前移理念
- 低成本,高效益
实现方式
- 工具:
- postman:使用简单,上手难度低。功能较少。
- jmeter:使用难度较大。上手难度大。功能齐全。
- 代码:
- Python+request+Unittest
- java+HttpClient
HTTP协议
协议:就是规则! 要求使用协议的双方必须 严格遵守
HTTP协议简介
- 简介:超文本传输协议,基于请求与响应的 应用层协议
- 特点:
- 客户端、服务器模式
- 简单快速
- 灵活
- 无连接
- 无状态
URL格式
完整语法格式:协议://IP地址:端口号/资源路径?查询参数
- 协议
- http、https。作用:指定数据传输规则
- IP地址:
- 也就是域名。作用:在网络环境中,唯一定位一台主机
- 端口号:
- 作用:在主机上,唯一定位一个应用程序
- 可以省略。如果省略,跟随协议。http-80,https-443
- 资源路径
- 作用:应用对应的数据资源
- 可以省略。如果省略,资源路径为”/“
- 查询参数:
- 作用:给资源传递参数
- 可以省略。如果省略,没有?分隔符
- 可以有多组。每组k=v格式。各组之间用"&"分隔
HTTP请求
产生端:
- 一定产生于客户端。当客户端给服务器发送请求时,使用该协议。(请求报文,请求包)
整体格式
- 请求行:请求方法、URL、协议版本
- 请求头k:v
- 空行:代表请求头结束
- 请求体:发送给服务器请求时,携带的数据
【示例】:
POST http://demo.zentao.net/user-login.html HTTP/1.1
Host: demo.zentao.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
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
Upgrade-Insecure-Requests: 1
account=demo&password=efc4a3b32e48054865e5a8321cfda3e4
请求行
-
一定位于http请求协议的第一行,格式:请求方法(空格)URL(空格)版本协议
-
请求方法:
- GET:查询----没有请求体
- POST:添加(注册、登录)
- DELETE:删除 —没有请求体
- PUT:修改
-
URL:见上
-
协议版本:常见HTTP/1.1
请求头
- 位于请求行 之下 空行之上部分。数据组织格式一定是k:v对
- Content-Type:作用,指定请求体的数据类型
- application/json:请求体数据类型为json
- application/x-www-from-urlencoded:请求的数据为标单类型
请求体
-
位于 空行之下
-
有的请求协议是没有请求体的。如:get、delete
-
请求体的数据类型,受请求头中 Content-Type的值影响。
HTTP响应
产生端:
- 一定产生于服务端。当服务器接收到http请求协议之后,才会产生http响应协议(响应报文、响应包)
整体格式
- 响应行:协议版本、状态码、状态码描述
- 响应头:K:V格式数据
- 空行:代表响应头 结束
- 响应体:服务回发给客户端的数据 几乎所有的响应包 都有响应体。
【示例】:
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响应协议的 第一行。格式:协议版本(空格)状态码(空格)状态码描述
- 状态码:5类:
- 1xx:指示信息
- 2xx:成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务端错误
响应头
- 位于相应行之下,空行之上的部分。数据组织格式一定是K:V对。
响应体
- 位于 空行之下
- 几乎所有响应协议都有响应体
- 响应体中 包含的数据,是接口测试过程中,所要使用的实际结果!
ihrm项目介绍
- 人力资源管理系统
- URL:http://ihrm-test.itheima.net
- 模块:
- 员工管理
- 组织架构(部门管理)
- 招聘管理
- 考勤管理
- 绩效管理
- …
接口规范
传统风格接口
接口统一采用 get/post实现所有操作
URL 与资源不是一一对应的。在URL中查看出,是何种操作。
状态码统一返回200
RESTful风格接口
接口使用的方法,与http协议的请求方法,一一对应。
get -查、post-增、put-改、delete-删
URL与资源一一对应!不能从URL中,看出是何种操作。需要通过结合请求方法来识别何种操作。
响应状态码 使用较为全面。
小结
- 传统风格接口:只用get、post方法。URL不唯一,统一返回200
- RESTful风格接口:URL唯一,定位资源。结合请求方法对应不同操作。返回状态码 较灵活