1 接口测试
1.1 为什么要进行接口测试
接口测试能够绕过前端校验,对后端的接口处理逻辑进行测试(数据的边界/格式/类型)
在一些需要重复测试的需求中,接口自动化的效率比手工执行效率高
1.2 接口测试流程
熟悉API接口文档(接口业务,地址,端口,鉴权,入参,出参,错误码等信息)
编写接口用例后进行用例评审
执行用例
用例编写
正例:输入正常的参数,接口能够正常返回
反例:
鉴权异常:Cookie / Token 为空/过期/错误
参数异常:为空 / 长度异常 / 类型异常 / 边界异常 / 缺少必要参数
其他异常:调用次数限制,分页场景
兼容异常:接口被多端调用 ,版本兼容
2 Jmeter基础知识
2.1 Jmeter文件
Jmeter/bin/jmeter.properties 是Jmeter的全局配置文件(设置中文 / Cookie信息管理)
Jmeter/bin/jmeter.bat 是Jmeter的启动文件
2.2 Jmeter组件(执行顺序从上到下)
测试计划:存放测试线程组的容器
线程组:代表执行的用户数量
配置元件:配置请求信息(请求头,Cookie)
前置处理器:请求之前的操作
定时器:延时发送请求
逻辑控制器:处理请求逻辑
取样器:发送请求的最小单元
后置处理器:请求之后的操作
断言:对响应结果进行判断
监听器:收集测试结果
2.3 组件作用域
组件可以作用于同级组件
组件可以作用于统计组件下的下级组件
组件可以作用于上级组件
2.4 使用Jmeter发送请求
创建测试计划
在测试计划中添加线程组
在线程组下添加配置元件
在线程组添加HTTP Cookie头管理器(实现Cookie自动关联)
在线程组中添加HTTP 请求默认值(设置默认协议,域名,端口,编码格式)
在线程组中添加HTTP信息头管理器(公共请求头管理)
在线程组中添加HTTP取样器,填写请求信息
在HTTP取样器下添加前置处理器 / 后置处理器(提取器) / 断言
3 Jmeter HTTP请求参数类型
参数:用于在HTTP请求的URL查询字符串或者是在表单数据中发送键值对数据
发送GET请求,会作为URL查询字符串拼接在URL之后
发送POST请求,会作为请求体数据(表单)
消息体数据:数据作为请求体内容传输,通常用于传输JSON类型的参数
需要设置正确的
Content-Type
头,以告知服务器数据的格式。
文件上传:用于传输二进制数据
文件名称(文件路径) 参数名称 MIME类型(填写multipart/form-data)
4 Jmeter提取器
4.1 正则提取器
名称:提取器名称
注释:提取器备注信息
提取器作用范围:主请求是HTTP取样器配置的请求,子请求是由主请求触发的嵌套请求(重定向/嵌入资源:例如在HTML页面中会请求图片,CSS样式,JS文件等,都会触发子请求)
Main Sample and sub-samples:对主请求以及子请求生效(从主请求/子请求中提取数据)
Main Sample only:仅对主请求生效(默认选项)
sub-samples only:仅对子请求生效
要检查的响应字段:指定从哪个部分提取数据
主体:响应主体(推荐选择)
Body(unescaped):响应主体,不转义
Body as a Document:通过Apache Tika作为文档处理响应主体
信息头:响应头
Requests Headers:请求头(从请求中进行提取)
URL:请求的URL。
响应代码:响应状态码(例如200)。
响应信息:响应消息(例如“OK”)
引用名称:后续请求引用该数据使用的名称,通过 ${引用名称} 来使用该变量
正则表达式:提取数据的正则表达式,一个表达式中可以有多个捕获组
捕获组:用()括起来的字符串称为捕获组
{"code":(.*?),"message":"(.*?)","data":null} 此处正则表达式有两个捕获组,会从响应中匹配符合该正则表达式的字符串
访问捕获组:在匹配成功后,Jmeter会为每个捕获组分配一个编号,从1开始,可以通过${引用名称_gX}(X为捕获组编号)来访问捕获组的内容
模板:用于从正则匹配结果中创建字符串的模板
使用 $数字$ 表示捕获组-- $1$ 表示第一个捕获组 ,多个捕获组可以自定义连接: $1$_$2$ (使用下划线连接)
匹配数字:指定提取哪个匹配结果。
0 表示随机匹配 , 1 表示匹配第一个符合条件(推荐选项),N 表示匹配第N个 , -1 表示提取所有匹配结果,并存储到多个变量中,多个变量名称为 引用名称_X(1,2,3...)
缺省值:查询失败给变量设置的默认值
使用空默认值:勾选此选项后,如果没有找到匹配项,则变量将被设置为空字符串
正则提取器提取失败可能原因
提取器的作用范围错误或者是提取器提取的响应字段错误,检查正则提取器提取范围和提取字段
正则表达式匹配错误,可以在察看结果树处对正则表达式进行测试,如果提取成功,则说明表达式正确,提取失败,则说明表达式错误
4.2 JSON提取器
只能针对JSON数据生效
JSONPath的提取表达式
表达式 $.节点Key.节点Key ,
取所有子节点,使用 $.* 提取所有子节点
如果key返回的value是列表,列表取值通过下标,下标从0开始