目录

一、JMeter常用测试元件

1.线程组

2.调度器

3.控制器

4.监听器

5.定时器

6.断言

7.配置元件

8.前置处理器

9.后置处理器

二、Jmeter组件参数化

1. 参数化是什么

2. 为什么使用参数化

3. 参数化实现之用户自定义变量

4. 参数化实现之CSV Data Set Config

5. 使用Jmeter函数助手(文件中不要出现中文):


一、JMeter常用测试元件

1.线程组

线程组是任何测试计划的起点,所有的逻辑控制器和采样器都必须放在线程组之下。其他的测试元件(如监听器)可以被直接放在测试计划之下,这些测试元件 对所有线程组都生效。线程组就像它的名字所描述的那样,被用来管理执行性能测试所需的JMeter线程。用户通过线程组的控制面板可以:

设置线程数量;

设置线程启动周期;

设置执行测试脚本的循环次数;

每一个JMeter线程都会完整地执行测试计划,而且它们之间是完全独立运行的。这种多线程机制被用来模拟服务器应用的并发连接。参数Ramp- Up Period告诉JMeter达到最大线程数需要多长时间。假定共有10个线程,Ramp-Up Period为100秒,那么JMeter就会在100秒内启动所有10个线程,并让它们运转起来。每一个测试线程都会在上一个线程启动10秒之后才开始 运行。假定共有30个线程,Ramp-Up Period为120秒,那么线程启动的间隔就为4秒。

Ramp-Up参数不能设定得太短,否则在测试的初始阶段会给予服务器过大的压力。Ramp-Up参数也不能设定得太长,否则就会发生第一个线程已经执行完毕,而最后一个线程还没有启动的情况(除非测试人员期望这种特殊情况发生)。

如何找到一个合适的Ramp-Up参数值?建议初始值可以设定为Ramp-Up=总线程数,后续再根据实际情况适当增减。

2.调度器

在调度器控制面板中,可以设定测试运行的"启动时间"和"结束时间"。测试启动后会一直等待,直到用户设定的启动时间。测试运行期间,JMeter 会在每一次循环结束后,检查是否已经达到结束时间。如果已经达到了结束时间,JMeter就会终止测试运行,否则JMeter会继续下一个测试循环。

另外,用户还可以设定"持续时间"和"启动延迟"两项参数。需要注意的是,"启动延迟"会使"启动时间"无效,而"持续时间"会使"结束时间"无效。

3.控制器

JMeter有两种类型的控制器:采样器和逻辑控制器,二者结合起来驱动了测试进程。采样器被JMeter用来向服务器发送请求。例如,当测试人员想往服务器发送一个HTTP请求时,就加入一个HTTP请求采样器。测试人员还可以通过为采样器添加配置元件来定制化请求。

用户可以使用逻辑控制器来控制JMeter的测试逻辑,比如何时发送请求。举一个例子:测试人员可以插入交替控制器来轮流发送多个请求。

(1)采样器

采样器告诉JMeter发送一个请求到指定服务器,并等待服务器的请求。采样器会按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变采样器运行的重复次数。

每一种采样器都有多种参数可供设置。测试人员还可以通过在测试计划中加入一个或者多个配置元件,来进一步定制化采样器。

如果测试人员打算向同一个服务器发送同一类请求,可以考虑使用默认配置元件。每一类采样器都有一个或多个对应的默认配置元件。一定记住应为测试计划添加一个监听器,以便查看和存储(存储到磁盘)请求的结果。

如果测试人员想检查服务器响应的内容,可以为对应采样器添加断言。例如,当对Web应用做压力测试时,服务器虽然成功返回了"HTTP Response"代码,但是页面上可能会有错误,或者丢失了部分页面片段。针对这种情况,测试人员可以添加断言来检查特定的HTML标签,或者常见的错 误信息等。JMeter允许在断言中使用正则表达式。

(2)逻辑控制器

逻辑控制器可以帮助用户控制JMeter的测试逻辑,特别是何时发送请求。逻辑控制器可以改变其子测试元件的请求执行顺序。

4.监听器

