Jmeter进阶 Mac版
一、函数
做接口性能测试过程中,经常需要用不重复的参数来进行测试,而Jmeter恰巧就提供的随机函数,很好的解决这个难题。
Jmeter共提供了4种随机数分别为:数字随机数Random、日期随机数RandomDate、字符串随机数RandomString,变量随机数RandomFromMultipleVars,满足我们不同场景下的传参需求。
这里我们使用字符串随机数RandomString进行场景演示。为了保证数据的多样性,我们需要不同的用户名来进行登录并获取Token。
接下来就是在HTTP请求中进行修改对应的消息体数据,随机生成用户名的函数为:${__RandomString(11,0123456789,userName)}
二、提取器
JSON提取器属于Jmeter 的后置处理器, 所谓后置提取器就是请求结束后, 对响应结果进行变量提取, 提取变量是为了验证变量是否符合预期或者将变量值作为全局变量, 以供其他请求使用。
比如后续的的业务请求需要将登录请求获取的token作为后续请求的参数,为了整个项目的连贯性,需要用到JSON提取器来提取前一接口的响应数据,然后传递给下一接口。
关于路径表达式标准写法为:$.key,其中 key 为返回结果 map 中的一个键,如果是多层则继续使用 .key 进行即可,如果遇到 key 的 value 值为一个 List ,则使用 .key[n],其中 n 为 List 中元素的编号。
三、全局变量
在实际测试时,会涉及一个或多个线程组。而线程之间或接口之间会对某个参数有依赖性,那么我们需要将某个接口中的参数提取出来,供其他线程组或接口调用。这里就需要使用到__setProperty函数:
声明全局变量:${__setProperty(自定义变量名,${参数名},)}
引用全局变量:${__property(自定义变量名)}
接着需要对多个地方进行配置,首先是登录请求中的BeanShell断言需要补充,用来把执行成功后获取到的 token 传给 newtoken ;
⚠️注意:引用已定义的变量:${变量名},比如: ${token};如果变量未定义的话,引用变量会直接返回表达式,比如变量 token 未定义,引用变量 ${token},返回值就是:${token}。