一、目录结构
1、bin目录
examples: 目录中有CSV样例
jmeter.bat windows的启动文件
jmeter.log jmeter运行日志文件
jmeter.sh linux的启动文件
jmeter.properties 系统配置文件
jmeter-server.bat windows分布式测试要用到的服务器配置
jmeters-server linux分布式测试要用的服务器配置
其中系统配置文件中的SSL设置重点关注如下几个:
指定HTTPS协议层
https.default.protocol=TLS
指定SSL版本
https.default.protocol=SSLv3
设置启动的协议
https.socket.protocols=SSLv2Hello SSLv3 TLSv1
缓存控制,控制SSL是否可以在多个迭代中重用
https.use.cached.ssl.context=true
2、docs目录
接口文档目录。例C:\apache-jmeter-3.0\docs\api下的index.html
3、extras目录
扩展插件目录。提供了对Ant的支持,可以使用Ant来实现自动化测试,例如批量脚本执行,产生html格式的报表,测试运行时,可以把测试数据记录下来,jmeter会自动生成一个.jtl文件,将该文件放到extras目录下,运行"ant -Dtest=文件名 report",就可以生成测试统计报表。
4、lib目录
所用到的插件目录,里面均为jar包。jmeter会自动在jmeter_HOME/lib和ext目录下寻找需要的类,lib下存放JMeter所依赖的外部jar:如httpclient.jar、httpcore.jar、httpmime.jar等等。
其中lib\ext目录下存放有Jmeter依赖的核心jar包,ApacheJMeter_core.jar、ApacheJMeter_java.jar在写client端需要引用,JMeter插件包也在此目录下。
lib\junit下存放junit测试脚本.
5、Licenses目录
jmeter证书目录
6、Printable_docs目录
用户使用手册,例C:\apache-jmeter-3.0\printable_docs下的index.html
二.线程组设置:
线程组:虚拟用户数(整数,模拟人数)
ramp up period :设置的虚拟用户数需要多长时间全部启动。如果线程数为20,时间为10,20/10=2,也就是每秒钟启动2个线程,
循环次数:每个线程发送的请求次数,如果线程为20,循环次数为100,那么每个线程发送100次请求,总请求数为20100=2000.运行时间就是全部启动时间10(循环次数)10=100秒。
如果勾选了“永远”,那么所有线程会一直发送请求,知道选择停止运行脚本,
调度器:可以更灵活的设置运行时间等,可以设置启动,结束,持续,延迟等
总结:
线程/间隔时间=增加线程数策略
线程数*循环=最后的请求次数
间隔*循环=运行时间
监听器:聚合报告(单位:毫秒)
前提:添加监听器——聚合报告
解释:
label:定义http请求名称
average:平均响应时间-默认情况下是单个request的平均响应市场,当使用了transaction controller时,也可以以transaction为单位平均响应市场
media:中位数,也就是50%用户的响应时长
90%line:90%用户的响应时长
min:访问页面的最小响应时长
max:访问页面的最大响应时长
error%:错误请求的数量/请求的总数
throughtput:默认情况下每秒完成的请求数(request per second),当时用了transaction controller时,也可以表示类似loadrunner的transaction per second数。
KB/sec:每秒从服务器端接收到的数据量
可以将文件保存,保存文件后缀是.jtl
三.jmeter元件的作用域与执行顺序
元件的作用域
配置元件:会影响作用范围内的所有元件
配置处理程序:在其作用范围内的每一个sampler有效
定时器:对其作用范围内的每一个sampler有效
后置处理程序:在其作用范围内的每一个sampler元件之后执行
断言:收集起作用范围的每一个sampler元件的信息并呈现
sampler:元件不和其他元件相互作用,因此不存在作用域的问题
执行顺序(如果存在多个相同类型的元件按照从上到下的顺序执行):配置元件、前置、定时器、sampler、后置、断言
四.参数化
第一种参数化:用户参数
1.在需要的作用域中右键添加-前置处理器-用户参数假设名为rou
2.添加变量 为rou
3.添加用户:每个用户代表一个参数的值
4.在接口中的参数找到需要参数化的值
5.修改为:${rou}
当需要多个参数化时,可以多次添加变量。
第二种参数化:
CSV Data Set Config
1.在需要的作用域中右键添加-配置元件CSV Data Set Config
2.设置filename文件名: 即残说话要引用的文件名,这里是路径 比如:d:\number.txt。前提已经有了这个文件
3.file encoding文件编码:可以不填,填写的值为gbk,utf-8
4.varlable names(comma-delimited): 变量名(多个变量可以用逗号分割)
5.delimiter(use’\t’for tab): 参数文件中要有多个变量值的分隔符,\t表示用tab键分割,默认分隔符是‘,’(逗号)
6.recycle on EOF?:结束后是否循环?默认是True
五.集合点:
在请求前右键添加定时器-synchronizing timer
位置:要放到集合的操作前,也就是放到需要集合的请求前
设置:名称自定义
number of simulated users to group by:
整数,就是多少人并发数
注意:线程和并发人数的关系,并发人数不能大于线程数
六.检查点:(jmeter中叫做断言)
1.jmeter的检查点就是断言中的响应断言
添加-断言-响应断言
如果查看断言结果:添加-监听器-断言结果
在响应断言中点击添加:把需要检查的值,输入即可
如果检查的值是变量,那么可以把变量的名输入。例如:${rou}
2.断言的持续时间:
例如:百度首页显示时间不能超过1s,那么这种就可以用持续时间断言
设定:输入持续时间(毫秒):1000
运行后,在断言结果中可以查看
3.返回结果字节大小断言
右键在需要断言的地点添加-断言-size assertion
填写字节大小即可
运行后,在断言结果中可以查看
七.动态关联:jmeter中关联的方法:一般为正则和xpath
步骤:lr中小飞机程序网站的设定,勾选第三项
更新后,每次登录会有一个变化的session值。
<session=XXX,id=XX,name=XX>html
LB=session
RB=id=XXX
1.小飞机的nav.pl接口是发送登录接口
2.在nav.pl接口上点击右键-添加-后置处理器-正则表达式提取器
比如原有的html为
可以讲value的值用正则表达式编写(.*)
解释:正则表达式都是在()中表示,点.代表一个或多个字符,星号*表示出现一次或者多次
模板:在正则表达式中输入以下内容:
引用名称,随意编写比如session
正则表达式name=usersession value=(.*)>
模板:1
匹配数字(0代表随机):1
解释:模板:如果前面的正则表达式取了不止一个参数,那么这里需要指定参数的组别,如果该参数为1,则表示取得第一个值,2表示取得第二个值,以此类推,如果一个html可以配出很多值,那么取html中的第几个这里就填写几个
匹配数字:0随机,-1取所有值,以数组形式存储:1,2,,,,1就是取第一个值,依次类推
4.判断管理是否正确
4.1添加断言:输入${session}
5.在接口的传值中,可以把usersession后的值填写
5.1${session}
八.jmeter图形监控(扩展)
前提下载插件:http://jmeter-plugins.org/downloads/add/
添加扩展插件:1.将jmeterplugins.jar包复制到jmeter的lib目录下面的ext目录下面,重新启动jmeter(jmeter plugins-standard-1.2.0.zip)
2.我们需要将server agent目录及下面的文件赋值到我们测试的服务器上,然后点击打开,它的默认端口为4444,如果我们服务器是windows的,双击startagent.bat即可,如果服务器是Linux的,在linux中执行start agent.sh即可(server agent-2.2.1.zip)
小丫玮 发布了4 篇原创文章 · 获赞 1 · 访问量 679 私信 关注