您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > JMeter测试工具使用
基础培训报告人:质量控制部黄春JudyHuang目录第一部分Jmeter简介存拆库项目性能测试第二部分安装Jmeter第四部分脚本的录制第五部分脚本加工存拆库项目性能测试第六部分场景设置第八部分远程测试第十部分JemterPlugins第七部分数据收集和展示第三部分Jmeter组件第九部分NONGUI模式3Jmeter简介•Jmeter是什么ApacheJMeter是Apache组织的开放源代码项目,是一个100%纯Java桌面应用,用于压力测试和性能测量。它最初被设计用于Web应用测试但后来扩展到其它测试领域。•我用它能做什么ApacheJMeter可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,Java对象,数据库和查询,FTP服务器或是其它资源)的性能进行测试。JMeter可以用于在服务器,网络或对象模拟繁重的负载来测试它们提供服务的受压能力或者分析不同压力条件下的总体性能情况。你可以使用JMeter提供的图形化界面,分析性能指标或者在高负载情况下测试你的服务器/脚本/对象。•Jmeter能做什么能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过JDBC)。完全的可移植性和100%纯Java。完全Swing的轻量级组件支持(预编译的JAR使用javax.swing.*)包。完全多线程框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样。精心的GUI设计允许快速操作和更精确的计时。缓存和离线分析/回放测试结果。高可扩展性:–可链接的取样器允许无限制的测试能力。–各种负载统计表和可链接的计时器可供选择。–数据分析和可视化插件提供了很好的可扩展性以及个性化。–具有提供动态输入到测试的功能(包括JavaScript)。–支持脚本变成的取样器(在1.9.2及以上版本支持BeanShell)。4Jmeter安装配置•配置JDK•从下载,解压后运行bin目录下的jmeter.bat5Jmeter组件ThreadGroup:场景的起始点,设置多少用户并发,什么时候开始跑,跑多久。Controllers:包括Samplers和LogicalControllers。Samplers:告诉Jmeter发请求和等待响应。LogicControllers:组织发送请求的逻辑,例如什么情况下发请求,每个请求发多少次,多少百分比,顺序是怎么样的。Listener:收集测试用例运行信息,例如响应时间,请求和响应的详细信息。Timers:请求之间的暂停。Assertions:验证服务器返回的信息是否正确。ConfigurationElements:对samplers进行配置。Pre-Processor:运行在Sampler之前,多用于设置sampler,和更新从上一个响应获得的变量值。Post-Processor:运行在Sampler之后,多用于对响应数据的处理。6Jmeter组件执行顺序:0.Configurationelements1.Pre-Processors2.Timers3.Sampler4.Post-Processors(unlessSampleResultisnull)5.Assertions(unlessSampleResultisnull)6.Listeners(unlessSampleResultisnull)只有有sampler的时候,Timers,Assertions,Pre-andPost-Processors才会被运行,LogicControllersandSamplers按它们在树里的排列顺序执行例子:ControllerPost-Processor1Sampler1Sampler2Timer1Assertion1Pre-Processor1Timer2Post-Processor2执行的顺序会是:Pre-Processor1Timer1Timer2Sampler1Post-Processor1Post-Processor2Assertion1Pre-Processor1Timer1Timer2Sampler2Post-Processor1Post-Processor2Assertion17Jmeter组件作用域规则:Controllers的作用域是它的子元素其它组件是按等级来的,例如,一个Assertion,如果它的父节点是请求,那它应用于这个请求,如果它的父节点是Controller,那它应用于Controller下面所有的请求。如图,Assertion#1应用于请求One,Assertion#2应用于请求Two,Three。Timer#1应用于请求Two,Three,Four,Assertion#1应用于请求Three,Timer#2应用于所有请求。8录制脚本Step1工作台添加一个HTTP代理服务器,用来录脚本Step2添加一个察看结果树,用来观察脚本录制过程中产生的请求和响应数据Step3线程组里面加一个录制控制器,录的请求会放在录制控制器里Step4浏览器的端口必须跟HTTP代理服务器设置的端口一样Step5启动HTTP代理服务器,用浏览器打开要录的接口过滤掉或直接删掉,例如.*\.gif9脚本编辑•关联从上一个请求拿出要关联的数据,用正则表达式去匹配,例如要匹配的是id“:145}}中的145,可以写成id”:(.*?)}}或id“:(.+?)}}或id:(.*?)}.匹配任何字符*匹配0次或多次+匹配1交或多次?初次匹配成功后就停止有关于正则表达式写法的描述。模板:$1$表示第一组匹配数字:1第一个匹配的,2第二个匹配的,0随机取10脚本编辑•参数化用CSVDateSetConfig参数化每个线程的每个迭代用不同的值,线程调用这参数值的顺序是他们执行的顺序决定的。RecycleonEof=true,如果所有值被用完,就从头开始取,RecycleonEof=false时,stopThread才起作用RecycleonEof=false,stopThread=false,当文件里面的所有的参数值被用完后,参数会被设为等于EOFRecycleonEof=false,stopThread=true,当文件里面的所有的参数值被用完后,场景就会停下来Delimiter两列参数之间的分隔符,默认是逗号,也可以设置为其它值AllowquotedataCSV文件是否允许值被引号,如果是enabled,值可以被双引号括起来(只允许双引号,不允许单引号)如果想每个数据集有自己的数据,可以使sharingmode=currentthread,需要为每个线程建一个文件(如果没有,那么这个线程将不被执行),例如test1.csv,test2.csv,...testn.csv.用这个文件名test${__threadNum}.csv11脚本编辑•参数化用Jmeter自带的方法参数化例如:${_StringFromFile(/home/vipshop/Jenkins/workspace/benchmarktest_cart.api/userEdit.csv,userEditID,,)}${__RandomString(9,chars,variableName)}12脚本编辑•HTTPCookie管理器有些请求会被重定向多次,因为我们没有维护usersession,session要读cookie,所以需要加上cookiemanager.例如这个请求=1&menuId=1&把HTTPCookieManager加到每个ThreadGroup,可以每个thread拥有自己的cookies,但是每个thread的所有Http请求会共享这个cookie13脚本编辑•定时器SynchronizingTimer:等待到达一定数量的用户数后才释放用户。0表示等齐所有用户,10表示等齐10个用户固定定时器:使每个thread在请求之间停顿相同的时间。14脚本编辑•检查点响应断言:为保证响应数据的准确性,检查响应的数据是否包含,匹配,等于某个样式字符串。15场景设置•可根据场景的要求选择controller•用controller组织你的sampler吞吐量控制器,控制用户执行频率TotalExecutions当达到一定数量使控制器停止场景运行Percentexecutions使控制器执行testplan设定的一定百分比PerUser如果勾了,计算基于所有用户一起执行,如果不勾,计算基于单个用户事务控制器,用于统计嵌套在transactioncontroller里面的所有元素的值(响应时间,tps,吞吐量等)GenerateParentSample,如果勾了,这个控制器生成为其它sampler的父节点,否则独立于其它samplerIncludedurationoftimerandpre-postprocessorsingeneratedsample,如果勾了,TransactionController的时间把timer和pre-postprocessors也计算在内,如果不勾,则不计算pre-postprocessors的时间16场景设置•线程组线程组是设置计划的开始点,所有controller和sampler都必需在线程组下面,其它元素可以直接放在testplan下面,用于同时应用于所有的线程组,例如listener。ramp-upperiod:Jmeter花多少时间去启动所有的线程。如果有10个线程,ramp-upperiod是100秒,每个线程在上一个线程启动10秒后才启动当循环数达到循环次数,时间达到结束时间或持续时间,场景会停止运行。启动延迟的优先级高于启动时间,持续时间的优先级高于结束时间17数据收集和展示Label:Sampler的名字Samples:请求个数Average:平均响应时间,单位毫秒Median:中位数,也就是50%用户不大于这个值,剩下的不小于这个值,单位毫秒90%Line:90%用户不大于这个值,剩下的不小于这个值,单位毫秒Min:最小响应时间,单位毫秒Max:最大响应时间,单位毫秒Error%:本次测试中出现错误的请求的数量/请求的总数Throughput:每秒完成的请求数Kb/Sec:每秒从服务器端接收到的数据量,Kilobytespersecond,相当于LoadRunner中的Throughput/SecAvg.Bytes:请求的响应数据的平均大小Std.Dev:StandardDeviation,所有响应时间标准偏差,反映数据波动,越小越好18察看结果树:以树的形式显示所有sampler的请求数据和响应数据,还可以看到接收响应数据所花费的时间。由于使用它会消耗较多的资源,请只在调试和验证脚本时使用。19远程测试1.节点(节点包括client和server,client是调度机,server是被调度机)最好用同一版本jmeter,如果用了数据文件,数据文件不会被client传到server里,所以请保证数据文件存在于所有的server的正确目录里。2.防火墙要关掉3.所有节点要在同一个子网4.一台client启动多台server20远程测试5.在server上跑JMETER_HOME/bin/jmeter-server.bat6.在/bin/jmeter.properties里修改remote_hosts属性,可设置多个host,用逗号隔开,例如remote_hosts=127.0.0.1,192.168.200.2821NONGUI模式NonGUI比GUI节省资源,并有更高的稳定性步骤:1.进入jmeter的bin目
本文标题:JMeter测试工具使用
链接地址:https://www.777doc.com/doc-3778381 .html