前后端
前端:是肉眼所能见到的界面
后端:处理数据,数据逻辑
接口:提供前后端交互的通道
接口测试:校验接口返回的响应数据是否与预期的一致
接口测试可以绕过前端,直接对服务器进行测试
请求方式 post get
响应回来结果 登录成功,登录失败 数据
实现方式:
postman/jmeter
python+request+unittest
java+httpClient
HTTP协议
超文本传输协议,基于请求与响应的应用层
特点:b/s模式,简单快速,灵活,无连接,无状态
完整语法格式:协议 :// IP地址:端口号/资源路径?查询参数
39.167.90.145 /www.baidu.com 一个ip地址可以对应多个域名
HTTP请求
产生于客户端
请求行
位于请求的第一行,包括请求方法,url,协议版本
请求方法:
GET:查询 —— 没有请求体
POST:添加 (注册、登录)
DELETE:删除 —— 没有请求体
PUT:修改
请求头
位于 请求行之下,空行之上的部分。 数据组织格式 一定是 k:v 对。
Content-Type : 作用,指定 请求体的数据类型。
application/json:请求体数据类型为json
application/x-www-form-urlencoded:请求体的数据类型 为 表单类型。
请求体
位于 空行 之下。
有的 请求协议 是没有请求体。如:get、delete
请求体的数据类型, 受 请求头中 Content-Type 的值影响。
携带的数据,以&为间隔
抓一个接口?需要关注
接口地址、接口参数、请求方式、响应内容
HTTP响应
产生于服务端,服务器收到客户端的请求协议之后才产生响应
响应行
/状态行:版本协议,状态码,状态码描述
状态码分为5类:
1xx 提示信息
2XX 成功
3XX 重定向
4XX 客户端错误
5XX 服务器错误
响应头
位于 响应行之下,空行之上的部分。 数据组织格式 一定是 k:v 对
响应体
位于 响应头之下 ,几乎所有 响应协议 都有响应体。
响应体中 包含的数据,是接口测试过程中,所要使用的 实际结果!!
接口规范
传统风格接口:采用get/post实现所有操作,状态码统一返回200, URL 与 资源不是 一一对应的。在 URL 中查看出,是何种操作
RESTful风格接口
接口使用的方法,与 http协议的 请求方法,一一对应。
get - 查、post - 增、put - 改、delete - 删
URL 与 资源 一一对应!不能从 URL 中,看出 是 何种操作。 需要通过 结合 请求方法 来识别何种操作。
响应状态码 使用较为全面。
接口测试流程
1. 需求分析(产品经理的需求文档)
2. 接口文档解析(开发编写的 接口API文档)
3. 设计 接口测试用例(编写 Excel 表格形式的用例)
4. 准备接口测试脚本
postman 工具 生成脚本
python 代码 编写脚本
5. 执行测试用例,跟踪缺陷
6. 生成 接口测试报告
7. 接口自动化持续集成(可选)
接口文档:API文档 一般由后端开发人员编写,用来描述接口信息的文档。
接口文档的作用
协同:团队人员工作协同配合
约束:项目更新修改同步维护
解析接口文档
为什么要解析
通过分析接口文档,熟悉接口信息。
通过接口文档获取,接口测试所使用的 请求数据、预期结果。
解析的核心目标
1. 请求报文关键数据
请求方法、URL、请求数据(请求头、请求体)
2. 响应报文关键数据
响应状态码、响应数据(响应体)
postman基本使用
get请求
post请求
接口用例设计
大致分为功能测试,性能测试,安全测试
功能测试
单接口:单独的业务,如登录业务,对应的登录接口
正向测试
必填参数组合 p0
必填+非必填组合 p2/p3
全部参数组合 p1
反向测试
1.功能异常 p1
2.数据异常 p2 (空,类型不符合,长度不符合)
3.参数异常(多参,少参,无参,错误参数)
业务场景功能测试:多个接口被连续调用(模拟用户实际使用场景)
尽量模拟用户实际使用场景,
尽量用最少的用例覆盖最多的接口请求
一般覆盖正向测试即可
性能测试
响应时长:从发送请求到接收到服务器回发响应包所经历的时间
错误率:服务器运行出错的概率
吞吐量:服务器单位时间内处理请求的数量
服务器资源利用率:cpu,内存,网络,磁盘等硬件资源的占用率
安全测试
攻击安全:木马,病毒
业务安全:必须登录才能访问用户数据,敏感数据加密存储
postman断言
1. 断言响应状态码
2.断言包含某字符串
3. 断言JSON数据
postman断言原理
Postman 关联
简介
当接口和接口之间,有依赖关系时,需要借助 postman 关联技术,来实现。
如: 登录接口 返回的 令牌数据,被 添加员工接口依赖。
添加员工接口 返回 员工id,被 查询员工接口依赖。
实现步骤
核心代码
用返回数据做变量作为数据来查百度
登录令牌来添加员工
postman参数化
简介
什么是参数化:
将 测试数据,组织到 数据文件中,通过脚本的反复迭代,使用不同的数据,达到测试不同用例的目标。
应用场景:
一般在测试同一个接口的不同 测试点时,只有测试数据不同。考虑使用 参数化。
数据文件简介
CSV:
优点:数据组织格式简单
缺点:
1. 不能测试 bool 类型。因为 postman 读取 csv后,将所有非数值类型数据,自动添加 ”“ 变为字符串
2. 不能存储复杂数据类型(元组、列表、字典)。
3. 不能实现 参数测试。
应用场景:数据量较大,数据组织格式简单。
JSON:
优点:
1. 可以测试 bool类型
2. 能使用 复杂数据类型
3. 可以实现 参数测试。
缺点:相同数据量,json文件要远大于 csv 文件。
应用场景:数据量较少,数据组织格式复杂。需要进行 参数测试!
导入数据文件到postman
csv文件预览,正确无乱码
json数据预览,正确无乱码
读取数据文件数据
理论
根据使用位置不同,有两种方法
1.在请求参数(行头体中)使用数据文件中的数据
csv文件/json文件:{{keyName/键名}}
2.代码中获取
postman内置data对象引用key
csv文件:data.字段名
json文件:data.键名
- JSON文件:最外层必须为 [] ,然后使用 {} 存放多组数据。
使用参数化查询不可以用send
Postman 控制台调试
有异常或出现失败的时候,可借助控制台进行查看分析。
4.1 配置好 生成测试报告环境中
安装node.js
#安装 双击.msi文件,一路下一步安装即可。无需特殊设定。 #测试安装成功 npm -V
安装newman
#安装newman
npm install -g newman
#测试安装成功
newman -V
#安装newman插件 -标准版
npm install -g newman-reporter-html
#安装newman插件 -扩展版 (最好使用这个)
npm install -g newman-reporter-htmlextra
4.2 导入和导出 测试用例集
导出用例集
导入用例集
导出环境(有环境约束,需要连同环境一同导出)
生成测试报告文件
测试统计分析 + 测试结果确认 Newman生成测试报告
newman run 用例集文件.json -e 环境文件.json -d 数据文件.json/.csv -r htmlextra --reporter-htmlextra-export 测试报告名.html
newman run <测试脚本文件路径> -e <环境变量文件路径> -d 数据文件.json/.csv -r html --reporter-html-export <测试报告输出路径>
newman run "D:\Desktop\test1\login.postman_collection.json" -e "D:\Desktop\test1\testenv.postman_environment.json" -d "D:\Desktop\test1\login.json" -r html --reporter-html-export "D:\Desktop\test1"
# 完整命令
newman run 用例集文件.json -e 环境文件.json -d 数据文件.json/.csv -r htmlextra --reporter-htmlextra-export 测试报告名.html-e 和 -d 是非必须的。
如果没有使用 环境,不需要指定 -e
如果没有使用数据文件(做参数化), 不需要指定-d命令说明:
● run xx.json:执行测试集文件
● -e source:环境变量文件
● -d source:测试数据文件
● -r html:生成测试报告类型
● --reporter-html- export source:存放报告的路径