Jmeter的核心组件有哪些?它们有什么用?

发表于:2020-9-25 09:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:芒果日记    来源:博客园

  一、Test Plan (测试计划)
  用来描述一个性能测试,包含性能测试所有相关的功能,也就是说进行一次性能测试的所有内容都是基于一个测试计划的。
  JMeter中一个脚本就是一个测试计划(Test Plan),也是一个管理单元。JMeter 的请求模拟与并发数(设置线程数,一个线程代表一个虚拟用户)设置都在脚本文件中一起设置。
  ·脚本中只能有一个测试计划
  ·测试计划中至少有一个线程组:Jmeter 负载是通过线程组驱动的,所以至少要有一个线程组;我们可以把不相关联的业务分布在不同的线程组中。
  ·至少有一个取样器:测试的目的是模拟用户请求,没有取样脚本就没有意义。
  ·至少有一个监听器:我们需要根据测试结果来分析系统性能,所以至少得有一个监听器。
  二、工作台
  新版本的 Jmeter 已经去掉了工作台
  三、线程组
  可以理解为 loadrunner 中的虚拟用户组,线程组元件控制 JMeter 执行测试计划时使用的线程数量。每个线程完全独立的运行测试计划,互不干扰,多个线程用于模仿对服务器的并发访问。
  所有控制器和采样器必须在线程组下。其他元素(例如,侦听器)可以直接放置在测试计划下,在这种情况下,它们将应用于所有线程组。
  1. 添加线程组
  “测试计划”右键单击“添加”->“线程(用户)”,有三个添加线程组的选项,名字不一样,界面完全一样。
  (1)setup thread group(setup 线程组)
  一种特殊类型的线程组,可用于执行预测试操作。和普通的线程组元件一样,不同的是,这种类型的线程执行测试前进行定期线程组的执行。setUp Thread Group类似于lr的init.可用于执行预测试操作。
  (2)teardown thread group(teardown 线程组)
  一种特殊类型的线程组,可用于执行测试后动作。和普通的线程组元件一样,不同的是,不同的是,这些类型的线程执行测试结束后执行定期的线程组。tearDown Thread Group类似于lr的end.可用于执行测试后动作。
  (3)thread group(线程组).
  这个就是我们通常添加运行的线程。通俗的讲一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。
  2. 线程组界面
  (1)Thread(线程数)
  可以理解为虚拟用户数,一个虚拟用户占用一个进程或线程。
  (2)Ramp-up period(准备时长)
  单位是秒,默认时间是1秒。它指定了启动所有线程所花费的时间,比如,当前的设定表示“在5秒内启动10个线程,每秒启动2个线程”。如果需要Jmeter立即启动所有线程,将此设定为0即可。
  (3)Loop Count(循环次数)
  表示每个线程执行多少次请求。如果线程数为20,循环次数为5,总请求数为 20*5=100。
  3. 调度器:灵活的设置运行时间
  可以在调度器中配置持续时间(秒)和启动延迟(秒)来控制每个线程组的持续时间以及启动后的秒数。当测试开始时,JMeter将在启动线程组的线程之前等待启动延迟(秒),然后运行配置的持续时间(秒)。
  例:如果使用了10个线程,并且启动周期为100秒,那么JMeter将花费100秒来启动和运行所有10个线程。每个线程将在上一个线程开始后10(100/10)秒开始。如果有30个线程,启动周期为120秒,则每个连续线程将延迟4秒。
  四、控制器(Controllers)
  JMeter有两种类型的控制器:取样器和逻辑控制器。
  1. 取样器(Sampler)
  取样器用来模拟用户的操作,指示JMeter向服务器发送请求,是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,包括:FTP请求、HTTP请求、JDBC请求、JAVA对象请求、JMS请求、JUnit测试请求、LDAP请求、SOAP/XML-RPC请求、WEB服务(SOAP)请求等。例如,希望JMeter发送HTTP请求,则添加一个HTTP Request Sampler。也可以通过将一个或多个配置元素添加到采样器来自定义请求。
  在Jmeter的所有Sampler中,Java Request Sampler与BeanShell Requst Sampler是两种特殊的可定制的Sampler.
  取样器的添加路径:【测试计划】-【线程组】-【取样器】
  2. 逻辑控制器
  可以自定义JMeter用于决定何时发送请求的逻辑。包括两类元件:一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,常用的有 如果(If)控制器 、 switch Controller 、Runtime Controller、循环控制器等;另一类是用来组织可控制 sampler 来节点的, 如事务控制器、吞吐量控制器。
  逻辑控制器器的添加路径:【测试计划】-【线程组】-【逻辑控制器】
  五、测试片段(Test Fragment)
  测试片段元素是一种特殊类型的控制器,它与线程组元素位于同一级别的测试计划树上。它与线程组的区别在于,除非被模块控制器或Include_Controller引用,否则它不会执行。此元件仅用于测试计划中的代码重用。它是一个辅助的组件,在此节点下几乎可以放置任何JMeter测试元件,但它一般不会被运行,那么它的作用到底是什么了?
  ·在脚本开发的过程中,可以用来备份元件。
  ·可以被模块控制台调用,我们可以用它模块化请求(是不是有点似曾相识的感觉了,没错就是程序开发中的,将业务封装成一个方法供复用)供模块化控制器调用
  六、监听器(Listener)
  它是用来对测试结果数据进行处理和可视化展示的一系列元件。 图形结果、查看结果树、聚合报告、用表格察看结果都是经常用到的元件。
  作用:
  ·添加监听结果,并且可以保存测试结果到文件中,这些测试结果可以供再次分析使用。
  ·展示结果,JMeter可以以表格以及图形的形式展示测试结果,方便测试人员分析测试结果。
  七、定时器(Timer)
  默认情况下,JMeter线程按顺序执行采样器而不会暂停。可以添加定时器(Timer)来设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。类似于LoadRunner里面的“思考时间”。 JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。
  如果在一个线程组中添加多个计时器,JMeter将使用计时器的总和,并在执行该计时器所适用的采样器之前暂停该时间。可以将计时器作为采样器或控制器的子级添加,以限制将它们应用到的采样器。
  八、断言(Assertions)
  断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。
  九、配置元件(Config Element)
  配置元件(config element)用于提供对静态数据配置的支持。CSV Data Set config 可以将本地数据文件形成数据池 (Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配制元件则可以修改 Sampler的默认数据。
  例如:HTTP Cookie Manager 可以用于对 HTTP Request Sampler 的 cookie 进行管理。HTTP 请求默认值不会触发Jmeter发送http请求,而只是定义HTTP请求的默认属性。
  十、前置处理器(Per Processors)
  前置处理器用于在实际的请求发出之前对即将发出的请求进行特殊处理。
  例如:HTTP URL重写修复符则可以实现URL重写,当URL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID 。
  十一、后置处理器(Post Processors)
  后置处理器是用于对Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。
  例如:XPath Extractor 则可以用于提取响应数据中通过给定XPath 值获得的数据;正则表达式提取器,则可以提取响应数据中通过正则表达式获得的数据。
  十二、元件执行顺序
  配置元素->前置处理器->定时器->取样器->后置处理器(除非SampleResult为null)->断言(除非SampleResult为null)->监听器(除非SampleResult为null)
  请注意,定时器,断言,预处理器和后处理器只有在有适用的采样器时才被处理。逻辑控制器和采样器按照它们在树中出现的顺序进行处理。其他测试元素将根据其发现范围和测试元素的类型进行处理。[在一种类型中,元素按照它们在树中出现的顺序进行处理]。

  上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • 大椿菜
    2020-9-25 10:30:19

    感谢分享!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号