监听器提供了对JMeter在测试期间收集到的信息的访问方法。"图形结果"监听器会将系统响应时长绘制在一张图片之中。"查看结果树"监听器会展示采样器请求和响应的细节,还能以HTML和XML格式展示系统响应的基础部分。其他监听器通过总结或者聚合方式展示信息。

另外,监听器可以将测试数据导入到文件之中,以供后续分析。所有监听器都会提供一个输入域,以便于用户指定存储测试数据的文件。监听器还会提供一个 配置按钮,用来配置存储测试数据的哪些字段,以及选用的存储格式(CSV或者XML)。读者朋友需要注意的是,所有监听器都保存同样的数据,唯一的区别是 它们如何展示数据。

监听器可以在测试的任何地方添加,包括直接放在测试计划之下。它们仅收集测试树中相同或者更低级别测试元件的数据。

5.定时器

默认情况下,JMeter线程在发送请求之间没有间歇。建议为线程组添加某种定时器,以便设定请求之间应该间隔多长时间。如果测试人员不设定这种延迟,JMeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。

定时器会让作用域内的每一个采样器都在执行前等待一个固定时长。如果测试人员为线程组添加了多个定时器,那么JMeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。

要在测试计划中的某个位置添加暂停,测试人员可以使用"Test Action"采样器。

6.断言

用户可以使用断言来检查从服务器获得的响应内容。通过断言可以测试服务器返回的响应与测试人员的期望是否相符。

例如,测试人员可以断言某个查询的响应中包含特定的文字信息。测试人员可以使用Perl格式的正则表达式来描述响应中应该包含的文字,或者它应该与整个响应相符。

测试人员可以为任何采样器添加断言。例如,测试人员可以为HTTP请求添加断言,用于检查文本""。接下来JMeter就会检查该文本是否出现在HTTP响应中。如果JMeter不能找到该文本,那么它就会将请求标记为失败。

需要注意的是,断言会影响作用域内的所有采样器。如果要让断言只影响某个采样器,需要将断言作为该采样器的子项。

如果要查看断言结果,可以为线程组添加"断言结果"监听器。失败的断言,也会在"查看结果树"和"用表格查看结果"两种监听器中显示。另外,在"Summary Report"和"聚合报告"中还会以错误百分率的形式统计。

7.配置元件

配置元件与采样器紧密关联。虽然配置元件并不发送请求(除了HTTP代理服务器例外),但它可以添加或者修改请求。

配置元件仅对其所在的测试树分支有效。例如,假设测试人员在一个简单逻辑控制器中放置了一个HTTP Cookie管理器,那么该HTTP Cookie管理器只对放置在简单逻辑控制器内的其他逻辑控制器生效

另外,相比父分支的配置元件,子分支内部的配置元件优先级更高。配置元件 "用户定义的参数"会在测试的初始阶段执行(无论它处于测试树的哪个位置)。

8.前置处理器

前置处理器会在采样器发出请求之前做一些特殊操作。如果前置处理器附着在某个采样器之下,那么它只会在该采样器运行之前执行。前置处理器通常用于在采样器发出请求前修改采样器的某些设置,或者更新某些变量的值(这些变量不在服务器响应中获取值)。

9.后置处理器

后置处理器会在采样器发出请求之后做一些特殊操作。如果后置处理器附着在某个采样器之下,那么它只会在该采样器运行之后执行。后置处理器通常被用来处理服务器的响应数据,特别是服务器响应中提取数据。

最后,对于这么多的部件,JMeter执行顺序规则如下:

配置元件

前置处理器

定时器

采样器

后置处理器(除非服务器响应为空)

断言(除非服务器响应为空)

监听器(除非服务器响应为空)

只有当作用域内存在采样器时,定时器、断言、前置/后置处理器才会被执行。逻辑控制器和采样器按照在测试树中出现的顺序执行。其他测试元件会依据自 身的作用域范围来执行,另外还与测试元件所属的类型有关(归属于同一类型的测试元件,会按照它们在测试树中出现的顺序来执行)。

二、Jmeter组件参数化

1. 参数化是什么

动态的获取并设置数据

2. 为什么使用参数化

**

