性能测试工具安装及使用.docx
- 文档编号:12539245
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:13
- 大小:489.94KB
性能测试工具安装及使用.docx
《性能测试工具安装及使用.docx》由会员分享,可在线阅读,更多相关《性能测试工具安装及使用.docx(13页珍藏版)》请在冰豆网上搜索。
性能测试工具安装及使用
Jmeter安装与使用
1.使用环境
Jmeter可以运行在linux、windows,jdk1.4以上环境。
2.工具安装及启动
1、jdk安装
2、Jmeter安装,解压apache-jmeter-2.13.tgz文件,点击Jmeter目录下bin文件夹里的jmeter.bat就可以打开Jmeter
3、Badboy安装,运行BadboyInstaller-2.1.3.exe文件,安装成功后,在开始菜单→所有程序,启动badboy。
3、脚本录制
启动badboy,录制页面操作,完成后点击file→ExporttoJmeter(保存为.jmx文件)
4、脚本修改
在jmeter点击文件→打开.jmx文件,进行修饰,并调试脚本。
3.参数化
1、随机参数
选项→函数助手对话框→“_Random”
在“函数参数”中出现的三个参数设置,第一个参数是“一个范围内的最小值”,即所要取的随机数的最小值,设置成1;第二个参数是“一个范围内的最大值”,即所要取的随机数的最大值,设置成100;第三个参数是“函数名称”,用于和其他随机数进行区分,输入random。
设置好三个参数后,点击“生成”按钮,会在对话框的最下面生成一个字符串“${__Random(1,100,random)}”,
然后在脚本中找到要替换的参数,把它的值换成前面生成的字符串就可以了,然后每次运行的时候,这个参数会变成一个1到100之间的随机数。
即使不使用“函数助手对话框”,直接在脚本中写出函数字符串(如“${__Random(20,30,Random1)}”),该字符串在脚本中也能生效的。
2、文件读取
右键点击Jmeter中需要参数化的某个请求,选择添加→配置原件→CSVDataSetConfig
设置如下:
Filename:
文件名,指保存信息的文件目录,可以相对或者绝对路径(比如:
D:
\user.csv)
csv文件建立时需要用记事本文件,改写后缀,不能用excel文件;
VariableNames:
参数名称(如:
有几个参数,在这里面就写几个参数名称,每个名称中间用分隔符分割,分隔符在下面的“Delimitet”中定义,(比如:
use,password)
说明:
这里的username与password为自己定义的名称,请求中要用这个名称,例如${参数名称}
Delimitet:
定义分隔符,这里定义某个分隔符,则在“VariableNames”用这里定义的分隔符分割参数。
CSV默认为英文的逗号
RecycleonEOF:
是否循环读入,因为CSVDataSetConfig一次读入一行,如果线程数超过文本的记录行数,选择true时,当文本中参数运行完成后,再从第一个开始循环读取,如果选择为false,则停止运行
备注说明:
RecycleonEOF与StopthreadonEOF结果的关联
RecycleonEOF:
到了文件尾处,是否循环读取参数,选项:
true和false
StopthreadonEOF:
到了文件尾处,是否停止线程,选项:
true和false
当RecycleonEOF选择true时,StopthreadonEOF选择true和false无任何意义,当RecycleonEOF选择flase时,StopthreadonEOF选择true,线程4个,参数3个,那么只会请求3次
当RecycleonEOF选择flase时,StopthreadonEOF选择flase,线程4个,参数3个,那么会请求4次,但第4次没有参数可取,不让循环,所以第4次请求错误
在需要使用变量的地方,比如在登录操作中,需要提交的表单字段包含用户名密码,我们就可以用${变量名}的形式进行替换,例如${user}和${password}
4.定时器(稳定性测试)
1、固定定时器(ConstantTimer)
固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间
2、高斯随机定时器(GaussianRandomTimer)
延时时间是在指定范围内的正态分布。
3、均匀随机定时器(UniformRandomTimer)
延时时间是在指定范围内,并且每个时间取值的概率相同。
4、固定吞吐量定时器(ConstantThroughputTimer)
可以让JMeter以指定数字的吞吐量(即指定TPS,只是这里要求指定每分钟的执行数,而不是每秒)执行。
吞吐量计算的范围可以为指定为当前线程、当前线程组、所有线程组,并且计算吞吐量的依据可以是最近一次线程的执行时延。
5、同步定时器(SynchronizingTimer)
在该定时器处,使线程等待,一直到指定的线程个数达到后,再一起释放。
可以在瞬间制造出很大的压力。
和loadrunner的集合点(rendezvouspoint)类似的功能。
6、BeanShell定时器(BeanShellTimer)
可以自己编程实现想要干的任何事。
有复杂需求时,就要靠它了。
例如,希望在每个线程执行完等待一下,或者希望在某个变量达到指定值的时候等待一下。
使用技巧:
1)定时器是在每个sampler(采样器)之前执行的,而不是之后;
不管这个定时器的位置放在sampler之后,还是之下,它都在sampler之前得到执行。
2)定时器是有作用域的;当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;
3)如果希望定时器仅应用于其中一个sampler,则把该定时器作为子节点加入;
5.响应断言
线程组,右键→添加→断言→响应断言
位置1:
名称、注释
位置2:
要测试的相应字段,即要检查的项
位置3:
模式匹配规则
包括:
返回结果包括指定的内容
匹配:
返回结果与指定结果一致
Equals:
返回结果与指定结果一致
Substring:
返回结果是指定结果的字串
否:
不进行匹配
位置4:
要测试的模式,即填写你指定的结果(可填写多个,如图中就是希望返回文本中包含有2个指定的字符串,只有当同时包含了这2个串,这个断言才算通过,否则,算失败。
)按钮【添加】、【删除】是进行指定内容的管理
6.服务器监控
性能检测是需要监控宿主也就是服务器的CPU,内存,I/O和TCP之类的一些性能数据。
大概的原理是,服务器启动服务之后,测试机发起请求,然后服务器通过某一个约定好的端口将数据返回到测试机。
方法:
1、配置环境http:
//jmeter-plugins.org/downloads/all/网站下载, JMeterPlugins-Standard-1.1.3.zip 和 ServerAgent-2.2.1.zip
2、客户端配置:
Standard的zip包解压缩之后,将JMeterPlugins-Standard.jar放在XXX\Apache\jmeter\lib\ext下,重启jmeter就可以看到在线程组右键的监听器中可以看到增加了很多内容,在现有的项目中增加jp@gc-PerfMonMetricsCollector,作为监控服务器端的数据。
3、增加了jp@gc-PerfMonMetricsCollector之后,在其中AddRow,增加需要监控的数据信息,比如Cpu,Memory,Disks/IO,TCP等之类的信息,端口默认为4444,可以修改,但是需要确认的是来自服务器端是否4444已经被占用。
4、服务器端配置,解压缩ServerAgent.zip包,放到服务器上,以Ubuntu为例。
CD命令到该文件夹下,输入命令./XXXXXX/startAgent.sh。
注意,如果客户端配置的不是4444端口,则需要启动客户端设置的端口,命令为./startAgent.sh--udp-port0--tcp-portXxxx,当然Xxxx为设定好的端口号。
(将目前目录下的所有档案与子目录皆设为任何人可执行:
chmod-Ra+x*)
如果是Windows系统,双击startAgent.bat,即可,但是启动的是默认端口4444.
启动之后,可以看到成功和端口的信息。
如图,压力测试结果中来自服务器的性能图:
7.分布式测试
1.在所有期望运行JMeter作为LoadGenerator的机器上安装JMeter,并确定其中一台机器作为Controller,其他的机器作为Agent。
然后运行所有Agent机器上的JMeter-server.bat文件——假定我们使用两台机器192.168.0.1和192.168.0.2作为Agent;
2.在Controller机器的JMeter安装目录下找到bin目录,再找到JMeter.properties这个文件,使用记事本或者其他文字编辑工具打开它;
3.在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。
其中的127.0..0.1表示运行JMeterAgent的机器,这里需要修改为“remote_hosts=192.168.0.1:
1099,192.168.0.2:
1099”——其中的1099为JMeter的Controller和Agent之间进行通讯的默认RMI端口号;(端口号必须使用1099或2010)
4.有参数文件的时候,需要发到Agent与脚本文件相同的路径下,并关闭防火墙,并发数为Controller设置的数目*Agent数量
5.保存文件,并重新启动Controller机器上的JMeter.bat,并进入Run->RemoteStart菜单项
8.命令行运行
使用非GUI模式,即命令行模式运行JMeter测试脚本能够大大缩减所需要的系统资源。
使用命令
jmeter-n-t
-h帮助->打印出有用的信息并退出
-n非GUI模式->在非GUI模式下运行JMeter
-t测试文件->要运行的JMeter测试脚本文件
-l日志文件->记录结果的文件
-r远程执行->启动远程服务
-H代理主机->设置JMeter使用的代理主机
-P代理端口->设置JMeter使用的代理主机的端口号
实例:
D:
\apache-jmeter-2.13\bin>jmeter-n-tC:
\Users\lenovo\Desktop\ng\查询影院.jmx-
llog.jtl
JMeter默认去当前目录寻找脚本文件,并把日志记录在当前目录。
比如你在D:
\apache-jmeter-2.13\bin目录下执行以上命令,JMeter会去该目录下寻找查询影院.jmx脚本并把执行结果放在该目录。
如果你的脚本在其他目录,而且想要把执行结果放在另外文件夹,可以使用绝对路径告诉JMeter。
执行结果可以使用GUI模式下的聚合报告查看,比如你想要看addCustomerScript201411060954.jtl的报告,可以
打开JMeterGUI界面->测试计划->添加线程组->添加聚合报告->点击"所有数据写入一个文件"下的"浏览..."按钮找到你刚生成的jtl文件就可以对执行结果进行直观分析。
9.正则表达式提取器
把上一个请求的结果作为下一个请求的参数:
1、右击上一个请求->添加->后置处理器->正则表达式提取器,打开"正则表达式提取器"会话页面并编辑其内容如下
引用名称:
请求将要引用到的变量名
正则表达式:
提取你想要内容的正则表达式,小括号()表示提取,也就是说对于你想要提取的内容需要用它括起来,此处使用(.+?
)
():
组合,+?
:
重复,.:
任意匹配字符
模板:
使用提取到的第几个值。
因为可能有多个值匹配,所以要使用模板。
从1开始匹配,依次类推。
只有一个,所以填写$1$即可
匹配数字:
表示如何取值。
0代表随机取值,1代表全部取值。
这里只有一个,填1即可
缺省值表示参数没有取到值的话,默认给它的值。
一般不填
2、使用${anycall}把第一步提取到的参数放进去即可。
3、添加DebugSampler以对正则提取器进行调试
JMeterGUI视图中右击ThreadGroup打开其右键菜单->添加->Sampler->DebugSampler
4、添加察看结果树以监听观测执行情况
JMeterGUI视图中右击ThreadGroup打开其右键菜单->添加->监听器->察看结果树
10.优化JMeter自身性能
JMeter负载测试时使用GUI界面和较多的收集测试结果的监听器容易造成jmeter的性能瓶颈,远程测试时的控制台尤为明显。
提升JMeter负载测试时性能的方法如下:
官方的解决办法:
http:
//jakarta.apache.org/jmeter/usermanual/best-practices.html#lean_mean
1.使用无界面模式:
jmeter-n-ttest.jmx-ltest.jtl
2.尽可能少使用监听器,如果使用了可以在运行时使用-l参数
3.尽量把相似的取样器放在循环内,使用变量(CSVDataSet)修改这些Sampler,而不是重复添加Sampler。
或者可能会用到AccessLogSampler(在这里不能使用IncludeController,因为它会将指定文件中的所有测试元件直接添加到测试计划中来)。
4.不要使用函数测试模式(FunctionalMode)
5.以CSV格式输出测试结果,尽量不要使用XML格式
6.仅保存你需要的数据
7.尽可能少的使用断言
8.负载测试期间不要使用“查看结果树”“用表格查看结果”监听器,这两个监听器最好只在调试脚本时使用
9.如果测试需要大量数据(特别是随机产生的数据),可以提前准备好测试数据放到数据文件中,以CSVDataset方式读取,这样就能避免在测试运行阶段浪费资源
10.大并发量的负载测试,在尽量多台机器上运行多个非GUIJMeter实例
利用XSLT分析JMeter结果文件
将结果文件的扩展名改为xml,例:
将log.jtl改为log.xml。
在log.xml的文件头
xmlversion="1.0"encoding="UTF-8"?
>
中添加
xml-stylesheettype=“text/xsl”href=“jmeter-results-report.xsl”?
>
使之变成
xmlversion="1.0"encoding="UTF-8"?
>
xml-stylesheettype="text/xsl"href="jmeter-results-report.xsl"?
>
其中href指定xsl文件的路径,如果与xml文件在同一目录,则只写文件名即可,否则要写明详细路径。
将修改后的xml文件用浏览器打开即可得到统计结果
实例:
地址:
http:
//172.16.36.28:
8091/pay_test/pay.jsp
请求内容:
统一支付接口地址:
8458/pay.do
商户代码SH00000031
通信密钥n8xk1vpi1y0nvcwr4ip2ordgkl9r9oqv
支付模式01
银行编号UNION_WEB|U_WEB
后台地址:
http:
//172.16.36.28:
8090/pay_manager/system/login
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 性能 测试 工具 安装 使用