vlambda博客
学习文章列表

做性能测试啥都控制不了?这说不过去吧

出品 | 51Testing软件测试网


JMeter提供了不同种类的逻辑控制器,包括循环(Loop),简单(Simple),事务型(Transaction),模块(Module),随机(Random)等。对于刚接触JMeter不久的用户,甚至使用JMeter已有一段时间的朋友们来说,各类不同逻辑控制器自身的先后顺序,应用效果及其所控范围内取样器的执行顺序等都会造成你一定程度上的困惑不清。本次分享我们就JMeter中常见的逻辑控制器给大家来个大扫盲,驱散控制器的层层迷雾。



逻辑控制器


JMeter中的逻辑控制器可以让我们自定义线程中的处理请求顺序,可以控制“何时”将用户请求发送到Web服务器。例如,我们可以使用随机控制器将HTTP请求不定时随机发送到服务器,来模拟更真实的某段时间内多并发的人为场景。


做性能测试啥都控制不了?这说不过去吧

JMeter常用的逻辑控制器



常用逻辑控制器



0 1


录制控制器 - Recording


JMeter可以记录用户的测试步骤,录制控制器是一个占位符,用于存储录制下的所有步骤(一系列用户操作活动)。


做性能测试啥都控制不了?这说不过去吧




0 2


简单控制器 - Simple


简单控制器只是一个用户请求的容器,可以简单理解为一个文件夹,用来分组,没有其他特殊功能,他的主要应用在于可以被模块控制器所引用。


做性能测试啥都控制不了?这说不过去吧




0 3


循环控制器 - Loop


循环控制器能够让用户请求运行指定的次数或永远执行。


做性能测试啥都控制不了?这说不过去吧




0 4


随机控制器 - Random


    随机控制器能够让所有用户请求在每个循环周期中以随机顺序运行。例如,假设当前我们共有3个用户请求,分别按顺序(1. HTTP请求,2. FTP请求,3. JDBC请求)访问网站:http://www.baidu.com; 

这3个请求分别需要运行5次,那么JMeter会将这总共15个用户请求发送到baidu服务端,在连续的顺序情况下,针对单次循环,请求被发送的顺序是[HTTP请求 -> FTP请求 -> JDBC请求]。相较于在随机的情况下,在单次循环中请求则是按随机顺序发送的,随机顺序则可以是:[FTP请求 -> HTTP请求 -> JDBC请求],也可以是:[JDBC请求 -> FTP请求 -> HTTP请求]。


做性能测试啥都控制不了?这说不过去吧




0 5


模块控制器 - Module


Module Controller的目标是将JMeter请求进行模块化,通常的想法是web应用程序由小功能单元(即登录,创建用户,搜索,评论,注销等......)组成,这些小功能可以作为一个“模块”存放在简单控制器Simple Controller中,模块控制器根据设定选择需要运行的模块。


做性能测试啥都控制不了?这说不过去吧


假设我们有这样的场景需要模拟50个用户注销,100个用户登录,30个用户搜索www.baidu.com; 那么我们就可以使用JMeter创建3个模块,每个模块模拟每个用户的活动,即:登录,注销和搜索。


做性能测试啥都控制不了?这说不过去吧


然后模块控制器就能选择需要运行的模块了:


做性能测试啥都控制不了?这说不过去吧




逻辑控制器 Demo


这里我们以一则Demo演示循环逻辑控制器在性能测试任务中的应用。在基于JMeter的测试设计场景中,除了在线程组中设置循环次数外,循环控制器还能为请求采样器设置一定的运行次数。假设经过测试需求分析,我们有如下场景:

(1)将一个HTTP请求添加到循环计数为50的循环控制器中;

(2)将线程组循环数配置为2;

(3)由此,JMeter将发送总共 50 * 2 = 100个HTTP请求;


做性能测试啥都控制不了?这说不过去吧

测试用例设计/测试执行路线图


· JMeter实现步骤




01


添加线程组


右键单击测试计划(Test Plan),然后添加一个新的线程组:添加(Add)——>线程(用户)(Threads(Users))——>线程组(Thread Group);


做性能测试啥都控制不了?这说不过去吧


在“线程组”控制面板中,设置如下“线程属性”,它会对目标网络服务端发送一个用户请求,并运行2次:


做性能测试啥都控制不了?这说不过去吧




0 2


添加JMeter元素


将HTTP请求默认值添加到www.baidu.com, 鼠标右键并选择:添加(Add)——>配置元素(Config Element)——>HTTP请求默认值(HTTP Request Defaults);


做性能测试啥都控制不了?这说不过去吧


在“HTTP请求默认值”面板中输入被测站点名称(http://www.baidu.com)


做性能测试啥都控制不了?这说不过去吧




0 3


添加循环控制器


右键单击线程组(Thread Group):添加(Add)——>逻辑控制器(Logic Controller)——>循环控制器(Loop Controller);


做性能测试啥都控制不了?这说不过去吧




0 4


配置循环控制器


把“循环计数”设置为50次,这样就会向目标服务端baidu.com发出一个用户请求,并且该请求场景循环运行50次;除了以上在线程组中设定的循环次数(参考第1步,线程组中的循环次数为:2)以外,JMeter一共会发送的请求总数为:2 * 50 = 100个HTTP请求。


做性能测试啥都控制不了?这说不过去吧


右键单击线循环控制器(Loop Controller):添加(Add)——>采样器(Sampler)——>HTTP请求(HTTP Request);


做性能测试啥都控制不了?这说不过去吧




0 5


添加查看结果树


右键单击线程组:添加(Add)——>监听器(Listener)——>在表格中查看结果(View Result in Table)


做性能测试啥都控制不了?这说不过去吧

做性能测试啥都控制不了?这说不过去吧




0 6


运行测试用例


选择菜单栏上的运行按钮,执行测试后,在结果表格中可以发现,JMeter仅模拟了一个用户请求,该请求被发送了100次到web服务端http://www.baidu.com, 在第100次发送请求后,测试终止。


做性能测试啥都控制不了?这说不过去吧



总结


以上基于JMeter通用逻辑控制器进行了类别普和应用讲解,结合最为常见的Loop循环控制器介绍了其在典型测试场景中的应用,希望能够帮大家进一步理解逻辑控制器的使用场景,在今后的工作学习中能够结合实际情况有效应用。


做性能测试啥都控制不了?这说不过去吧

一年一度的调查问卷又开始啦~




做性能测试啥都控制不了?这说不过去吧
END
做性能测试啥都控制不了?这说不过去吧


做性能测试啥都控制不了?这说不过去吧

推荐阅读

点击阅读☞

点击阅读☞

点击阅读☞

点击阅读☞

点击阅读☞

“阅读原文”一起来充电吧!