执行批量操作,批量添加批量删除,人工效率太低
运用程序代替人工获取并设置数据,安全高效
比如:对被测系统的用户名和密码进行参数化,来模拟多个用户同时登录系统
复制代码

3. 参数化实现之用户自定义变量

通过这个功能,能实现多接口共享数据,修改一条即可修改全部

Filename:所需数据文件的路径。如和脚本同一路径,可直接填写文件名
File encoding:编码和文件保持一致即可,默认为ANSI。如有中文,建议为UTF-8
Variable Names:引用变量时的变量名,对应数据文件中的每一列,以逗号分隔。如不填写,文件的第一行数据将被读取为变量名
Delimiter:在.txt、.dat文件中,可以用逗号(,)或者Tab键(\t)来区分列与列
Allow quote data:选项选为“true”的时候对全角字符的处理出现乱码
Recycle on EOF:到数据文件结尾时是否循环读取。设置为True时,线程数过多,数据文件读取到最后一行时,会再次从第一行开始读取。设置为False,到达文件结尾时如继续读取,则值会默认为,可通过设置jmeter属性csvdataset.eofstring来改变该值。
Stop thread on EOF:Recycle on EOF设置为False,Stop thread on EOF设置为True,则读取数据文件最后一行后,停止测试,不管还有多少线程组未执行。
Sharing mode:共享模式。默认在所有线程组中使用,可选择每个线程组单独打开
相同的部分使用用户自定义变量
只需要修改一次接口
效果展示

4. 参数化实现之CSV Data Set Config

添加CSV Data Set Config:

添加界面:

通过这个组件可以动态获取并设置数据,实现批量添加操作
名词解释:

**

Filename:所需数据文件的路径。如和脚本同一路径,可直接填写文件名
File encoding:编码和文件保持一致即可,默认为ANSI。如有中文,建议为UTF-8
Variable Names:引用变量时的变量名,对应数据文件中的每一列,以逗号分隔。Delimiter:在.txt、.dat文件中,可以用逗号(,)或者Tab键(\t)来区分列与列
Allow quote data:选项选为“true”的时候对全角字符的处理出现乱码
Recycle on EOF:到数据文件结尾时是否循环读取。设置为True时,线程数过多,数据文件读取到最后一行时,会再次从第一行开始读取。设置为False,到达文件结尾时如继续读取,则值会默认为<EOF>,可通过设置jmeter属性csvdataset.eofstring来改变该值。
Stop thread on EOF:Recycle on EOF设置为False,Stop thread on EOF设置为True,则读取数据文件最后一行后,停止测试,不管还有多少线程组未执行。
Sharing mode:共享模式。默认在所有线程组中使用,可选择每个线程组单独打开

引用:
在jmeter中添加

线程数改为某个值
查看结果树:

其他:

  1. 线程组线程数改为大于文件中数据的处理:
    遇到结束符在循环
    遇到结束符停止线程
  2. 如果数据来自数据库
    数据库导出txt文件

5. 使用Jmeter函数助手(文件中不要出现中文):

**

1、点击 选项-->函数助手 调出函数助手对话框
2、选择 _CSVRead 函数(下图第一个框)
3、函数参数:1)第一个参数:填写文件路径。2)第二个参数:文件列号是从0开始的,第一列0、第二列1、第三列2、依次类推,然后点击【生成】按钮,则会自动生成我们需要的参数化函数。3) 复制生成的参数化函数, copy过程需要使用的地方即可。4) _Random函数是从某数据段随机读取数据替换参数,当需要添加多条数据记录且某些字段需要唯一性时使用。

B站最牛的Python自动化测试框架全栈测试开发实战项目入门到精通,涨薪必备教程!!!

