jmeter基本组件介绍

jmeter主要组件

  • 测试计划(Test Plan)
  • 线程组(Thread Group)
  • 配置元件(Configuration)
  • 逻辑控制器(Logic Controller)
  • 取样器 (Sampler)
  • 断言(Assertion)
  • 监听器(monitor)
  • 正则表达式提取器

测试计划

测试计划是使用jmeter进行测试的起点,一个测试计划描述了一系列Jmeter运行时要执行的步骤。一个完整的测试计划包含一个或多个线程组,逻辑控制,取样发生控制,监听器,定时器,断言和配置元件。

线程组

  • 线程组:测试里每个任务都要线程去处理,所有任务必须在线程组下面创建。
  • 线程数:设置发送请求的用户数。

  • Ramp-Up Period(in seconds):创建完所有线程的时间,防止对服务器有太大的负载。【如果选择了10个线程,并且ramp-up period是2秒,那么JMeter将使用2秒使10个线程启动并运行。每个线程将在前一个线程启动后0.2(2/10)秒后启动。如果将此设置为0,则表示并发,也就是所有线程在统一时间启动。Ramp-up需要足够长的时间来避免在开始测试时产生太大的负荷,并且有足够短的时间使最后一个线程在第一个线程结束之前运行】

  • 循环次数:请求的重复次数。【如果次数设置为1,那么JMeter在停止前只执行测试计划一次】

  • 启动时间:测试计划的启动时间【如果你设置了开始测试时间,就算是你在Jmeter上运行了测试,如果没有到你设置的开始时间,jmeter是不会执行测试的,直到到了你设置的开始时间,才会开始执行测试】

  • 结束时间:测试计划的结束时间【如果你设置了结束时间,一旦到了结束时间,不管当前执行的循环有没有结束,jmeter都会停止执行】

  • 持续时间:测试计划持续时间

  • 启动延迟:测试计划延迟启动时间

配置元件

  • 配置元件维护sampler需要的配置信息,配置元件不发送请求(除了HTTP代理服务器例外),可以根据实际需要添加或修改请求的内容
  • 配置元件“用户定义的变量”会在测试的初始阶段执行(无论它处于测试树的哪个位置)
  • 配置元件仅对其所在的测试树分支有效

逻辑控制器

  • 逻辑控制器可以控制jmeter发送请求的测试逻辑,它与sampler结合使用可以模拟复杂的请求序列
  • 循环控制器:设置请求的循环次数或永远循环,可以用于压力测试
  • 简单控制器:测试用例顺序执行
  • 事物控制器:将多个请求放在同一个事务中。Gegerate parent sample,则聚合报告中只显示事务控制器的数据,不会显示其中的各个请求的数据,反之则全部显示。

取样器

  • 可以认为所有的测试任务都由取样器承担,如:HTTP请求、FTP请求、JAVA请求等等。
  • 取样器告诉jmeter发送一个请求到指定的服务器,并等待服务器的请求。取样器会按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变取样器运行的重复次数。

断言

  • 断言:对取样器返回的请求结果给出结果做出判断,是否正确。
  • 用户可以使用断言来检查服务器获得的响应内容,用来判断请求响应的结果是否如用户所期待。
  • 断言会影响作用域的所有采样器。如果要让断言只影响某个采样器,需要将断言作为该采样器的子项(如上图)
  • 断言中设置要测试的模式,则会对响应的内容(如http请求后,服务器返回的内容)进行与字符串进行匹配,如果返回的内容包括了字符串,则认为该测试通过,否则就是失败。一般通过添加监听响应断言.

监听器

  • 监听器:负责收集测试结果,支持将结果数据写入文件。
  • 监听范围:当前节点层以及当前节点的子节点(直至叶子节点),即监听器可以监听当前层以及比它更低的层。
  • 常用监听器:察看结果树、聚合报告、图形结果、用表格查看结果

    • 察看结果树: 显示取样器请求和响应的细节,包括消息头、请求的数据、响应的数据(如上图)

      • 取样器结果:显示的是取样器相关参数(客户端参数与响应参数)
      • 请求:发送请求的具体值
      • 响应数据:服务器返回的相应参数
    • 聚合报告

      • Label: 取样器名称
      • Samples :运行过程中一共发出了多少个请求,一般来说是其值 = 线程数 * 循环次数(前提:测试按计划跑完,其中没有异常结束的线程)。总体samples是各请求samples之和。
      • Average:平均相应时间
      • Median:响应时间中间值
      • 90%Line:响应时间90%线 (即90%的用户处于这个值)
      • Min/Max:最小/最大的响应时间
      • Error%:出错率(出错的Request数/所有的Request数)
      • Throughput:吞吐量,每秒/每分钟(具体看“/”后面的单位)处理的Request数
      • KB/sec:每秒从服务器接收到的数据
    • 图形结果

      • 样本数目:发出去的请求数
      • 最新样本:最近一个Request的响应时间
      • 平均:所有Request响应时间的平均值
      • 偏离:所有Request响应时间的偏差
      • 吞吐量;单位时间内(一般是1分钟)处理Request的个数
      • 中值:所有Request响应时间的中间值
    • 表格查看结果

      • 显示每一个请求的信息,包括发起请求的线程,开始时间,请求响应时间,请求字字节。

正则表达式提取器

  • 提取器作用:从请求的响应结果中取到需要的内容,从而实现关联
  • 要检查的响应字段:正则表达式提取内容的范围
  • 引用名称:其他地方引用提取值得变量名称,具体的引用方式是${变量名},eg:${memberID}
  • 正则表示式:提取内容的正则表达式,()表示提取,对于你要提取的内容需要用小括号括起来
  • 模板:用$$引用起来,如果在正则表达式中有多个提取式(多个括号括起来的东西),则可以是$1$、$2$等等,表示解析到的第几个值给变量,正则表达式的提取模式,值从1开始,值0对应的是整个匹配的表达式。如对于表达式s(.)值0对应 s(.),值1对应(.*)
  • 匹配数字:0代表随机,-1代表所有,其余正整数代表将在已提取的内容中,第几个匹配的内容。
  • 缺省值:正则匹配失败时取的值。

运行一个测试计划

为了运行一个测试计划,从“run”菜单项中选择“start”.为了停止你的测试计划,从同样的菜单选择“stop”。Jmeter不会自动给它是否运行运行任何显示。如果Jmeter正在运行,一些监听器使它变明显,但是唯一确定的方法是检查“run”菜单。如果“start”不可用,“stop”可用,证明Jmeter正在运行你的测试计划。

作用域规则

jmeter测试树包含元件总是分等级和顺序的。在测试树中的一些元件是严格分级(监听器、配置元素、后置处理器、前置处理器、断言、定时器),一些主要是顺序的(控制器,取样器)。当你创建测试计划时,你将创建一个描述被执行的步骤集的取样请求有序列表。那些请求常组织在有序的控制器中。如下测试树:

这次使用定时器,如下测试树:

错误报告