JMeter测试工具使用_第1页
JMeter测试工具使用_第2页
JMeter测试工具使用_第3页
JMeter测试工具使用_第4页
JMeter测试工具使用_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JmeterJmeter基础培训基础培训报告人:质量控制部 黄春 Judy Huang目录第一部分 Jmeter简介存拆库项目性能测试第二部分 安装Jmeter第四部分 脚本的录制第五部分 脚本加工存拆库项目性能测试第六部分 场景设置第八部分 远程测试第十部分 Jemter Plugins第七部分 数据收集和展示第三部分 Jmeter组件第九部分 NON GUI模式3Jmeter简介Jmeter是什么Apache JMeter 是Apache组织的开放源代码项目,是一个100%纯Java桌面应用,用于压力测试和性能测量。它最初被设计用于Web应用测试但后来扩展到其它测试领域。我用它能做什么Ap

2、ache JMeter可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,Java对象,数据库和查询,FTP服务器或是其它资源)的性能进行测试。JMeter可以用于在服务器,网络或对象模拟繁重的负载来测试它们提供服务的受压能力或者分析不同压力条件下的总体性能情况。你可以使用JMeter提供的图形化界面,分析性能指标或者在高负载情况下测试你的服务器/脚本/对象。Jmeter能做什么能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过JDBC)。完全的可移植性和100%纯Java。完全Swing的轻量级组件支持(预编译的JAR使用 javax.swi

3、ng.*)包。完全多线程框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样。精心的GUI设计允许快速操作和更精确的计时。缓存和离线分析/回放测试结果。高可扩展性:可链接的取样器允许无限制的测试能力。各种负载统计表和可链接的计时器可供选择。数据分析和可视化插件提供了很好的可扩展性以及个性化。具有提供动态输入到测试的功能(包括JavaScript)。支持脚本变成的取样器(在1.9.2及以上版本支持BeanShell)。4Jmeter安装配置配置JDK从/download_jmeter.cgi下载, 解压后运行bin目录下的jmeter.

4、bat5Jmeter组件Thread Group: 场景的起始点,设置多少用户并发,什么时候开始跑,跑多久。Controllers: 包括Samplers和Logical Controllers。Samplers: 告诉Jmeter发请求和等待响应。Logic Controllers: 组织发送请求的逻辑,例如什么情况下发请求,每个请求发多少次,多少百分比,顺序是怎么样的。Listener: 收集测试用例运行信息,例如响应时间,请求和响应的详细信息。Timers:请求之间的暂停。Assertions: 验证服务器返回的信息是否正确。Configuration Elements: 对sample

5、rs进行配置。Pre-Processor: 运行在Sampler之前,多用于设置sampler,和更新从上一个响应获得的变量值。Post-Processor: 运行在Sampler之后,多用于对响应数据的处理。6Jmeter组件执行顺序:0.Configuration elements 1.Pre-Processors 2.Timers 3.Sampler 4.Post-Processors (unless SampleResult is null) 5.Assertions (unless SampleResult is null) 6.Listeners (unless SampleRes

6、ult is null) 只有有sampler 的时候,Timers, Assertions, Pre- and Post-Processors才会被运行, Logic Controllers and Samplers 按它们在树里的排列顺序执行例子:Controller Post-Processor 1 Sampler 1 Sampler 2 Timer 1 Assertion 1 Pre-Processor 1 Timer 2 Post-Processor 2执行的顺序会是: Pre-Processor 1 Timer 1 Timer 2 Sampler 1 Post-Processor

7、1 Post-Processor 2 Assertion 1 Pre-Processor 1 Timer 1 Timer 2 Sampler 2 Post-Processor 1 Post-Processor 2 Assertion 1 7Jmeter组件作用域规则:Controllers的作用域是它的子元素其它组件是按等级来的,例如, 一个Assertion,如果它的父节点是请求,那它应用于这个请求,如果它的父节点是Controller,那它应用于Controller下面所有的请求。如图,Assertion #1应用于请求One, Assertion #2应用于请求Two,Three。Tim

8、er#1应用于请求Two,Three,Four, Assertion #1应用于请求Three,Timer #2 应用于所有请求。8录制脚本 Step 1 工作台添加一个HTTP代理服务器,用来录脚本 Step 2 添加一个察看结果树,用来观察脚本录制过程中产生的请求和响应数据 Step 3 线程组里面加一个录制控制器,录的请求会放在录制控制器里 Step 4 浏览器的端口必须跟HTTP代理服务器设置的端口一样 Step 5 启动HTTP代理服务器,用浏览器打开要录的接口 过滤掉或直接删掉,例如.*.gif9脚本编辑关联从上一个请求拿出要关联的数据,用正则表达式去匹配,例如要匹配的是id“:1

9、45 中的145,可以写成id”:(.*?) 或 id“:(.+?) 或 id:(.*?).匹配任何字符*匹配0次或多次+匹配1交或多次?初次匹配成功后就停止/usermanual/regular_expressions.html有关于正则表达式写法的描述。模板:$1$表示第一组匹配数字:1第一个匹配的,2第二个匹配的,0随机取10脚本编辑参数化用CSV Date Set Config参数化每个线程的每个迭代用不同的值,线程调用这参数值的顺序是他们执行的顺序决定的。Recycle on Eof=true,如果所有值被用完,就从头开始取, Recyc

