JMETER录制脚本,脚本增强,参数化,作用域和执行顺序
录制脚本
1、 badboy 录制脚本辅助测试
下载并且安装好 badboy 软件
在badboy中录制操作测试的内容: 保存 file – > export to jmeter,保存为 .jmx格式。
注意:badboy中录制的脚本,不是一行行代码,是web 请求对象
在jmeter中打开: 检查请求
添加监听器
修改各项属性
调试脚本
脚本优化增强
2、 jmeter 作为代理服务器录制脚本(了解)
1) jmeter – > 测试计划 – 》非测试元件 – 》 http 代理服务器
在代理服务器中设置过滤条件,去掉图片,css,js 等请求
..js.|..css.|..jpg.|..gif.|..ifc.
2) 在浏览器中设置代理服务器(注意端口号)
如果,jmeter代理服务器没有启动,网络不可以使用了。
Jmeter 其他常见的元素说明
配置元件:脚本中格式,数据进行统一设置,统一管理,例如:http 请求默认值
定时器:控制线程如何执行测试,操作和操作之间等待的时间,比如,同步定时器,用来实现真正的并发。
前置处理器:用于实际请求发出之前对即将发生的请求进行特殊处理。
例如:参数化
后置处理器:用于请求发出之后得到服务器的响应结果进行处理。一般都用于提取响应结果中特定的数据,例如:关联
断言:用于检查测试中得到的响应数据是否符合预期结果,这个断言一般都是在调试脚本过程中使用,性能测试的时候,断言需要禁用。
逻辑控制器:主要是控制测试中请求节点发送请求的逻辑顺序。
性能测试实际上是在测试不同场景下软件的性能,性能测试设计的实际是测试场景,这些场景必须要符合实际软件运行的情况……
脚本增强
逻辑控制器
事务:tps :每秒事务的处理量,这是表达系统处理能力的性能指标,即每秒处理的消息数,点击率。
Jmeter 通过逻辑控制器体现 – 》事务控制器
逻辑控制器 –》 仅一次控制器,使用于并非是测试对象,但是是前置条件的请求。
比如测试场景:
1、 打开首页(只一次就好)
两种实现方式:
1) 单独的线程组中,单独设置线程属性:1,运行1次,这个线程组建议使用 setup线程组;
2) 都是放在主线程组,添加一个逻辑控制器(仅一次控制器),只运行一次的请求必须放在这个控制器当中。
2、 测试登录的性能(4个用户,连续运行30秒)
线程属性设置:线程数 4 ,循环次数:永远+调度器,持续运行5秒
定时器
集合点:作用,一般用来测试瞬间并发的压力的,目的就是实现真正的并发测试。在Jmeter中集合点是通过定时器来实现的。
集合点:同步定时器,可以实现真正的并发。“先到的人在集合点等后面的人,等大家都到齐了就一起走。”适合的场景:秒杀,12306网站10点放票等等。
集合的策略:人都到齐了一起走(全部集合),集合参与人数=线程数。
每多少人到了,就一起走(部分集合),可能出现的问题:一直等不到后面的人,必须要设置超时等待时间。
设置定时总结:模拟用户组的数量,表示几个虚拟用户参与集合
0 表示所有用户都参与集合,不分组,即全部集合完毕再进行下一步。
0<设置数<线程总数,表示按照设置的这个数,几个一组集合,那么就会有可能最后一组出现一直无法等到满足集合的情况,就会一直等,因此需要设置超时等待时间,否则会一直等下去,不结束。
设置数>线程数,表示集合人数超出了线程数了,也需要设置超时等待时间,否则一直不开始运行,无法结束。
超时等待时间的设置:timeout, 如果设置为 0 ,就表示无限等待,如果出现最后一直无法满足集合数量,将一直等下去,一直等到系统的最大值才释放(不可取)Timeout>0,表示结合过程中,最后一组虚拟用户无法达到就和数量,再等待多少时间,就不等了,就自己运行完成。
思考时间:即,用户在页面操作停留的时间。作用,一般都是模拟用户的真实行为,让每个用户的操作有一定的差异,如果有了思考时间,就会初体现虚拟用户之间差异,同时也可以降低对服务器的堆积的时间,在jmeter中通过定时器当中固定定时器或者是随机定时器来体现思考时间。
固定定时器:固定停留时间(间隔),即上下请求发出的时间间隔是固定的。
高斯随机定时器:随机停留(间隔),每个虚拟用户在发出请求时,都是先找随机时间进行间隔停留的。
统一随机定时器。
参数化
参数化的作用:让数据变得不一样,模拟实际情况,每个线程(虚拟用户)的数据都是不一样的,就要进行参数化。
参数化实现过程(步骤):
1、 判断哪些数据需要实现参数化;
2、 设置参数(变量):新建变量,即定义参数(起名称),准备参数的值(重点,难点)
3、 用参数来代替脚本中需要实现参数化的数据。
1)用户定义的变量
特点:自定义变量,这个变量只有一个值,但是这个值是可以发生变化的,适用于 ip地址,欢迎语等的,只有一个值的数据。变量的值可以是任意类型。
测试计划页面 – 》用户定义变量
配置元件 – 》用户定义的变量
2)前置处理器:用户参数
前置处理器: 在请求发出之前,对请求中的数据进行特殊处理。
迭代:需要执行验证的操作再执行一次,就是一个迭代,即被测试操作每执行一次,就是一个迭代。
特点:指定了用户和参数之间的关系,适用于数量比较少的参数化,用户和参数之间有特定的关系。
前置处理 – 》用户参数
3) CSV文件设置(配置元件中)
前提:必须先准备参数值文件,.csv文件或者.dat 文件
适用范围:大批量用户参数化,并且参数值要有一定的规律(利用excel表格准备参数值)
通过参数文件参数化,可以实现大批量数据的参数化,并且每次运行的数据可以不一样
比如 : 100个参数值,有虚拟用户 50个 ==》 50个用户,每个用运行2次
20个虚拟用户 == 》 每个用户运行5次
100 个虚拟用户 ==》每个运行1次
注意:dat 文件:excle 表格准备参数值,文件另存为文本格式(制表符分隔).txt,找到另存好的文件,修改后缀名.dat,特别注意:变量值和变量值之间必须使用 ,(英文逗号间隔)
参数文件中的标题行没有实际的意义,加不加都可以,注意在文件设置的时候,变量名称是从文件左向右依次取不同的列的值。
4) Tools :函数助手
Jmeter 中提供了很多的内置函数,调用之前确保选择正确的函数。
csvread 函数
前提,需要先准备好csv参数文件,注意参数文件中,不要有标题行。
Tools 函数助手 –》csvread函数,参数值取值列 从 0列开始计算,0表示第一列,1表示第二列,从左向右依次类推。
_random 随机函数
作用:指定一个最小值,指定一个最大值,在这个范围内随机取值。
作用域和执行顺序
作用域(范围):出于不同的级别,受控制的范围和可控制的范围时不一样的,特别是定时器。
例如:如果希望定时只对一个请求生效,就将定时器放在这个请求下,作为请求的子节点;
如果定时器作用于多个请求,那么就将定时器放在请求的同级别,该级别所有请求都受定时器影响。
比如测试场景:
测试500人登录的性能 – 》在线数 500 ,并发数没有要求,脚本不需要添加定时器
测试 500人并发登录的性能 –》 在线500,并发 500,准备脚本叫:单线程组实现,线程属性500,一个登录请求,添加同步定时器
如果是想要多线程组实现(线程数合计500),每个线程组下都要一个登录请求,即需要实现多线程组,多请求并发,添加跟线程组同级别的同步定时器。
测试500 人登录的性能,300人实现并发 – 》在线数500,并发数300,准备脚本,单线程组实现,添加同步定时器,参数设置分组设置 300 人参与集合
测试300人登录的并发,同时200人在注册 –》在线数500,并发数500,准备脚本:
多线程组实现,每个线程组下有不同的请求,一个注册,一个登录,按照实际设置线程属性,添加跟线程组同级别的同步定时器。
结论:并发操作,不一定都是同一个操作,很多时候,并发都是不同的动作一起操作。
如果有多个定时器,在相同范作用范围内,会按照从上至下的顺序依次执行。
常见测试计划中各个元素执行的顺序:在同一个作用域范围下(同级别)执行顺序如下:
配置元件
前置处理器
定时器
取样器
后置处理器
断言
监听器
JMETER录制脚本,脚本增强,参数化,作用域和执行顺序相关推荐
- 性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化
目录 一.JMeter元件作用域和执行顺序 1. 元件的基本介绍 2. 元件作用域 3. 元件执行顺序 二.JMeter使用示例 1. JMeter第一个案例 2. 重点组件 2.1 线程组 2.2 ...
- Unity脚本在层级面板中的执行顺序测试3
断断续续的写了3篇,以后有时间可以做成一个系列了 前面2篇测试了GameObject的顺序,以及Awake和OnEnable的时机: Unity脚本在层级面板中的执行顺序测试1 http://www. ...
- 从零开始学前端:作用域、执行顺序 --- 今天你学习了吗?(JS:Day9)
从零开始学前端:程序猿小白也可以完全掌握!-今天你学习了吗?(JS) 复习:从零开始学前端:函数 - 今天你学习了吗?(JS:Day8) 文章目录 从零开始学前端:程序猿小白也可以完全掌握!-今天你学 ...
- jmeter录制手机脚本
整体分为两部分进行设置,首先设置jmeter,然后设置手机,下面分别来讲两个端的设置 一.jmeter的设置 1.启动jmeter,然后测试计划上,点击右键,添加线程组,用于保存录制的脚本 2.添加H ...
- Jmeter 录制手机脚本
添加一个线程组 添加一个HTTP 代理服务器 录制手机时,需要配置手机代理: 先找到开启jmeter的服务器地址,我的是本机开启的jmeter 在doc界面中输入ipconfig 找到本机ip.我得是 ...
- JMeter基础之组件的作用域与执行顺序
对于新手来说,jmeter的元件是还是不少的,如果我们按照每一个元件的每一个参数的含义去学习,无疑会降低性能测试学习的热情,算我们熟悉了所有元件以及元件上的参数了,我们也不知道如何将其组合成我们想要描 ...
- JMeter元件作用域和执行顺序
目标: 1.熟悉元件之间的作用域 2.掌握元件执行顺序 名词解析: 元件:多个类似功能组件的容器统称 组件:实现独立某个功能的统称(类似于函数) 线程组:模拟用户的 配置元件:在测试之前,对测试环境或 ...
- 【虫师--系列】JMeter基础之--元件的作用域与执行顺序
来自: http://www.cnblogs.com/fnng/archive/2012/12/27/2836506.html 作者:虫师 前面有介绍过jmeter的元件类别,对于新手来说,jm ...
- mysql脚本编写与案例_MySQL语句执行顺序和编写顺序实例解析
select语句完整语法: SELECT DISTINCT FROM JOIN ON WHERE GROUP BY HAVING ORDER BY LIMIT 执行顺序: from →join →on ...
- Jmeter录制app脚本
前期准备 电脑安装Jmeter:手机:wifi; 操作步骤: 1.启动Jmeter 2."测试计划"中添加"线程组": 3."工作台"中添加 ...
最新文章
- Android 自定义 圆环,Android自定义view实现圆环效果实例代码
- 遍历boost::fibers::unbuffered_channel< unsigned int >的测试程序
- cadence 添加自己设计的pad方法
- android q测试机型,小米9安卓Q系统刷机包开启测试 小米Android Q适配机型一览
- Activemq MQTT 简单消息推送示例
- HDU 4859 海岸线(最大流最小割)
- js 的强制 类型 转换cast, 伪对象?
- 快速实现对接京东EDI系统
- 拥有16年开发经验,我都使用了什么工具?[最近更新:2017-10-12]
- Ubuntu设置静态IP地址的几种方法
- 计算机二级考风考纪主题班会,2021年我国计算机二级考试基础概述.doc
- 痛心:三天痛别八位院士!中科院院士、著名药学家蒋华良英年早逝,终年57岁...
- 分布式系统下的幂等性问题如何解决?
- 玩一玩微信公众号开发(二) 管理凭据和自定义菜单
- php微信当面付,微信当面付(c#源码)
- EZ USB Suite工程导入
- python打开chrome浏览器自动登录网站并发表说说批量
- 华为存储系统运维管理
- QTableWidget 常见用法总结(一)
- 被“短信嗅探”盯上 一觉醒来一无所有?