jmeter
文章目录
注:★代表常用程度
一.Thread:
1.线程组★★★:线程数是并发线程数,ramp-up period是这些线程产生需要的总时间包括循环次数
2.setUp线程组★★:一定在主线程组之前执行的线程组
3.tearDown线程组★★:一定在主线程组之后执行的线程组
二.Sampler:
1.HTTP请求★★★:默认端口号不填表示80端口,协议默认是http,可以传键值对数据以及json数据,键值对数据写在body data中可以采用a=b&c=d的形式来书写
2.Test Action★★:控制当下线程组的行为,包括当下线程组延时暂停,错误是启动下一个线程组等
3.Debug Sampler:常用于查看变量,用来调试查看
4.AJP/1.3 Sampler:tomcat基于HTTP传输的二进制方式
5.Access Log Sampler:用于打印出请求日志的
6.Bean Shell Sampler★★★:类似于Bean Shell的提取器
7.FTP请求★★:FTP请求
8.JDBC request★★:常用来做数据库性能测试,之前要写配置数据库的控制器,后面有查看结果,JDBC Request中写sql语句
9.JMS point-to-point:即JMS P2P,JMS即java消息服务,做压测
10.JMS Publisher★:java消息发布者,消息传输中,发布者和订阅者可能是异步的
11.JMS subscriber★:同上
12.JSR223 Sampler:jsr223标准,可以在java中执行js脚本语言
13.JUnit Request★:方便jmeter来进行单元测试,通过把代码中的jar包放入jmeter的lib目录下,重启jmeter,然后在此sampler中配置jar包即可进行单元测试
14.java请求:进行java代码性能测试
15.LDAP Extended Request:ldap即轻量级目录访问协议,树状结构的为查询搜索而优化的分布式数据库,优异读性能,较差写性能,没有事务回滚等复杂操作
16.LDAP请求:同上
17.Mail Reader Sampler★★:用于发送邮件读取邮件,读取外部邮件请求
18.OS Process Sampler:可用来启动一个可执行程序,通过各种命令方式启动,所以我们可以用任何语言编写一个测试用的可执行程序,该可执行程序中调用我们的接口,掉用完后可做简单的解析判断输出文本信息,也可以把返回的原始数据输出而交由jmeter做后续解析判断
19.SMTP Sampler:smtp为简单邮件传输协议,这个请求一般用来做邮件服务器的压测
20.TCP取样器★:通过tcp/ip来连接特定服务器,连上服务器之后发送消息,然后等待服务器回复
三.逻辑控制器
1.如果(If)控制器★★★:默认是勾选上interpret condition as variable expression,也就是说默认是认可jmeter中内在的函数的表达式的,常用函数__jexl3和__groovy取消这个选项时,也就是说会默认识别一般等式的匹配。默认是不勾选Evaluate for all children ,一旦勾选了这个就表示每次if控制器中的节点都要率先执行一下if判断
2.事务控制器★★:可以把加载事务控制器中的请求当做一个事务来进行处理
3.循环控制器★★★:jmeter中的简单循环控制器的循环次数是在第一次进入循环控制器中时候被识别,下次不断被循环中,不再识别该字段,也就是说循环次数更像是for循环中第一个封号前的字段,而不是真正两个封号中的字段
4.while controller★★★:也就是while当循环,这个循环在每次循环时候,不断来判断循环条件,因此该循环,可以来判断并且在中途跳出循环,当while控制器中为空的时候,直到控制器中一个取样器请求失败时候就会跳出,其中输入LAST,直到最后一个取样器请求失败才会跳出循环,该逻辑控制器类似于if逻辑控制器,默认是只能用jmeter内置函数来进行等式匹配的,而且该逻辑控制器不能识别一般的等式,只能用jmeter中的函数封装一下
5.critical Section Controller★:相当于java中的加锁机制,其中的Lock name类似于java中的Object类型的锁,该控制器的作用是确保在其下的取样器在同一个线程组中只会执行一次
6.foreach控制器★★★:此循环控制器中有变量前缀字段,可以用来遍历变量,常常和用户自定义变量来联合使用,并且通过输出变量名来去出相应的字段
7.Include Controller★★:包含控制器的作用主要是为了使用外部的jmx文件
8.交替控制器★:此控制器中假如有多个请求,每次该线程组循环一次,只会执行其中的一个请求,勾选忽略资控制块,就会视交替控制器中的逻辑控制器为禁用状态,interleave across threads勾选表示线程一执行第一个请求,线程二执行第二个请求,线程三执行第三个请求
9.仅一次控制器★:该控制器可以作为循环控制器中的一个控制器,用来在每次循环中只在第一次循环执行一次
10.随机控制器:随机执行其下的一个请求,可以勾选“忽略资控制器块”来忽视掉随机控制器下的其他控制器
11.随机顺序控制器:随机执行其下的所有请求
12.录制控制器★★:录制脚本时候使用,后面单独总结
13.runtime Controller:可设置该控制器中给定一定时间的运行时长
14.简单控制器★★★:最简单的逻辑控制器,没有太多其他功能
15.吞吐量控制器:可以选择两种执行方式,百分比执行和总执行,而吞吐量填写的是执行数量或者执行比例,per user默认是不勾选的,勾选上考虑每个线程组
16.模块控制器:该控制器中即使添加了请求也不会执行,它的功能是进行跳转,而且只会执行一次跳转
17.Switch Controller★★:switch控制器,其中的switch value可以填写数值或者取样器的名字,若为空或者名字取不到默认是选取第一个接口,注意写0表示第一个接口,写1表示第二个接口
四.前置处理器
1.JSR223 PreProcessor:与jsr223取样器大同小异
2.用户参数★★★:里头新增的用户实际上线程组设置循环跑几次之后的
3.HTML链接解析器:此前置处理器放在取样器中,解析方式通过正则表达式匹配,可以解析input表单内容,而已解析form,input,textarea,select,option
4.HTTP URL 重写修饰符:对于有些网站,有的采用cookie保存信息,有的采用session保存信息,对于session方式,有些tomcat的session实现不是通过cookie,而是通过session id,也就是说用户登录有了session以后,tomcat就会维护一个sessionId,可以设置会话名称,然后jmeter会到url里按照这个参数去把上面那个sessionid抓下来
5.JDBC PreProcessor★★:可以用来代替jdbc request
6.RegEx User parameters:正则表达式用户参数
7.Sample Timeout★★:取样器延时,与固定定时器不同,它只在第一个请求前延时
8.BeanShell PreProcessor:请求前的代码处理
五.后置处理器
1.CSS/JQuery extractor:与正则表达式提取器类似
2.JSON Extractor★★★:提取json
3.Boundary Extractor★★★:为jmeter4.0之后新增的一个处理器,有了它可以完美的替代正则和json提取器,可以设置左右边界来提相应字段
4.正则表达式提取器★★★:正则提取
5.JSR223 PostProcessor:类似于jsr223的前置处理器
6.Debug PostProcessor:调试用的debug后置处理器
7.JDBC PostProcessor★★:类似于它的前置处理器
8.Result Status Action handler:很像test action,只不过test action是控制线程组,而这个后置处理器是在具体某一个请求里头来进行线程组的控制
9.XPath Extractor:xpath的提取器
10.BeanShell PostProcessor★★★:代码处理
六.断言
1.响应断言★★★:断言返回的字段
2.JSON Assertion★★:json的断言工具
3.Size Assertion:返回的数据字节数的大小来断言
4.JSR223 Assertion:这个是针对jsr223取样器的断言
5.XPath Assertion:常用于返回的html页面断言
6.Compare Assertion:这是一种比较特殊的断言元件,针对断言进行字符串替换时使用
7.断言持续时间:断言请求时间是否超时
8.HTML Assertion:能断言一个html文件最大的错误数和警告数
9.MD5Hex断言:md5是一种消息摘要算法,用来提供消息的完整保护性,是用来针对md5hex加密的参数进行断言
**10.SMIME Assertion:**smime是一种多用途网际邮件扩充协议,相比于之前smap邮件传输协议,增加了安全性,对邮件主题进行了保护,作用对象是采用了该邮件传输协议的信息
11.XML断言:判断返回的结果是否是xml格式
12.XML Schema Assertion:又称为xml概要断言,xml schema中定义了两种类型的数据,分别是xml document schema和xml-schema xml,该断言器的就是判断两种数据类型的消息
13.BeanShell断言★★:beanshell实际上是一种松散类型脚本语言,这个js类似,是一种安全符合ava语法规则的java脚本语言,同时又拥有自己的一套方法,主要是针对beanshell sample今夕是哪个断言,通过设置代码中的Failure字段是true还是false来判断是否响应成功
七.定时器
1.固定定时器★★★:固定定时器会在发送请求前增加时延,若某个请求中加入则表示该请求延时多少,若在控制器中加入则表示控制器下的所有请求在请求前都会延时这么久
2.Uniform Random Timer:也就是均匀随机计时器,取的延时是随机的,效果和固定定时器一样
3.Precise Throughput Timer:准确的吞吐量计时器
4.constant Throughput Timer:固定吞吐量计时器,吞吐量的执行范围可以是当前线程,当前线程组,所有线程组,通过达到吞吐量来暂停
5.高斯随机定时器:又称为正太分布随机定时器,该定时器可以设置两个请求见随机延时,且总的延时是高斯分布(正太分布)的总和(均值:0.0,标准差:1.0),使用时需要指定偏差延时和偏移值,比如访问百度网站,有的用户可能3s后就进行了搜索,有的人可能在10s后进行了搜索,也就是说用户搜索在3-10s之间,从统计学角度来看,这个图像呈现一个正太分布的状态
6.JSR223 Timer:提供了jsr223脚本方式进行延时
7.Poisson Random Timer:类似于高斯随机定时器,只是随机延时值发生在一个特定值,总的延时呈现泊松分布
8.Synchronizing Timer★:同步定时器,这个在loadrunner中为集合点,它实现了某种意义上的并发,number of
simulated users to group by设置的字段表示等待多少个用户再一起并发,timeout
in milliseconds设置的字段若是0表示一直等待直到达成上面字段的用户数,如果设置具体时间30表示延时30ms不管是否达到上面设置的用户数
9.BeanShell Timer:通过写脚本来定时
八.Test Fragment
1.Test Fragment:与线程组是同级别的,但是默认不会执行,还有当其当它被模块控制器引用时候才会被执行
九.配置元件
1.CSV 数据文件设置:csv文件最早用在简单的数据库里,因为格式简单,它是个纯文本文件,每一行表示一张图片的许多属性,在收集一套图集时,只要能找到它的csv文件,每行相当于一条记录,使用”,”分割字段的纯文本数据库文件,用来提取csv文件中的数据
2.HTTP信息头管理器★★★:常用来写请求头
3.HTTP Cookie 管理器★:作用是像浏览器一样存储和发送cookie,若你请求一个站点,然后它的response中包含cookie,该管理器可以自动保存该请求response中传回来的cookie,并且在所有后来发送到该站点的请求中使用这些cookie的值,在查看结果树的request界面可以看到被发送的cookie data
4.HTTP cache Manager:clear cache each iteration?默认是不勾选的,若选择该项,则属性管理器下所有sample每次执行时候都会清楚缓存,Use Cache-Control/expires header when processing GET requests这个选项默认是勾选的,在处理get请求时候使用过期信息头,Max Number of elements in
cache默认值是5000
5.HTTP请求默认值★★★:http请求默认值用来将http请求的众多共有信息提前的
6.计数器:给定计数器的起始值初始值,第一次迭代时,会把该值赋给计数器,计数器递增,允许用户配置起始点,最大值和增量,技术器会从开始循环到最大,然后重新开始直到测试结束
7.DNS Cache Manager:dns的缓存管理器
8.FTP请求缺省值:这是相对于ftp请求来的
9.HTTP授权管理器★★:该属性管理器用于设置自动对一些需要验证的页面进行验证和登陆,其中域是身份认证页面的域名,mechanism提供两种认证机制,basic_digest和kerberos,其中basic_digest是一套基于http服务端 认证机制,保护相关资源避免被非法用户访问,而kerberos是一个基于共享密钥对称加密的安全网络认证系统,其避免了密码在网上传输,将密码作为对称加密的密钥,通过能否解密来验证用户身份
10.JDBC Connection configuration★★★:用来做jdbc连接配置的配置设置
11.Java请求默认值:java请求代码测试请求默认值
12.密钥库配置:目前不清楚
13.LDAP Extended Request Defaults:面向ldpa搜索数据库而言的
14.LDAP请求默认值:同上
15.登陆配置元件/素:邮件服务,通常可以读取外部的邮箱中的邮件,比如说清理邮件读取邮件等众多功能
16.登陆配置元件/素:用来配置默认的用户名和密码,因为一些取样器中需要验证用户名和密码,若在取样器中没有配置用户名和密码会自动用该元素设置的填充
17.随机变量:可以配置生成随机数,自定义输出格式,最大最小,以及是否为每个线程组单独生成
18.简单配置元件:这个主要是开发人员在开发新的jmeter组建时,使用gui
19.TCP取样器配置★:这个配置元件是相对于tcp取样器而言的配置元件
20.用户定义的变量★★★:常用在用户定在首部变量,方便后边使用
十.监听器
1.查看结果树★★★:LodeRunner(LR)图表分析功能很强大,jmeter这方面要差一点,查看结果树中,load time是加载的时长,connect time连接时长,latency等待时长,size in bytes发送数据的总大小,headers size in bytes发送头大小,body size in bytes发送数据部分的大小
2.Summary Report:可以将所有数据写入文件,保存测试结果到本地,configure可以设置结果属性,std.dev响应时间的标准方差,ERROR%事务错误率,throughput吞吐率,kb/second
每秒数据包流量,avg.bytes平均数据流量
3.聚合报告★★★:与上面的很相似。
4.Backend Listener:后端监听器,具体不知道怎么用
5.Aggregate Graph:聚合图表,可以用图表的形式来表现出来结果报告
6.断言结果:对取样器进行断言后,主要是为了显示取样器每一次的断言结果,不建议性能测试时候使用
7.Comparison Assertion Visualizer:与断言结果相对于一般断言而言,这个是相对于比较断言而言
8.生成概要结果:非图形化方式运行时,无法查看测试结果,用此监听器可以让结果在cmd窗口显示
9.图形结果★★:可以让结果完全用图形化的方式显示出来
10.JSR223 Listener:这个是相对于jsr223而言的
11.邮件观察仪:一旦失败超过多少,会发送邮件
12.Response Time Graph:常在做压力测试时候可以看到各个请求的响应时间点
13.保存响应到文件:如字面意思
14.Simple Data Writer:功能是可以把测试结果保存到本地的csv文件里头
15.用表格察看结果★★:可以用表格的形式查看结果树
16.BeanShell Listener:写代码的形式查看需要的结果
十一.非测试元件
1.HTTP Mirror Server★:在本地临时搭建一个http镜像服务器,该服务器可以把收到的请求原样返回,这样就可以看到发送出的请求的具体内容,以供调试
2.HTTP代理服务器★★:常用于jmeter录制,配置
3.Property display★★★:这个可以将跑出来的参数全部汇总显示
十二.导航栏和菜单栏
一.导航栏:
1.template:其中有recording录制模板,有recording with think time,jdbc load test数据库测试,jsr223 sampler using groovy,beanshell sampler,mongodb load test,building a web test plan,building an advanced web test plan,buiding a
soap web test plan,buiding an ftp test plan,buiding a ldap test plan,buiding an extended
ldap test plan,think time at a point
2.start no pauses:这个与一般的jmeter中开始运行不同的是这个开始是忽略定时器的
3.函数助手对话框:一般是在表格中输入相应的表单时或者参数然后被这些函数转化成需要的东西
二.菜单栏:
1.文件>revert:可以回退到上一个最近那次的save时候
2.编辑>toggle:在禁用和启用见切换
3.search>reset search:用来清除之前搜索产生的红框
4.运行>远程启动相关:因为模拟多用户并发可能导致数据量太大,单台机子吃不消,所有有远程来控制机群
5.选项>ssl管理器:因为在有的网页是要ssl安全验证的,在ie中网页>右键>属性>高级>证书,在detail中点击copy to file来导出证书,然后管理器来导入文件
6.选项>zoom in:可以放大jmeter中的字体
7.选项>zoom out:可以缩小jmeter中的字体
8.帮助:主要是用来生成各种报告信息
十三.Jmeter中变量
1.测试计划中定义的变量:变量作用域为所有线程
2.配置元件中的用户定义的变量:作用范围看放在什么地方
3.配置元件中的csv data set config:其变量作用域的方位也是依据所处为不同而不同
4.前置处理器或者后置处理器产生的变量:作用域一般为当前线程
5.jmeter的属性:是所有线程共有的,这是定义在jmeter.properties文件中的,此变量常用来在不同线程中传递数据,可以通过setproperty函数来设置属性,通过P来取出属性值,通过property display这个元器件来看jmeter中有哪些属性
6.vars:常用来在某个线程中设置变量提取变量,设置变量必须为String类型,vars来提取的也必为string类型,${}提取到的一定是值
7.ctx:ctx.getThreadNum()用来获取该线程组设置多线程中第几个线程
8.props:props.put等同于设置jmeter属性,props.get等同于取出jmeter中的属性值
9.prev:可以获取取样器返回的信息
10.data:能直接取到,但是具体不知道是什么东西,可能是地址可能是其他东西
11.log:日志打印info,warn,trace,debug,error
十四.Jmeter中常用的正则表达式
1.(.+?)
其中()表示其中的是正则表达式,.表示匹配任何字符可以有或者没有,+表示一次或者多次,?表示找到第一个后停止
2.(\d+)
匹配任意长度的数字
3.(-?\d+)
匹配任意长度的数字,前面可能有-字符或者没有-字符,这些所有的东西正则都能提取到
十五.Jmeter录制功能
1.主要是添加非测试元件中的http代理服务器,端口号默认是8888,将目标控制器指向指定线程组的下的录制控制器,也就是说还要再添加线程组下录制控制器
2.设置chrome中代理服务器,代理服务器设置,设置地址localhost,端口设置8888,勾选本地不支代理
3.开启http代理服务器,然后打开chrome,输入相应要录制的网址,在网址中点击(也就是相当于各种请求),之后点http大力服务器的停止即完成录制,录制了http服务器开始阶段的各类请求
4.录制过程中,若你只设置了代理,但是jmeter没有启动录制或者说有时候虽然启动录制,但是jmeter录制功能不稳定,会出现“代理服务器拒绝连接”的问题
5.关闭jmeter录制过程的显示ssl安全验证的方法,可以用chrome设置>高级>管理证书>受信任根证书颁发机构>导入>jmeter安装目录下bin下证书即可
十六.Jmeter中小细节以及需要注意的地方
1.两个$嵌套取值
目前变量不支持嵌套,如${Var${N}}
不能正常工作,但是Jmeter2.2以后可以通过__V (variable)来实现,比如${__V(Var${N})}
,老板的则是使用${__BeanShell(vars.get("Var${N}")}
再比如说有两个变量preSaleId和变量counter,比如说要${preSaleId_${ counter }}
提取的东西,实际上jmeter是不支持这种形式的,但可以用${__V(preSaleId_${counter})}
形式成功提取
2.jmeter理解
Jmeter是开源的阿帕奇的java应用,对cpu和内存消耗很大,当需要模拟数以千计并发用户时,用单台机器模拟所有用户会比较吃力,甚至引起java内存溢出错误
3.jmeter线程组串并行
Jmeter中线程组默认是并行的,在testplan中设置独立运行每个线程组即使串行,在jenkins中跑时候各个脚本是并行执行
文章最后发布于: 2018-11-29 21:11:55
相关阅读
Jmeter下的bugfree的登录、新建bug、解决bug
1、录制bugfree的登录、新建bug、解决bug的脚本2、如何查看那些是有效的脚本简单点:一般都是post或者get请求,找图片是绿色箭头的,再
批量执行某一目录下多个测试脚本,build.xml文件如下 <?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test"
Jmeter之 BeanShell Sample 的使用说明
查阅Jmeter组件使用参考地址 ----- http://jmeter.apache.org/usermanual/component_reference.html BeanShell Sample 是一
1:Beanshell的基本语法1.1:Beanshell的For循环与集合String a = "aaa";int b = 111;List list = new ArrayList();//list集合只能
Jmeter简介Jmeter的基本概念百度百科:Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被