跨线程调用变量
1、Jmeter中线程运行规则
1)各个线程组是完全独立的,每个线程组是不同的业务,互不影响
2)线程组中的每个线程也是完全独立
3)线程组中的每个线程,都是从上往下执行,完成一轮循环后,继续下一轮循环
4)存在业务流或者接口之前存在依赖关系的放同一个线程组
5)setup线程组在其他线程组之前执行,teardown线程组在其他线程组之后执行
2、Jmeter中变量传递规则
1)测试计划中的变量是全局变量,所有线程组都可以使用,单个线程可以临时修改,不会改变初始值,其他线程调用时,仍然是初始值
2)线程组的变量是线程私有,其他线程组不能引用
3、Jmeter中使用属性实现跨线程调用变量
以登录线程和查询余额线程接口中的token跨线程调用为例
1)Jmeter中提取登录接口返回的token
2)在登录线程中,使用beanshell后置处理器,把token设置成属性
通过函数助手setproperty,生成mytoken的beanshell变量
把${token}赋值给mytoken:
${__setProperty(mytoken,${token},)};
3)在查询余额线程中,使用beanshell前置处理器,定义一个新的变量保存token属性
通过property获取mytoken属性
定义gettoken接收mytoken属性值
String gettoken = "${__property(mytoken,,)}";
4)通过var函数,把gettoken复制给jmeter变量token88,供jmeter中调用
vars.put("token88",gettoken);
5)在查询余额接口,添加http 信息头管理器
Token的值为token88
6)调试脚本
测试签名接口
1、了解签名规则
1)常见的签名规则:业务数据+当前时间戳
2)签名方式:md5(大部分)
2、接口信息
1)Ip和端口号:10.196.104:8080
2)接口路径:/pinter/com/userInfo
3)请求类型:post
4)数据类型:json
5)请求参数:
{
"phoneNum": "123434",
"optCode": "testfan",
"timestamp": "12112121212",
"sign": "fdsfdsaafsasfas"
}
3、编写接口脚本
1)添加http请求头
Jmeter默认的请求数据类型是text类型,本次接请求是json数据类型,需要添加http请求头申明数据类型
添加-配置元件-HTTP信息头管理器
2)添加时间戳参数
因为时间戳时动态变化的,需要用到函数助手time时间戳参数,其他地方还需要引用,所系在生成时间戳的时候,需要添加一个变量名称
"timestamp": "${__time(,mytime)}"
3)添加签名参数
签名是由前面三个参数拼接组成
"sign": "${__MD5(18782940194testfan${__time(,mytime)},)}"
4)在请求体中填写全部参数
5)添加查看结果树,检查接口是否能请求通
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
奋斗是一场拼搏,只有坚持不懈、不畏艰辛,才能超越自我、创造辉煌。放飞心中的梦想,勇往直前,相信自己的力量,成就无限可能!
只有坚持不懈的努力,才能铸就辉煌的人生。不要停下脚步,勇往直前,每一步都是向着梦想迈进的力量。永远相信,你可以成为你想成为的那个人。
努力奋斗,勇往直前,不放弃,终将收获。每一份付出,都是未来成功的种子,在坚持中开花结果,让梦想的光芒照亮前行的道路。