目标
1. 能根据实际的URL说出其具体的组成部分(协议、域名、端口、资源路径、请求参数) 2. 能根据接口API文档解析出接口的请求方法、URL、请求头、请求体和响应数
一、接口测试理论
1.【了解】接口的概念
-
接口:系统之间数据交互的通道
2.【重点】接口测试的原理
-
按照接口规则, 发送请求, 校验响应结果是否符合预期
-
接口测试是用其他工具来模拟客户端,所以接口测试,是脱离页面进行的
3.【记忆】接口测试的价值
面试可能会问:为什么需要做接口测试?
-
可以发现一些页面操作发现不了的问题
-
页面只能输入用户名和密码,只有2个参数
-
接口测试可以多参
-
前端页面可能做了一些参数的预处理 操作
-
-
符合质量控制前移的理念
-
测试可以提前介入, 提早发现Bug
-
在前端没有完成前,提前测试后端服务接口的功能
-
-
接口测试低成本高效益
-
性价比高
-
接口自动化效率高
-
4.【知道】接口测试的实现方式
-
工具
-
Postman
-
JMeter
-
-
代码
-
Python + Requests
-
Java + HttpClient
-
二、HTTP协议
1.【拓展】HTTP协议和接口文档关系
-
协议
-
通信的规则
-
-
HTTP协议
-
协议的其中一种
-
https ftp ssh
-
-
接口规范文档
-
如何发请求的要求文档,获取什么响应内容的说明文档
-
-
规范客户端如何发送请求报文,规范服务器如何发送响应报文
2.【了解】HTTP协议介绍
-
支持客户端和服务器模式
-
CS:客户端服务器模式,手机端app版淘宝
-
BS:浏览器服务器模式,电脑网页版淘宝
-
-
简单快速:HTTP协议基于URL来传输数据,所以简单快速
-
需要任何服务,只需要输入网址即可
-
-
灵活:HTTP协议支持多种数据类型,所以很灵活
-
无连接:HTTP协议限制每次连接只处理一个请求,这个连接处理完毕之后,就会关闭连接
-
无状态:HTTP协议不会保存客户端和服务器之间的数据,每次请求都需要重新发送数据
3.【重点】URL
-
URL是 统一资源定位符, 是互联网上标准资源的地址
-
URL组成
-
协议 :// hostname[:port] / path / [? 查询参数1 & 查询参数2]
-
http://www.itcast.cn:8080/news/index.html?uid=123&page=1
URL由5个部分组成
-
协议部分:
http
, 常见的协议有HTTP, HTTPS、 FTP等 -
域名部分:
www.itcast.cn
, 就是平时的网址,也可以使用IP地址作为域名使用 -
端口部分:
8080
, 有些服务器有 默认端口,这时候可以省略端口( HTTP:80, HTTPS:443, FTP:21) -
资源路径(也叫请求路径)部分:
/news/index.html
-
查询参数(也叫请求参数)部分:
uid=123&page=1
, 可以允许有多个参数, 多个之间用“&”作为分隔符 -
请说出下面URL的各个组成部分
http://www.weather.com.cn/data/sk/101010100.html
-
协议
-
域名
-
端口
-
资源路径
-
查询参数
-
4.【重点】HTTP请求报文
4.1【记忆】HTTP请求数据格式
-
组成:行、头、体
-
请求行、请求头、请求体
-
4.2【重点】HTTP请求行
-
位置: 请求数据第一行
-
作用: 说明请求方法、 访问的资源、 协议版本
POST http://demo.zentao.net/user-login.html HTTP/1.1
-
常用请求方法
-
GET: 从服务器获取资源(查询)
-
POST: 在服务器新建一个资源(添加)
-
PUT: 在服务器更新资源(修改)
-
DELETE: 从服务器删除资源(删除)
-
-
其他请求方法: HEAD、 TRACE、 CONNECT、 OPTIONS
4.3【知道】HTTP请求头
-
位置: 第二行到空白行之间
-
作用: 通知服务器客户端请求信息
-
特点: 请求头部由键值对组成, 每行一对
-
HTTP请求头中,有两个键值对需要关注
-
User-Agent:产生请求的浏览器类型
-
Content-Type:请求体数据的类型
-
text/html: HTML格式
-
text/plain: 纯文本格式
-
image/jpeg: jpg图片格式
-
application/json: JSON数据格式
-
application/x-www-form-urlencoded: 表单默认的提交数据格式
-
multipart/form-data: 在表单中进行文件上传时使用
-
-
-
4.4【重点】HTTP请求体
-
位置: 空白行之后的内容
-
作用: 传输数据实体
-
请求报文中可以没有请求体数据
-
-
请求体常在POST、 PUT方法中使用
-
常配合的请求头: Content-Type和Content-Length
4.5【案例】解析ihrm系统登录接口的请求数据
POST http://ihrm2-test.itheima.net/api/sys/login HTTP/1.1 Host: ihrm-test.itheima.net Connection: keep-alive Content-Length: 44 Accept: application/json, text/plain, */* User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Content-Type: application/json;charset=UTF-8 # 请求体的数据类型 Origin: http://ihrm-test.itheima.net Referer: http://ihrm-test.itheima.net/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 {"mobile":"13800000002","password":"123456"}
-
区分请求数据行/头/体位置
-
请求方法
-
请求URL
-
请求数据类型
-
请求体(请求数据)
5.【重点】HTTP响应报文
5.1【记忆】HTTP响应数据格式
-
组成:行、头、体
-
状态行(也叫响应行)、响应头、响应体
-
5.2【重点】状态行
-
位置: 响应数据中第一行
-
作用: 描述服务器处理结果
-
内容: 状态行由协议版本号、 状态码、 状态消息组成
HTTP/1.1 200 OK
-
状态码三位数字组成, 第一个数字定义响应类别
-
1xx: 信息,服务器收到请求,需要请求者继续执行操作
-
2xx: 成功,操作被成功接收并处理
-
3xx: 重定向,需要进一步的操作以完成请求
-
4xx: 客户端错误,请求包含语法错误或无法完成请求
-
5xx: 服务器错误,服务器在处理请求的过程中发生了错误
-
5.3【了解】响应头
-
位置: 第二行开始到空白行之间
-
作用: 描述客户端要使用的一些附加信息
-
特点: 响应头由键值对组成, 每行一对
5.4【知道】响应体
-
位置: 响应数据空白行之后
-
作用: 服务器返回的数据实体
-
特点: 有图片、 json、 xml、 html等多种类型
5.5【案例】解析ihrm系统登录接口的响应数据
HTTP/1.1 200 Server: nginx Date: Thu, 15 Jul 2021 09:57:07 GMT Content-Type: application/json;charset=UTF-8 Connection: keep-alive Vary: Accept-Encoding Access-Control-Allow-Origin: * Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Wed, 14-Jul-2021 09:57:12 GMT Vary: Origin Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Content-Length: 103 {"success":true,"code":10000,"message":"操作成功!","data":"1fd5717d-50aa-43fb-b8e3-fba77d103ee8"}
-
区分响应数据行/头/体
-
响应状态码
-
响应体数据类型
-
响应体具体数据
三、接口规范和测试流程
为什么要制定API设计规范?
-
提供了一套统一遵守的规范, 方便前后端进行通信。
1.【了解】传统风格接口![](https://i-blog.csdnimg.cn/blog_migrate/a3b9f0f7ca9ed8db60a928d2a0a8d930.png)
特点:
-
请求 API 的 URL 用来定位资源同时包含对资源的操作(动词表示)
-
通过标准HTTP请求方法只有GET和POST
-
只看请求方法,不知道操作什么
-
-
HTTP状态码大部分都是200
2.【知道】RESTful风格接口
-
RESTful是一种网络应用程序的设计风格和开发方式, 并不是必须要遵守的标准, 只是提供了一组设计原则和约束条件
特点:
-
请求 API 的 URL 用来定位资源(名词表示,不是动词)
资源集合 /users //所有用户 单个资源 /users/1 //id为1的用户
-
通过标准HTTP请求方法对资源进行操作
GET /users/1 //获取id为1的用户 GET /users //获取所有用户 POST /users/1 //新增id为1的用户 PUT /users/1 //修改id为1的用户 DELETE /users/1 //删除id为1的用户
-
利用HTTP状态码返回状态信息
3.【记忆】接口测试流程
为什么要学习接口测试流程?
-
为了以后的工作:以后工作都是按照流程来开展
-
为了以后的面试:面试官会问,你是怎么进行接口测试?(回答接口测试流程)
-
需求分析
-
产品,开发,测试 对需求的理解 达成一致
-
查漏补缺
-
-
接口文档解析
-
开发输出接口文档后,测试人员看懂接口文档,解析文档的关键信息
-
-
设计接口测试用例
-
根据接口文档解析的结果,结合需求设计测试用例
-
-
执行接口测试
-
工具执行:Postman或jmeter
-
代码:Python + Requests
-
-
缺陷的管理与跟踪 jira 禅道
-
输出测试报告
-
测试快结束的时候,生成测试报告,将测试报告同步到项目组,确认此次迭代是否可以上线
-
-
进行接口的自动化和持续集成(可选)
四、接口文档解析
1.【知道】接口解析说明
-
为什么要进行接口解析?
-
熟悉接口的相关信息, 为设计接口用例准备
-
-
接口解析要关注的核心要素?
-
请求报文: 请求方法/请求路径/请求数据
-
响应报文: 响应状态码/响应数据
-
2.【知道】接口文档
-
API文档: 又称为API文档, 是由后端开发编写, 用来描述接口信息的文档。
-
为什么要写接口文档?
-
协同: 团队人员工作协同配合
-
约束: 项目更新修改同步维护
-
-
接口文档内容的组成部分(记忆)
-
基本信息
-
接口名称、 接口描述
-
-
请求参数
-
请求方法
-
请求路径
-
请求头
-
请求数据: 字段、 说明、 类型、 备注、 是否必填
-
-
返回参数
-
响应状态码
-
响应数据: 字段、 说明、 类型、 备注、 是否必填
-
data结构类型
-
-
五、拓展
1.【拓展】通过浏览器的开发者工具抓包
步骤:
-
打开需要抓包的网页
-
打开浏览器的开发者工具
-
选择 Network
-
刷新网页
-
查看请求报文和响应报文
2.【拓展】Session+Cookie认证机制
-
通俗例子
-
专业流程
3.【拓展】token认证机制
-
通俗例子
- 专业流程
- 专业流程