一、接口测试简介和分类
接口测试是测试系统组件间接口的一种测试
接口分为:内部接口、外部接口
二、接口测试的流程及用例的设计
拿到接口API文档(可通过抓包工具获取),熟悉接口业务、接口地址、鉴权方式、入参、出参、错误码
编写接口用例及评审
编写正例:输入正常入参,接口能够成功返回数据
编写反例:
鉴权反例:鉴权码为空/过期
参数反例:参数类型异常/长度异常
错误码覆盖:根据业务确定的
其他错误场景:接口黑名单,接口调用次数限制,分页场景
接口用例文档包括:测试接口、用例标题、请求方式、预置条件、操作步骤、输入数据、预期结果
使用postman执行用例
postman+Newman+Jenkins实现持续集成,并且输出测试报告并发送邮件
三、微信公众平台接口
获取微信接口的权限:
appid(ID):
secret(密钥):
四、postman的简介、安装、注册
官网安装
下载地址:https://www.postman.com/downloads/
postman的注册和登录(可使用postman的云服务)
点击右上角sign in
五、执行接口测试
1、请求界面介绍
home:主页
workspaces:工作空间
collections:集合,项目集合
ApiS:api文档
environments:环境变量,全局变量
mock server:虚拟服务器
monitors:监听器
history:历史记录
2、响应页面介绍
body:接口返回的数据
pretty:以json,html,xml等不同的格式查看返回的数据
raw:以文本的方式查看返回的数据
preview:以网页的方式查看返回的数据
cookies:响应的cookie信息
headers:相应头
test results:断言结果
200:状态码
ok:状态信息
XXms:接口响应时间
XXB:响应的字节数
save response:保存响应
GET请求与POST请求的区别:
get一般是获取数据,post请求一般是提交数据
post更安全
本质区别是传参方式不一样:
get请求是在地址栏后以?的方式传参,多个参数之间用&分割
post请求是在body以表单方式传参
六、环境变量和全局变量
环境变量添加完成后,选择对应的环境,在url中将变量用双花括号,例如:{{变量名}}
postman全局变量和环境变量的区别
https://blog.csdn.net/sinat_33101665/article/details/128935572
七、接口关联
使用json提取器
设置成功后,后续接口可使用该变量
使用正则表达式提取器
八、postman内置动态参数及自定义的动态参数
postman内置动态参数:{{$}}
{{$timestamp}}:生成当前时间的时间戳
{{$randomint}}:生成0~1000的随机数
{{$guid}}:生成随机guid字符串
自定义动态参数
使用时加{{变量名}}
九、postman断言
1.断言方式
status code:code is 200 检查返回的状态码是否为200
response body:contains string 检查响应中包括指定字符串
response body:json value check 检查响应中其中json的值
response body:is equal to a string 检查响应=一个字符串
response headers:content-type 检查是否包含响应头content-type
response time is less than 200ms 检查请求耗时小于200ms
2.在断言中获取自定义动态参数方法:
get a global variable:pm.globals.get("variable_key");
断言中不能使用内置动态参数进行断言
3.全局断言
全局断言作用于所有接口
十、postman批量执行用例
执行入口
上传文件的接口需注意
首先在设置中打开允许读取工作目录文件的按钮
其次将需要上传的文件放入该文件夹,否则用例执行时会报错
十一、数据驱动之CSV文件和JSON文件的处理
CSV文件
(1)编写需要的数据,保存为CSV文件
第一排为入参的参数名,后续为每个用例的入参
(2)入参改为{{参数名}}
(3)修改断言
(4)上传文件
JSON文件
与CSV文件仅数据格式不同,其余步骤一致
十二、测试必须带请求头的接口
1.设置请求头
发送https的请求时需禁用该设置,否则可能会发送请求失败
未带请求头,接口报错
设置请求头(可从F12中复制,也可抓包获取)
在Headers中点击Bulk Edit
复制请求头,点击Key-Value Edit
编辑好请求头后,运行接口
可在preview中查看,与网页内容一致
该请求头的意思:以客户端浏览器的方式访问
2.常见请求头
Host:ug.baidu.com 请求的主机地址
Connection: keep-alive 连接方式
Accept: */* 客户端接受数据格式
X-Requested-With: XMLHttpRequest 异步请求
User-Agent:客户端的用户类型
Referer:请求的来源
Accept-Encoding: gzip, deflate, br 接受的压缩方式
Accept-Language: zh-CN,zh;q=0.9 接受的语言
Cookie:cookie信息
Content-Type: text/html;charset=utf-8 请求内容的格式
当不确定哪个请求头是必要时,将所有请求头复制后再筛选
十三、mock server服务器
后端数据还未开发完成,前端需要调用后端接口,可使用mock(模拟)
1、公用mock sever
创建模拟服务器,点击mock servers
编辑接口地址、状态码、响应内容
设置模拟服务器名称
设置完成后,可查看/复制模拟服务器地址
环境变量会自动生成模拟服务器(设置时需选择)
collections会自动生成该模拟服务器的项目及接口
发送该请求,请求成功
若前端需要返回的数据为json格式,例:{"error_code":0,msg:"返回成功",data:[]}
在default中修改,修改完成后可返回该数据;也可在浏览器中进行查看
设置成功后可在集合中查看mock信息
2、私有mock server
勾选该选项
打开 https://go.pstmn.io/pro-api-keys ,点击Generate API key生成一个**。
注意:生成的api key并不是专门用于mock server,还可以用于Postman提供的其他服务中。
这里可以看到我们所有生成的key,可以禁用或删除。
在请求头中加入x-api-key
十四、cookie鉴权
1、cookie的基础知识
cookie:是一小段文字,格式key=value
cookie鉴权的原理:
当客户端第一次访问服务器时,服务器就会生成cookie信息,并且在响应头的set-cookie里生成的cookie信息发送给客户端
当客户端第2~N次访问服务器时,那么客户端就会在请求头的cookie带上cookie信息从而实现鉴权
2、cookie的分类
会话cookie:保存在内存,当浏览器关闭之后就会自动化清除cookie
持久cookie:保存在硬盘,浏览器关闭之后不会被清除,只有过了失效时间才会自动清除
3、postman的cookie鉴权,token鉴权
token关联:第一个接口返回的token给第二个接口使用
cookie关联:第一个接口访问后会生成cookie信息,第二个接口访问时会自动带上cookie信息
第二个接口清除cookie信息后请求,响应会报错
当请求时数据返回的是旧数据时,是因为cookie是之前的cookie信息,需要清除cookie,重新获取cookie信息再发送请求
十五、postman实现接口的加密和解密(了解)
目前市面上的加密方式
对称式加密:DES,AES,Base64加密算法
非对称式加密:双钥(公钥,私钥,公钥加密私钥解密,私钥加密公钥解密)加密,RSA加密算法
不考虑解密:MD5,SHA1,SHA3
postman如何实现加解密
MD5最广泛
十六、Newman
1、Newman基础知识
postman为接口测试而生;Newman为postman而生,Newman可让postman脚本通过非GUI(命令行)方式运行脚本。
运行命令:newman run
常用参数: -e 引用环境变量
-g 引用全局变量
-d 引用数据文件
-n 指定测试用例迭代的次数
-r cli,html,json,junit --reporter-html-export 指定生成HTML的报告
Newman的安装: https://blog.csdn.net/weixin_37600187/article/details/128078756
2、Newman运行脚本
导出用例脚本
导出运行环境
导出全局变量
拷贝数据文件至该文件夹(以上四步的文件需在同一个文件夹中)
在该文件夹通过cmd运行
运行完成后,会在该文件夹生成report.html的报告文件
十七、postman+newman+jenkins实现接口测试持续集成
安装Jenkins
测试是否正确
设置端口号,点击Test Port检查端口是否被占用
Java JDK安装路径(Jenkins仅支持java11或java17)
java8升级java17
下载地址:https://www.oracle.com/java/technologies/downloads/#jdk17-windows
安装并配置环境变量
安装完成后,进入Jenkins
本机访问的话在地址栏输入 http://localhost:8080,若是其他电脑访问页面,只需在 URL中替换主机地址为 Jenkins 服务器的 ip 地址。
解锁Jenkins
自定义Jenkins--安装推荐插件
创建管理员,实例配置
安装完成
安装过程报错
如图
解决办法:
控制面板--系统和安全--管理工具--本地安全策略--本地策略--用户权限分配--作为服务登录--添加用户或组--在输入的对象名称中输入用户名,一般默认用户是Administrator--点击确定
插件安装报错
在Jenkins新建项目,点击新建item
进入配置页面
也可在首页中该项目进行配置
在general中点击高级,设置自定义工作空间的目录
在构建环境中增加构建步骤--执行windows的批处理命令
继续增加构建步骤--执行系统的groovy脚本(因为Jenkins的HTML报告样式会默认丢失,添加该步骤,防止样式丢失)
增加构建后操作步骤--生成的HTML报告集成到Jenkins
执行项目,在首页选择项目点击build now
在工作空间目录会生成报告
点击项目--HTML report也可查看报告