10、le on Eof=false时,stopThread才起作用Recycle on Eof=false,stopThread=false,当文件里面的所有的参数值被用完后,参数会被设为等于Recycle on Eof=false,stopThread=true,当文件里面的所有的参数值被用完后,场景就会停下来Delimiter 两列参数之间的分隔符,默认是逗号,也可以设置为其它值Allow quote data CSV文件是否允许值被引号,如果是enabled,值可以被双引号括起来(只允许双引号,不允许单引号)如果想每个数据集有自己的数据,可以使sharing mode = current t

11、hread, 需要为每个线程建一个文件(如果没有,那么这个线程将不被执行),例如 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脚本编辑HTTP Cookie 管理器有些请求会被重定向多次,因为我们没有

12、维护user session, session要读cookie,所以需要加上cookie manager.例如这个请求http:/ Cookie Manager加到每个Thread Group,可以每个thread拥有自己的cookies, 但是每个thread的所有Http请求会共享这个cookie13脚本编辑定时器Synchronizing Timer:等待到达一定数量的用户数后才释放用户。0表示等齐所有用户,10表示等齐10个用户固定定时器:使每个thread在请求之间停顿相同的时间。14脚本编辑检查点响应断言:为保证响应数据的准确性,检查响应的数据是否包含,匹配,等于某个样式字符串。1

13、5场景设置可根据场景的要求选择controller用controller组织你的sampler吞吐量控制器,控制用户执行频率Total Executions 当达到一定数量使控制器停止场景运行Percent executions 使控制器执行test plan设定的一定百分比Per User 如果勾了,计算基于所有用户一起执行,如果不勾,计算基于单个用户事务控制器,用于统计嵌套在transaction controller里面的所有元素的值(响应时间,tps, 吞吐量等)Generate Parent Sample,如果勾了,这个控制器生成为其它sampler的父节点,否则独立于其它sampl

14、erInclude duration of timer and pre-post processors in generated sample , 如果勾了,Transaction Controller的时间把timer和pre-post processors也计算在内,如果不勾,则不计算pre-post processors的时间16场景设置线程组线程组是设置计划的开始点,所有controller和sampler都必需在线程组下面,其它元素可以直接放在test plan下面,用于同时应用于所有的线程组,例如listener。ramp-up period:Jmeter花多少时间去启动所有的线程

15、。如果有10个线程, ramp-up period是100秒,每个线程在上一个线程启动10秒后才启动当循环数达到循环次数,时间达到结束时间或持续时间,场景会停止运行。启动延迟的优先级高于启动时间,持续时间的优先级高于结束时间17数据收集和展示Label:Sampler的名字Samples:请求个数Average:平均响应时间,单位毫秒Median:中位数,也就是 50 用户不大于这个值,剩下的不小于这个值,单位毫秒90% Line:90 用户不大于这个值,剩下的不小于这个值,单位毫秒Min:最小响应时间,单位毫秒Max:最大响应时间,单位毫秒Error%:本次测试中出现错误的请求的数量/请求的

16、总数Throughput:每秒完成的请求数Kb/Sec:每秒从服务器端接收到的数据量,Kilobytes per second, 相当于LoadRunner中的Throughput/SecAvg. Bytes: 请求的响应数据的平均大小Std.Dev: Standard Deviation, 所有响应时间标准偏差,反映数据波动,越小越好 18察看结果树:以树的形式显示所有sampler的请求数据和响应数据,还可以看到接收响应数据所花费的时间。由于使用它会消耗较多的资源,请只在调试和验证脚本时使用。19远程测试1.节点(节点包括client和server, client是调度机,server是被

17、调度机)最好用同一版本jmeter,如果用了数据文件,数据文件不会被client传到server里,所以请保证数据文件存在于所有的server的正确目录里。2.防火墙要关掉3.所有节点要在同一个子网4.一台client启动多台server20远程测试5. 在server上跑JMETER_HOME/bin/jmeter-server.bat6. 在/bin/perties里修改remote_hosts属性,可设置多个host,用逗号隔开,例如remote_hosts=,821NON GUI模式Non GUI比GUI节省资源,并有更高

18、的稳定性步骤:1. 进入jmeter的bin目录2. 运行jmeter -n -t E:jmetertrainingexample.jmx -l E:jmetertrainingresult.jtl或jmeter -n -t E:jmetertrainingexample.jmx -l E:jmetertrainingresult.jtl -Jthreads 5 -Jiterations 4-n 这是指定JMeter在非用户界面模式运行-t 包含测试计划的JMX文件的名字:example.jmx-Jthreads 并发用户数:5个-Jiterations 循环次数:4次-l 记录取样结果的JTL文件的名字:resut.jtl22Non GUI远程测试jmeter -n -t D:paramexample.jmx -l D:paramresult.jtl -R ,4-R指定远程的server, 可以不用在perities里配remote_hosts。相对路径时,参数的csv要放在jme

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论