jmeter教程(十一):流程控制再探

上一篇博文,最后一个需求是:要循环执行N次,但第一次循环需要做一些初始化工作,而之后的循环就不需要再初始化了。我们也给出了一个解决方案,当然,要实现这个需求,可以有很多很多的方案。比如,把初始化的步骤,放到循环的前面

这种的就不讨论了,我们讨论把初始化步骤放到循环里面的情况。可以使用 仅一次控制器,比上一篇博文的解决方案要更简单一些。脚本树结构及执行结果

仅一次控制器,就是在它的作用域之内,只执行一次。什么是作用域呢?每个线程组是一个作用域,线程组添加逻辑控制器,每个逻辑控制器,都会产生一个新的作用域,而大部分逻辑控制器里面,又可以再添加逻辑控制器。为了更好的理解,我们可以新建一个脚本,在线程组里,添加一个循环控制器,循环5次,在循环控制器里面,再添加一个循环控制器,也是循环5次, 在内层循环,添加 仅一次控制器,和循环体

通过结果,可以知道,仅一次的效果,只在内层循环有用,在外层循环是没用的。下面讲几个比较简单的逻辑控制器,首先是简单控制器,简单控制器,就是把几个步骤,看作一个整体,并不具备任体的逻辑功能,这个就有点类似于编程中,把几行代码用一对花括号围起来,没有任何的逻辑功能,不过,会形成一个新的作用域,可能会影响一些变量的生命周期。当然在jmeter里面,简单控制器,也可以形成一个作用域,并且可以用于模块控制器的跳转目标,至于模块控制器,下一篇博文中会讲。然后就是事务控制器,事务控制器,和简单控制器差不多,但是使用事务控制器,在统计结果的时候,事务控制器,也会进行统计,比如,我们脚本树为:

就会看到结果树里面,多了一项结果,是事务控制器的,当然,在这里面,多了这一个结果,没有什么意义。添加监听器——聚合报告,看聚合报告

Label是请求的名称,可以看到,也统计了事务控制器的数据,当然,关于聚合报告,一般是做性能测试时,才会用到,各个列代表什么,后面再讲。那么事务控制器的作用是什么呢?比如,以上面的例子来说:在做性能测试的时候,我把下订单的一整个过程(三个步骤),看成一个事务,以事务的形式进行数据统计,也就是一个用户下一次单的时间是多少?那么就可以用事务控制器来做。然后,事务控制器还有两个选项的

第一个选项,勾上,那么在聚合报告中,不会统计事务控制器中子请求的数据。只会统计整个事务的数据。

第二个选项,就是子请求中如果有定时器(可以理解为就是在请求之间添加等待时间),是否统计定时器的时间

交替控制器,一般是结合循环来用。在交替控制器下有N个请求,第一次执行第1个请求,第二次执行第2个请求...在线程组里添加交替控制器,然后让线程循环10次。运行

可以看到,每次循环,都向后移1个请求,如果到了最后,再循环,会再从第1个请求重新开始循环

随机控制器,和交替控制器,差不多,只不过是随机执行一次请求,依旧线程循环10次,只不过把交替控制器改为随机控制器

可以看到,循环了10,每次都随机执行一个请求

随机顺序控制器,那就是子请求全部会执行,但是顺序是随机的。这个好理解,不作演示

switch控制器,这个也是在子请求中选择一个执行,但是选择哪一个,由给定的值决定

在Switch Value里,输入哪个请求的名字,就会执行哪一个请求,如果输入的请求名称与任何子请求都不匹配,则不会执行任何子请求,如果为空,则默认执行第1个子请求。这个有什么用呢?举个例子,脚本写好了,然后,脚本需要在测试环境、预发布环境、线上环境都要跑,但每个环境的配置都不一样,而且是很多不一样。如果把这些变量都设置在测试计划中,换个环境,改起来,就很麻烦了,这个时候,可以使用三个文件,分别保存三个环境的配置。然后在switch控制器中添加三个请求,分别读取三个文件,测试环境变了,只需要改一下switch value的值,就可以了

 

猜你喜欢

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