JMeter常用测试元件和组件参数化相关推荐

  1. JMeter学习笔记--JMeter常用测试元件

    JMeter测试计划有一个被称为"函数测试模式"的选项,如果被选择,它会使Jmeter记录来自服务器返回的每个取样的数据.如果你在测试监听器中选择一个文件,这个数据将被写入文件.如 ...

  2. JMeter常用测试元件

    线程组 程组是任何测试计划的起点,所有的逻辑控制器和采样器都必须放在线程组之下.其他的测试元件(如监听器)可以被直接放在测试计划之下,这些测试元件 对所有线程组都生效.线程组就像它的名字所描述的那样, ...

  3. Jmeter 压力测试、并发测试、弱网测试

    jmeter常用测试元件 测试计划:默认 线程组:设置并发数.并发时间.请求循环次数 采样器(simple):较常用HTTP请求.JDBC Request.Soap/XML - RPC Request ...

  4. Jmeter压力测试_token参数化

    Jmeter压力测试_token参数化 简单的压力测试大家基本都知道了,接下来我就讲下怎么做token参数化 一.查看登录成功后返回值. 正如下方图片所展示的,我这里的tokenMap就是token ...

  5. JMeter常用组件

    本文转至http://blog.chinaunix.net/uid-26884465-id-3418212.html,个人觉得写得非常不错,适合初学者 1.线程组 程组是任何测试计划的起点,所有的逻辑 ...

  6. jmeter测试元件--控制器

    jemter 有两种类型的控制器:采样器和逻辑控制器,二者结合起来驱动了测试进程 采样器 采样器告诉jmeter发送一个请求到指定服务器,并等待服务器的请求.采样器或按照其在测试树中的顺序去执行,还可 ...

  7. JMeter中使用“用户自定义变量”实现参数化

    1.用户自定义变量介绍 我们可以看到前面一篇文章的例子中,数据文件login_data.csv的后三个参数都是一样的,我们可以把这些变量提取出来,放在一个公共的位置,方便我们随时提取.(凡是可以输入的 ...

  8. 史上最全《JMeter压力测试教程》——通俗易懂,3天即可学会

    性能测试 为什么要进行性能测试? 满足真实场景的业务需求 招聘需要 性能测试概念: 性能:软件质量属性中的"效率"特性 性能测试:使用自动化工具,模拟不同的场景,对软件各项性能指标 ...

  9. JMeter压力测试,五年Java开发者小米、阿里面经

    下载地址:jmeter-plugins.org 安装:下载后文件为plugins-manager.jar格式,将其放入jmeter安装目录下的lib/ext目录,然后重启jmeter,即可. 启动je ...

最新文章

  1. python基础包括什么-Python基础-数据类型总结归纳.
  2. idea 创建 Maven+Hibernate项目
  3. Hadoop hdfs文件块信息获取/文件重命名/修改文件的副本数量代码示例
  4. java idea连数据库报错:Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone'时区错误
  5. capwap学习笔记——capwap的前世今生(转)
  6. DataList控件分页
  7. python调用jar 性能_亲自有效---python 调用jar
  8. 32位、64汇编区别
  9. python创建虚拟环境命令_python 创建虚拟环境
  10. EasyIPCamera高性能摄像机RTSP服务器RTSPServer解决方案
  11. OPENQUERY用法以及使用需要注意的地方
  12. Android+Jquery Mobile学习系列(3)-创建Android项目
  13. Tigase组件 – 配置API
  14. 一名 IT 工程师的九年工作总结!
  15. 解扩matlab,(完整版)BPSK调制的MATLAB仿真
  16. Log4j日志等级设置详解
  17. 企业生产现场中5S管理的应用
  18. gmail如何配置163邮箱服务器端口,hotmail,gmail,live,QQ,163,yahoo邮箱服务器及端口号,outlook,foxmail 设置...
  19. Debian7升级glibc和gcc
  20. 高质量代码的几大标准

热门文章

  1. STM32F1xx HAL库 中文详解 之 综合概述(一)
  2. 双杀之后迎来双爆发,高性能计算HPC上云之势不可挡
  3. 算法时间复杂度的符号
  4. 基于蒙特卡洛法 分析了风电和光伏的出力情况,之后以IEEE33节点为例进行概率潮流计算
  5. 交通部 城轨交通运营管理规定_《城市轨道交通运营安全风险分级管控和隐患排查治理管理办法》政策解读...
  6. mac下搭建svn环境
  7. 中小型研发团队架构实践十:应用监控怎么做?
  8. 一体化伺服电机刹车电机多少伏供电
  9. 更换镜像源解决unable to locate package
  10. 【Latex】在标题下插入头图 teaser