Jmeter组件介绍

一,JMeter组件执行顺序

  1. 配置节点
  2. 前置处理器
  3. 定时器
  4. 取样器
  5. 后置处理器(只在有结果可用情况下执行)
  6. 断言(只在有结果可用情况下执行)
  7. 监听器(只在有结果可用情况下执行)

二,JMeter组件详解

1,线程

  • 线程数:虚拟用户数
  • Ramp-Up Period:生成所有虚拟用户的时间。Ramp-Up Period 设置成0,那么所有的用户将会同时立即产生
  • 循环数:要么N次,要么永远
  • 调度器:定时执行的设置方式,可以设置在未来的某个时间开始执行也可以设置多少秒后开始执行。在按下执行按钮后,调度器才生效

2,取样器

  取样器(Samples)是Jmeter真正产生请求的组件。常用的取样器是HTTP请求取样器

  • 编码:在HTTP取样器里,在变量一行可以勾选编码。如果变量的值包含了非Ascii码中的字符(比如汉字)或者包含Ascii码中的特殊字符(比如空格问号之类),那么就要勾选编码。

3,控制器

  • 逻辑控制器:用来控制取样器的执行顺序。除了仅一次控制器外,其他控制器下可以嵌套别的种类的逻辑控制器。
  • 循环控制器:定义一个循环规则。
    • 名称:控制器名称
    • 注释:随意设置
    • 输入变量前缀:可以在“用户自定义变量”中定义一组变量,循环控制器可以从中获取到变量对应的值,然后作为循环控制器的循环条件,还可以输出变量作为取样器的参数。
    • Start index for loop:循环变量下标起点
    • End index for loop:循环变量下标终点
    • 输出变量名称:循环控制器生成的变量名称
    • Add “_” before number?:变量前缀后是否加"_"作为分隔符
  • 录制控制器:脚本录制时自动生成的请求都在这个控制器下面
  • 事务控制器:假设提交一个工单需要3个步骤(step1,step2,step3),每一步都需要发送一个请求到服务器,为了获取3个请求的总时间,可以使用事务控制器将这3个请求聚合,把3个请求作为事务控制器的子组件。 所以事务控制器实际就是聚合逻辑上应该合并在一起的N个请求的总响应时间。

4,函数

  函数是一个编程的概念,类似于一个盒子,我们输入一些值后,这个盒子输出一些值。

  • Random函数:这个函数需要我们输入2个值,1个是随机范围的最小值,另1个是随机范围的最大值(如 ${_Random(1,3)}是随机生成1~3之间的整数;key${_Random(1,3)}是随机生成key1,key2,key3中的任意1个字符串)

5,配置元件

  配置元件是用来存放配置信息的,Jmeter提供了丰富的配置元件来帮助我们构建测试脚本。常用的配置元件有用户自定义变量元件,HTTP请求默认值元件等。

  • CSV数据文件设置:这个组件可以从指定的文件中一行一行地提取文本内容,根据分隔符拆解这一行内容并把内容与变量名对应上,然后这些变量就可以供取样器引用了。
    • 名称:随意设置
    • 注释:随意设置,可以为空
    • 文件名:引用的参数文件地址
    • 文件编码:读取参数文件用到的编码格式,建议用UTF-8格式保存参数文件
    • 变量名称:定义的参数名称,用逗号隔开,顺序与参数文件中的参数对应
    • 忽略首行:若参数文件首行是标题,则设置为True,反之为False
    • 分隔符:用来分割参数文件的分隔符(默认为逗号,也可以用tab来分隔,如果参数文件用tab分隔,在此应该填写“\t”)
    • 是否允许带引号:如果选True,
    • 遇到文件结束符再次循环?:
    • 遇到文件结束符停止线程?:
    • 线程共享模式:
  • HTTP信息头管理器:这个组件的作用就是以Key-Value的格式设置http请求的header,一般来说我们通过录制的方式获取http请求的header。另外每个请求下面挂一个header信息配置器不利于我们统一的控制线程组中的所有请求,我们可以只在线程组下面挂一个header管理器,这样线程组下的所有http请求都具有同样的header了。
  • 随机变量:这个组件的作用是生成字符+随机数字格式的字符串,并保存在变量中,以便后续使用。(如01-selenium,selenium-01,se001lenium)如果同时有两个HTTP请求,这两个HTTP请求取得是同一个随机变量。

6,监听器

  监听器可以理解为测试报告

7,定时器

  定时器的作用就是给用户每一步操作之前加上“思考”时间,使模拟的用户行为更接近真实用户的行为。

  • 固定定时器:这个组件的作用是暂停线程执行,将定时器放在两个请求之间,思考一段固定的时间。

8,前置处理器

   前置处理器用来做一些环境或者参数的准备工作,比如在对数据库进行操作前需要先建立一个数据库连接,那么前置处理器就可以完成这个功能。

9,后置处理器

   后置处理器一般放在取样器之后,可以帮助我们从服务器响应数据中查找到我们需要的数据。

  • 正则表达式提取器
    • 名称:随意设置
    • 注释:随意设置
    • Apply to:应用范围(四个选项)
    1. Main Sample and sub-samples:匹配范围包括当前父取样器并覆盖子取样器
    2. Main sample only:匹配范围是当前父取样器
    3. Sub-samples only:仅匹配子取样器
    4. JMeter Variable:支持对JMeter变量值进行匹配
    • 要检查的响应字段:针对响应数据的不同部分进行匹配,共7个选项
    1. 主体:响应数据的主体部分,排除Header部分;Http协议返回请求的主体部分就是Body
    2. Body(unescaped):针对替换了转义码的Body部分
    3. Body as a Document:返回内容作为一个文档进行匹配
    4. 信息头:只匹配信息头部分的内容
    5. URL:只匹配URL链接
    6. 响应代码:匹配响应代码,比如HTTP协议返回码200代表成功
    7. 响应信息:匹配响应信息,比如处理成功返回”成功“字样,或者”OK“字样
    • 引用名称:匹配出来的信息通过此名称进行访问,类似${引用名称}进行访问
    • 正则表达式:正则表达式提取器使用此串进行信息匹配
    • 模板:正则表达式可以设置多个模板进行匹配,在此只可指定运用哪个模板,模板自动编号。$1$指第一个模板,$2$指第二个模板,以此类推,$0$指全文匹配。
    • 匹配数字:在匹配时往往会出现多个值匹配的情况,如果匹配数为0则代表随机取匹配值;不同模板可能会匹配一组值,那么可以用匹配数字来确定取这一组值中的哪一个;负数取所有值,可以与For Each Controller一起使用来遍历。
    • 默认值:如果没有匹配到可以制定一个默认值。

10,断言

  断言用来验证结果是否正确,用一个预设的结果(值,表达式,时间长短等条件)与实际结果匹配,匹配到则成功,反之失败。断言元件有:

  • 响应断言
  • XML断言
  • BeanShell断言

 11,Test Fragment

  Test Fragment是一个辅助的组件,在脚本开发过程中可以用来备份元件;Test Fragment下的元件可以被模块控制器调用,可以利用它来模块化请求(把一个业务封装成一个方法供复用)供模块控制器调用。

猜你喜欢

转载自www.cnblogs.com/xiaopc/p/11096499.html