jmeter教程(十):流程控制初识

在编程中,流程分为三种:顺序流程、分支流程、循环流程。顺序流程,即自顶而下,逐句执行的流程。分支流程,即两个或多个分支,每次只走一个分支的流程。循环流程,即一段代码,重复地执行。我们前面所讲的,全都是顺序流程,现在讲一下分支流程和循环流程。流程这块,本是放到后面,等电子商城后台系统写好一些逻辑后,再以这个为例子来讲的。但是,现在有朋友需要,所以就提前讲了,所以,这里就没有例子了。都是拿之前写好的一个打印语句来讲。

打开jmeter,添加线程组、java请求、察看结果树。然后在测试计划中添加一个全局变量aaa,值为1234。

执行一下,看结果,就把aaa的值响应出来了。现在,我要加条件,只有aaa的值是123,才打印aaa的值。

写上条件表达式:

然后,将java请求,拖到 如果控制器上

保存,执行,结果树里,没有执行java请求,因为aaa的值不是123,然后,再更改 如果控制器 的条件为:${aaa}==1234,这个时候,java请求就会执行了。然后,我们更改变量aaa的值为bbb,然后更改 如果控制器的条件为:${aaa}==bbb,保存,运行脚本,就会发现,java请求并没有执行。这个时候,变量aaa的值不是一个数字,这样判断,是不行的,需要把判断表达式写成:"${aaa}"=="bbb",也就是表达式的左右两边,都加上双引号,这样就会以字符串的形式来判断。

在实际情况里,我们的条件表达式里的变量,通常是来源于前面的请求,通过正则表达式提取器来获得的。我们在线程组上右击,添加一个java请求,然后,拖到 如果控制器 的前面,然后前面的java请求,param,我们输入一个json字符串。

然后,在第一个java请求,添加正则表达式提取器

这个表达式,就是提取id为123的用户的name,这个看过前面的教程,应该不难理解,然后我们在 如果控制器 里,条件更改一下

保存,运行,就可以看到第二个java请求执行了,更改条件表达式,那么第二个java请求就不会执行。现在,把正则表达式提取器里的id变为13,这个时候,我们知道是提取不到值的。现在,我的需求更改为第一个请求里没有提取到值,才执行第二个java请求,这个要怎么做?按编程中的做法,我们通常会想到"${name}"=="null",或是少掉一边或两边的双引号,结果,都不行。这个时候,要怎么做?这个时候就需要用到正则表达式里的默认值了

然后条件表达式写成:"${name}"=="!@#",特别注意一点,双引号之内不要有多余的空格。

循环控制器就是重复执行一段代码,新建一个脚本,添加线程组,线程组上添加循环控制器。

再在循环控制器上添加java请求,然后我们在测试计划上添加一个全局变更aaa,值是abc,java请求就是响应变量aaa的值。循环控制器,设置循环次数为5。

保存脚本,运行,就会看到java请求执行了5次。现在的需求是,一段代码要循环5次,但第1次时,需要做一些初始化的操作,之后的就不需要初始化了,这个要怎么做?这个时候,就需要用到函数助手了。

选择函数:--counter

这个函数就是一个自增的函数,每调用一次,它的值就会加1,第一次调用为1,第二次调用为2。。。它接收两个参数,第一个参数可以为TRUE,也可以为FALSE,为TRUE,则每个线程,单独计数。为FALSE,则所有线程共享计数。关于线程,在讲性能测试的时候,会比较好理解。第二个参数,就是取个变量名,这个函数的当前值会保存到这个变量中。这些填好后,点右下角的 生成,那么下面的输入框中就会生成函数字符串,复制,然后粘贴到java请求中去

保存,运行,就会看到java请求执行了5次,第1次响应1,第2次响应2。。。现在可以知道每次循环的次数,要判断就好做了。在循环控制器上添加 如果控制器,条件表达式为

保存,运行

学了其它控制器,还有更好的方式来实现这个需求,下一个教程再讲吧!

猜你喜欢

转载自blog.csdn.net/kingzhsh/article/details/85914308