JMeter脚本优化之参数化(上)

背景:脚本优化通过关联、参数化、删减无效/无用的请求、增加相关元件来达到脚本符合需求的使用,达到去繁存简的目的。这篇还是以一个业务场景来讲解JMeter那些可以完成参数化的元件。

1、以中国天气官网www.weather.com.cn为例,脚本结构、参数关联、监听结果:JMeter脚本优化之参数化(上)_第1张图片

2、上面脚本使用了一个配置元件叫:User Defined Variables,里面定义了一个变量city且赋值:北京,并且在http请求中引用了该变量,所以监听结果显示查询了[北京]的天气,接下来介绍个比其更好用的前置处理器:User Parameters;

3、在脚本中--线程组下右键新增前置处理器User Parameters,把在User Defined Variables定义的变量移到新增的用户参数元件里,执行脚本,发现引用变量${city}的结果是一样的,那么我想查上海的天气,该怎么办了?那么在前一个配置元件:User Defined Variables就需要多增加一个变量来储存上海且叫city2,那么请求只能是一次,还要多一个http sampler来请求city2的天气,而User parameters只需要多添加一个用户即可,city=北京、上海,再设置线程组两个虚拟用户,运行结果如下:

注意:这里的用户参数对应的是虚拟用户,不是迭代次数:

JMeter脚本优化之参数化(上)_第2张图片

4、想看哪个城市的天气,就在user parameters里新增一个用户并赋值城市,切记要记得修改线程组虚拟用户数。

5、这样一次脚本优化,参数化就完成了,但是内容好像没多有趣,那么再深入提点下,例如第一个接口只是获取城市code,那么像北京、上海、深圳这样的大城市,都是分区的,实际我们看响应结果(我们知道查询的北京的天气其实是某个区的):JMeter脚本优化之参数化(上)_第3张图片

6、分析第二个接口,get 北京?其实不然,且回头看第一个接口提取变量的正则表达式和匹配值(随机取满足表达式的code):JMeter脚本优化之参数化(上)_第4张图片

7、明白了吗?第二接口如果不想显示的是获取上面变量定义的city名称,那么在正则表达式中不要匹配${city}的使用,并且再添加一个正则表达式提取器,规则为:${citycode}~.*?~(.+?)~:     所以发现,正则表达式是必学的一部分知识JMeter脚本优化之参数化(上)_第5张图片

8、接着再修改第二个接口的Name:Get [${city}-${cityNamey} ] Weather,执行脚本的效果如下:JMeter脚本优化之参数化(上)_第6张图片

9、是不是amazing?关联即参数的一部分,如此动态获取是不是可以满足实际工作中不同的业务场景?为了更加有趣,喜欢的同学可以对上面响应的结果进行校验,即添加断言。欢迎大家继续分享,探讨交流~~~~

你可能感兴趣的:(JMeter轻量级性能测试工具)