接口测试基础
接口测试基础
接口测试理论
学习目标
- 理解接口测试的原理
- 理解接口测试的价值
接口相关概念
- 接口:系统之间数据交互的通道
- 接口测试:校验接口响应数据与预期数据是否一致
- 接⼝测试,可以绕过前端界⾯, 直接对服务器进⾏测试
接口测试价值
- 测试页面测试发现不了的问题
- 符合质量控制前移理念
- 测试成本低,效益高
接口测试实现方式
- ⼯具:
- postman:使⽤简单,上⼿难度低。功能较少。
- jmeter:使⽤难度较⼤。上⼿难度⼤。功能⻬全。
- 代码:
- Python + requests + Unittest
- java + HttpClient
HTTP协议
学习目标
- 掌握URL的组成部分
- 掌握HTTP请求数据
- 掌握HTTP响应数据
HTTP协议
- 协议:就是规则!要要求使用协议的双方必须严格遵守
- HTTP:超文本传输协议,基于请求与响应的应用层协议
- 提示:协议是不同事物之间通信的规则。
- 特点:
- 客户端、服务器模式
- 简单快速
- 灵活
- ⽆连接
- ⽆状态
URL的组成
说明:
URL:(Uniform Resource Locator)统一资源定位符,网络资源地址
HTTP使用URL来建立连接和传输数据
URL组成:
协议 :// hostname[:port] / path / [? 查询参数1 & 查询参数2]
完整语法格式:
协议://IP地址:端口号/资源路径?查询参数
- 协议:
- http、https。 作⽤:指定数据传输规则
- 域名:
- 也就是 IP 地址。 作⽤:在⽹络环境中,定位⼀台唯⼀的主机
- 端口:
- 作⽤:在 主机上,唯⼀定义个应⽤程序。
- 可以省略。如果省略,默认端口跟随协议。 http 协议默认端口为 80 。 Https 协议默认端口号是 443
- 资源路径:
- 作⽤:应⽤对应的数据资源。
- 可以省略。如果省略,资源路径默认为
/
- 查询参数 :
- 作⽤:给资源传递参数
- 可以省略。如果省略,没有
?
分割符。 - 可以有多组。每组 k=v 格式。各组之间 ⽤
&
隔分。
- 协议:
例如 :
http://www.itcast.cn:8080/news/index.html?uid=123&page=1
- http 协议的默认端口号是 80 端口
- https 协议的默认端口号是 443 端口
案例 :
- 说出下面 URL 是我各个组成部分
http://www.weather.com.cn/data/sk/101010100.html
- 协议:http
- 域名:
www.weather.com.cn
- 端口: http 协议默认端口为 80
- 资源路径:
/data/sk/101010100.html
- 查询参数 : 无
- 说出下面 URL 是我各个组成部分
HTTP请求
HTTP请求
- 定义请求数据格式, 由 请求行、请求头、空行 , 请求体组成 , 一定产生于客户端 , 当客户端给服务器发送请求时,使用该协议
- 请求⾏:请求⽅法、URL、协议版本
- 请求头:k :v
- 空⾏:代表 请求头 结束。
- 请求体:发送给服务器请求时,携带的数据。
1 | // 以下为请求方式 , 请求地址 , 协议和协议版本 |
请求行
位置:⼀定位于 http 请求协议的,第⼀⾏。格式:请求⽅法(空格) URL(空格) 协议版本
作用:说明请求方法、访问的资源、协议版本
POST
http://demo.zentao.net/user-login.html
HTTP/1.1
常用请求方法:
- GET:从服务器获取资源 , (没有请求体)
- POST:在服务器新建一个资源(注册、登录)
- PUT:在服务器更新资源
- DELETE:从服务器删除资源 (没有请求体)
请求头
- 位置:位于 请求⾏之下,空⾏之上的部分。 数据组织格式 ⼀定是
k:v
对。 - 作用:通知服务器客户端请求信息
- 特点:请求头部由键值对组成,每行一对
Content-Type : 作⽤是指定请求体的数据类型。
- application/json:请求体数据类型为json
- application/x-www-form-urlencoded:描述请求体的数据类型为表单类型。
Content-Type:请求体数据类型
- text/html: HTML 格式
- text/plain:纯文本格式
- image/jpeg:jpg 图片格式
- application/json: JSON 数据格式
- application/x-www-form-urlencoded: 表单默认的提交数据格式
- multipart/form-data: 在表单中进行文件上传时使用
请求体
位置:空白行之后的内容
- 有的请求协议是没有请求体。如:get、delete
- 请求体的数据类型, 受请求头中 Content-Type 的值影响。
作用:传输数据实体
请求体常在POST、PUT方法中使用
常配合的请求头:Content-Type和Content-Length
例如 :
account=demo&password=efc4a3b32e48054865e5a8321cfda3e4
- 请求报文中可以没有请求体数据
案例
抓包获取ihrm系统的登录接口和tpshop登录接口,解析请求数据
区分请求数据行/头/体位置
请求url:
请求方法:
请求数据类型:
请求数据:
浏览器 : F12 - Network - 选择All
HTTP 响应
HTTP响应
产生端 :
- ⼀定产⽣于服务端。 当服务器接收到 http请求协议 之后,才会产⽣ http响应协议(响应报⽂、响应包)。
定义响应数据格式:
- 响应⾏:包含协议版本、状态码、状态码描述
- 响应行也可以叫状态行
- 响应头:K:V 格式的数据。
- 空⾏:代表响应头结束。
- 响应体:服务回发给客户端的数据。⼏乎所有的响应包,都有响应体。
- 响应⾏:包含协议版本、状态码、状态码描述
状态行
- 位置:⼀定位于 http响应协议的,第⼀⾏。格式:协议版本 (空格) 状态码 (空格) 状态码描述
- 作用:描述服务器处理结果
- 内容:状态行由协议版本号、状态码、状态消息组成
HTTP/1.1 200 OK
响应状态码
状态码三位数字组成,第一个数字定义响应类别:
- 1xx:指示信息
- 2xx:成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务器端错误
常见的响应状态码 :
响应头
- 位置:第二行开始到空白行之间
- 作用:描述客户端要使用的一些附加信息
- 特点:响应头由键值对组成,每行一对
1 | HTTP/1.1 200 OK |
响应体
- 位置:响应数据空白行之后
- 作用:服务器返回的数据实体
- 特点:有图片、json、xml、html等多种类型
1 | HTTP/1.1 200 OK |
案例
- 抓包获取ihrm系统的登录接口和tpshop登录接口,解析响应数据
- 区分响应数据行/头/体
- 响应状态码
- 响应体数据类型
- 响应体具体数据
接口规范
传统接口风格
- 举例:对用户进行操作的相关接口,包括增删改查
- 特点 :
- 接口统一采用get/post实现所有操作
- URL与资源不是一一对应的。
- 在URL中查看出,是何种操作
- 状态码统一返回200
RESTful
- RESTful是一种网络应用程序的设计风格和开发方式,并不是必须要遵守的标准,只是提供了一组设计原则和约束条件
- 好处:提供了一套统一遵守的规范,方便团队配合,提高工作效率
- 特点 :
- 接口使用的方法,与http协议的请求方法,,一一对应。
- get-查、post-增、put-改、delete-删 , URL与资源一一对应!
- 不能从URL中,看出是何种操作。需要通过结合请求方法来识别何种操作。
- 响应状态码使用较为全面。
接口API设计规范
特点: 面向资源
1 , 请求 API 的 URL 用来定位资源(名词表示)
- 2 , 通过标准HTTP方法对资源CRUD
- 3 , 利用HTTP状态码返回状态信息
传统风格和RESTful对比
- 传统风格接口:get、post方法。URL不唯一。统一返回200
- RESTfuI风格接口:URL唯一,定位资源。结合请求方法对应不同操作。返回状态码较灵活。
接口测试流程
需求分析(产品经理的需求⽂档)
接⼝⽂档解析(开发编写的接⼝API⽂档)
设计 接⼝测试⽤例(编写 Excel 表格形式的⽤例)
准备接⼝测试脚本
postman ⼯具 ⽣成脚本
python 代码 编写脚本
执⾏测试⽤例,跟踪缺陷
⽣成 接⼝测试报告
接⼝⾃动化持续集成(可选)
接口文档解析
接口文档介绍
- 什么是接口文档 : 也叫 API ⽂档,⼀般由后端开发⼯程师编写。⽤来描述接⼝信息的⽂档。
- 接口文档的作用 , 为什么要写接口文档 :
- 协同:团队⼈员⼯作协同配合
- 约束:项⽬更新修改同步维护
接口文档解析
- 为什么要进行接口解析?
- 通过分析接⼝⽂档,熟悉接⼝信息。
- 通过接⼝⽂档获取,接⼝测试所使⽤的 请求数据、预期结果。
- 解析的核⼼⽬标 :
熟悉接口的相关信息,为设计接口用例准备
请求报⽂关键数据:
- 请求⽅法、URL、请求数据(请求头、请求体)
响应报⽂关键数据:
- 响应状态码、响应数据(响应体)
接口文档解析
- 接口文档:又称为API文档,是由后端开发编写,用来描述接口信息的文档。
接口文档内容
案例
- 需求:解析ihrm系统API文档中部分接口信息
登录
添加员工
查询员工
修改员工
删除员工
城市列表
用户资料
思考
- 接口API文档包含哪些内容?
- 接口解析重点需要分析哪些内容?
- 是否按照excel模版要求完成指定的接口解析?
总结
- 能够分析HTTP协议的请求和响应报文
- 完成ihrm系统指定单接口的API文档解析
接口测试用例设计
学习目标
- 掌握接口测试用例设计方法
- ihrm系统登录/员工管理相关接口用例设计
接口测试质量维度
功能测试
- 单接口功能测试:
- 一个单独的业务,就对一个独立的接口。如:登录业务,对应登录接口。
- 业务场景功能测试:
- 多个接口被连续调用。(模拟用户的实际使用场景)
性能测试
- 响应时长:从发送请求到接收到服务器回发响应包所经历的时间。
- 错误率:服务器运行出错的概率
- 吞吐量:服务器单位时间内,处理请求的数量。
- 服务器资源利用率:cpu、内存、网络、磁盘等硬件资源的占用率。
安全测试
- 攻击安全:木马、病毒.由具备专业安全技术,会使用专业安全测试工具的安全测试工程师负责。
- 业务安全:必须登录,才能访问用户数据。敏感数据加密存储。
- SQL注入
接口用例设计方法
单接口测试
- ⼀个单独的业务,就对⼀个独⽴的接⼝。如:登录业务,对应登录接⼝。注册业务,对应注册接⼝。⽀付业务,对应⽀付接⼝。
- 正向:
- 必选 参数。 所有必选项,给正确数据
- 组合 参数。 所有必选 + 任意可选,给正确数据。
- 全部 参数。 所有必选 + 所有可选。给正确数据。
- 反向:
- 功能异常:数据格式正确,不能履⾏接⼝功能。
- 数据异常:数据格式不正确(空值、特殊字符、汉字、字⺟、⻓度、范围 —- 等价类、边界值)
- 参数异常:
- 多参:多出 必选参数
- 少参:缺少 必选参数
- ⽆参:没有 指定参数
- 错误参数:参数名 错误。
- 正向:
业务场景测试
- ⼀定在 单接⼝ 测试 之后!
- 尽量模拟⽤户实际使⽤场景。
- 尽量⽤最少的⽤例,覆盖最多的接⼝请求。
- ⼀般情况下,覆盖正向测试即可。
接口测试用例设计实践
- 完成登录接口+新增/查询/修改/删除员工+指定业务场景用例设计
- 按照接口测试方法进行测试点分析
- 从测试点转化测试用例
- 使用Postman进行接口测试
- 指导思想:模拟⽤户实际使⽤,⽤较少的测试⽤例,覆盖更多接⼝,测试正向即可。
- 登录 - 添加员⼯ - 查询员⼯ - 修改员⼯ - 删除员⼯ - 查询员⼯列表
登录
- 正向:
- 登录成功
- 反向:
- 功能异常:
- ⼿机未注册
- 密码错误
- 数据异常:
- ⼿机号为空
- ⼿机号含有字⺟、特殊字符
- ⼿机号12位
- ⼿机号10位
- 密码为空
- 密码含有字⺟、特殊字符
- 密码1位
- 密码100位
- 参数异常:
- 多参:多出abc
- 少参:缺少-mobile
- ⽆参:
- 错误参数:修改 mobile 为 abc
- 功能异常:
新增
- 正向:
- 必选参数
- 姓名 + ⼿机号+⼯号
- 组合参数
- 姓名 + ⼿机号+⼯号 + 聘⽤形式
- 全部参数
- 全部必选 + 全部可选
- 反向:
- 功能异常
- ⼿机号已经存在
- ⼯号已经存在
- ⼊职时间 晚于 转正时间
- 数据异常
- ⽤户名为空
- ⽤户名为纯数字
- ⽤户名为纯字⺟
- ⽤户名含有特殊字符、汉字
- ⼿机号为空
- ⼿机号含有字⺟、特殊字符
- 10位⼿机号
- 12位⼿机号
- ⼿机号⾮1开头
- ⼯号为空
- ⼯号包含字⺟、特殊字符
- 21位⼯号
- 1位⼯号
- 6位⼯号
- ⼊职时间格式不正确
- 聘⽤形式取值 3
- 聘⽤形式取值含有 特殊字符、字⺟
- 部⻔ id 不存在
- 部⻔ id 含有 特殊字符、字⺟
- 参数异常
- 多参:多 abc
- 少参:少 username
- ⽆参:缺少所有必须项
- 错误参数:workNumber 参数名错,为 abc
- 功能异常
- 必选参数
查询
- 使⽤ 资源路径: /api/sys/user/:target 包含 :target 为 ”路径参数“。 ⽤来指代 待查询的 员⼯id
- 设计测试点:
- 员⼯id存在
- 员⼯id不存在
- 没有指定员⼯查询
- 登录系统后,对员工进行增删改查的操作
- 感谢你赐予我前进的力量