• 7
  • 8
分享
  • 做性能测试,你啥都控制不了?这不行吧——软件测试圈
  • 曼倩诙谐 2020-11-30 11:35:21 字数 2393 阅读 2940 收藏 8

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

  【逻辑控制器】

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

1.png

Jmeter常用的逻辑控制器

  【常用逻辑控制器】

  1.录制控制器 - Recording

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

2.png

  2.简单控制器 - Simple

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

3.png

  3.循环控制器 - Loop

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

4.png

  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请求]。

5.png

  5.模块控制器 - Module

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

6.png

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

7.png

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

8.png

  【逻辑控制器 Demo】

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

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

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

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

9.png

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

  ·JMeter实现步骤

  1.添加线程组

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

10.png

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

11.png

  2.添加JMeter元素

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

12.png

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

13.png

  3.添加循环控制器

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

14.png

  4.配置循环控制器

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

15.png

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

16.png

  5.添加查看结果树

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

17.png

18.png

  6.运行测试用例

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

19.png

  【总结】

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



作者:罗狮小钉   

来源:51Testing软件测试网原创


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   情景说明  小Q是一名工作多年的测试开发工程师,优势是技术能力强,善于通过技术解决工作中的问题,待改进项是思想站位需要提升,做事推动力需要加强。  辅导过程  小Z:工作中对你的建设性反馈中有一项是需要提升思想站位,今天来聊聊。  小Q:好,但我想问下,到底什么叫提高思想站位,具体表现是什么?高和低的区别是怎样的?  小Z:好问题。官方的解释你可以查查资料,我用工作中一个例子阐述一下。  以自动化测试这个事项为例,作为主R(专项负责人),大体上可以有三个维度,一是看问题的视角,二是时效性,三是对资源的撬动。  1.看问题的视角:你思考问题的视角要能够站在更大的范围,同样是自动化测试专项,你...
            0 0 499
            分享
          • 上周分享了[Kafka性能测试初探](https://mp.weixin.qq.com/s/6zU36udvFpt-2ijfNtSJUA)的Java版本,有读者留言说太简单,内容比较水。这里澄清一下,是我学得比较水。文章定位就是一篇使用Java语言的Kafka Client客户端进行简单操作演示,然后模拟一下简单场景的性能测试。其中深入学习Kafka的可以随处搜到很权威实用的资料,有深入学习需求的可以自行寻找。好久没有写Go了,这才突然觉察到,又重新复习了一波Go语言的基础语法。顺带着之前留下的好习惯,每个学习的框架和工具都用Java和Go写一遍。这次也分享一下Go语言的Kafka基础入门,以...
            0 0 1066
            分享
          •   一.背景介绍  继自动提交bug到jira文章之后,这时候就会有人有疑问了,我每天都在跑自动化测试(美其名曰每日构建),也每天都在自动提交bug,可能昨天提交的bug尚未解决,今天又重新提了一遍,一周下来累计的bug好几千了,怎么办?一个个去手动过滤,有木有感觉直接崩溃了?那么为了解决这个问题,今天我们就来介绍一个自动化过滤的方案及其实践。  二.测试需求分析  此方案也主要使用python/pytest实现,主要针对于jira上bug的处理,当然也可以使用过滤重复需求,重复任务等等均可以。  准备工作:  1.在处理之前,你首先需要了解部门的jira流转图(不同公司或部门都可能不一样),...
            0 0 854
            分享
          • 很多人的职业规划是到了工作以后才开始进行的,其实,这样做,有很大的局限性。凡是工作过的人,都有一个体会,就是自己的第一份工作,会影响到5~10年的发展轨迹,甚至会对一生产生影响。因此,选择一份合适的工作作为起点,是必须要在校园内思考清楚的问题。由于中国的教育基本是理论教育,大家在工作前的实践能力大多比较弱,固然有其不足,但也有好的一面,那就是可塑性比较好。可塑性好代表了选择的余地可以很大,因此,大家在选择第一份工的时候,要充分结合自己的教育背景、个人能力、兴趣爱好、长期目标等等,作出理性的决策。软件测试,特别是黑盒软件测试是一种入门起点较低、上手迅速、且发展空间比较大的职业,因此,对于很多学生...
            0 0 1971
            分享
          •   摘要:作者在新项目中搭建了python+requests+unittest+HTMLTestRunner接口自动化测试框架,通过修改配置文件实现环境隔离,一份脚本即可在不同的环境执行接口测试用例。  但是没有实现任何形式的消息通知,也没有集成到jenkins,原因很简单,因为还没做到很大,而且用户活跃不够,问题也相对较少,只在上线前后执行一次uat和prod环境。  那这几天想完善一下消息通知功能,让它具备发送消息及报告的功能。  流程  代码  流程及代码功能已在注释中说明。  '''   Created on 2021年5月12日   @au...
            0 0 1334
            分享
      • 51testing软件测试圈微信