JMeter测试工具使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
录制脚本
Step 1 工作台添加一个HTTP代理服务器,用来录脚本 Step 2 添加一个察看结果树,用来观察脚本录制过程中产生的请求和响应数 据 Step 3 线程组里面加一个录制控制器,录的请求会放在录制控制器里 Step 4 浏览器的端口必须跟HTTP代理服务器设置的端口一样 Step 5 启动HTTP代理服务器,用浏览器打开要录的接口 过滤掉或直接删掉,例如.*\.gif
5.Assertions (unless SampleResult is null)
6.Listeners (unless SampleResult is null)
只有有sampler 的时候,Timers, Assertions, Pre- and PostProcessors才会被运行, Logic Controllers and Samplers 按它 们在树里的排列顺序执行
– 可链接的取样器允许无限制的测试能力。 – 各种负载统计表和可链接的计时器可供选择。 – 数据分析和可视化插件提供了很好的可扩展性以及个性化。 – 具有提供动态输入到测试的功能(包括JavaScript)。 – 支持脚本变成的取样器(在1.9.2及以上版本支持BeanShell)。
3
Jmeter安装配置
12
脚本编辑
• 定时器 Synchronizing Timer:等待到达一定数量的用户数
后才释放用户。 0表示等齐所有用户,10表示等齐10个用户
固定定时器:使每个thread在请求之间停顿相同的时 间。
13
脚本编辑
• 检查点 响应断言:为保证响应数据的准确性,检查响应的数据是否包含,匹配,等于某个样式字符
9
脚本编辑
• 参数化 用CSV Date Set Config参数化
每个线程的每个迭代用不同的值,线程调用这参数值的顺序是他们执行的顺序决定的。 Recycle on Eof=true,如果所有值被用完,就从头开始取, Recycle on Eof=false时,stopThread才起作用 Recycle on Eof=false,stopThread=false,当文件里面的所有的参数值被用完后,参数会被设为等于<EOF> Recycle on Eof=false,stopThread=true,当文件里面的所有的参数值被用完后,场景就会停下来 Delimiter 两列参数之间的分隔符,默认是逗号,也可以设置为其它值 Allow quote data CSV文件是否允许值被引号,如果是enabled,值可以被双引号括起来(只允许双引号,不允许单引号
www.vip.com
Jmeter基础培训
报告人:质量控制部 黄春 Judy Huang
目录
第一部分 Jmeter简介存拆库项目性 第二能部测分试 安装Jmeter 第三部分 Jmeter组件 第四部分 脚本的录制 第五部分 脚本加工存拆库项目性能
测试 第六部分 场景设置
第七部分 数据收集和展示
第八部分 远程测试
• 配置JDK • 从http://jmeter.apache.org/download_jmeter.cgi下载, 解压后运行bin目录下的
jmeter.bat
4
Jmeter组件
Thread Group: 场景的起始点,设置多少用户并发,什么时候开始跑,跑多久。 Controllers: 包括Samplers和Logical Controllers。 Samplers: 告诉Jmeter发请求和等待响应。 Logic Controllers: 组织发送请求的逻辑,例如什么情况下发请求,每个请求发多少次,多
数据收集和展示
Label:Sampler的名字 Samples:请求个数 Average:平均响应时间,单位毫秒 Median:中位数,也就是 50% 用户不大于这个 值,剩下的不小于这个值,单位毫秒 90% Line:90% 用户不大于这个值,剩下的不 小于这个值,单位毫秒 Min:最小响应时间,单位毫秒 Max:最大响应时间,单位毫秒 Error%:本次测试中出现错误的请求的数量/请 求的总数 Throughput:每秒完成的请求数 Kb/Sec:每秒从服务器端接收到的数据量, Kilobytes per second, 相当于LoadRunner中的 Throughput/Sec Avg. Bytes: 请求的响应数据的平均大小 Std.Dev: Standard Deviation, 所有响应时间标准 偏差,反映数据波动,越小越好
请求,如果它的父节点是Controller,那它应用于Controller下面所有的请求。
如图,Assertion #1应用于请求 One, Assertion #2应用于请求 Two,Three。
Timer#1应用于请求Two,Three,Four, Assertion #1应用于请求Three,Timer #2 应 用于所有请求。
串。
14
场景设置
• 可根据场景的要求选择controller • 用controller组织你的sampler 吞吐量控制器,控制用户执行频率
Total Executions 当达到一定数量使控制器停止场景运行 Percent executions 使控制器执行test plan设定的一定百分比 Per User 如果勾了,计算基于所有用户一起执行,如果不勾,计算基于单个用户
少百分比,顺序是怎么样的。 Listener: 收集测试用例运行信息,例如响应时间,请求和响应的详细信息。 Timers:请求之间的暂停。 Assertions: 验证服务器返回的信息是否正确。 Configuration Elements: 对samplers进行配置。 Pre-Processor: 运行在Sampler之前,多用于设置sampler,和更新从上一个响应获得的变量
17
察看结果树:以树的形式显示所有sampler的请求数据和响应数据,还可以看到接收响应数 据所花费的时间。由于使用它会消耗较多的资源,请只在调试和验证脚本时使用。
18
远程测试
1.节点(节点包括client和server, client是调度机,server是被调度机)最好用同一版本 jmeter,如果用了数据文件,数据文件不会被client传到server里,所以请保证数据文 件存在于所有的server的正确目录里。
11
脚本编辑
• HTTP Cookie 管理器
有些请求会被重定向多次,因为我们没有维护user session, session要读cookie,所以需要 加上cookie manager.
例如这个请求 http://weixin3.dev.vip.com/channel?page=1&menuId=1& 把HTTP Cookie Manager加到每 个Thread Group,可以每个thread 拥有自己的cookies, 但是每个 thread的所有Http请求会共享这个 cookie
事务控制器,用于统计嵌套在transaction controller里面的所有元素的值(响应时间,tps, 吞吐量等)
Generate Parent Sample,如果勾了,这个控制器生成为其它sampler的父节点,否则独立于其它sampler Include duration of timer and pre-post processors in generated sample , 如果勾了,Transaction Controller的
第九部分 NON GUI模式 第十部分 Jemter Plugins
JmeБайду номын сангаасer简介
• Jmeter是什么 Apache JMeter 是Apache组织的开放源代码项目,是一个100%纯Java桌面应用,用于压力测试和性能测量。它最初被设计用于Web 应用测试但后来扩展到其它测试领域。
• 我用它能做什么
• Jmeter能做什么 能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过JDBC)。 完全的可移植性和100%纯Java。 完全Swing的轻量级组件支持(预编译的JAR使用 javax.swing.*)包。 完全多线程框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样。 精心的GUI设计允许快速操作和更精确的计时。 缓存和离线分析/回放测试结果。 高可扩展性:
Apache JMeter可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,Java对象,数据库和查询,FTP服务器或是其它资源)的 性能进行测试。JMeter可以用于在服务器,网络或对象模拟繁重的负载来测试它们提供服务的受压能力或者分析不同压力条件下的总 体性能情况。你可以使用JMeter提供的图形化界面,分析性能指标或者在高负载情况下测试你的服务器/脚本/对象。
ramp-up period:Jmeter花多少时间去启动所有的线程。如果有10个线程, ramp-up period是100秒 ,每个线程在上一个线程启动10秒后才启动 当循环数达到循环次数,时间达到结束时间或持续时间,场景会停止运行。 启动延迟的优先级高于启动时间,持续时间的优先级高于结束时间
16
值。 Post-Processor: 运行在Sampler之后,多用于对响应数据的处理。
5
Jmeter组件
执行顺序:
0.Configuration elements
1.Pre-Processors
2.Timers
3.Sampler
4.Post-Processors (unless SampleResult is null)
) 如果想每个数据集有自己的数据,可以使sharing mode = current thread, 需要为每个线程建一个文件(如果没有,
那么这个线程将不被执行),例如 test1.csv, test2.csv,... testn.csv. 用这个文件名 test${__threadNum}.csv
8
脚本编辑
• 关联
从上一个请求拿出要关联的数据,用正则表达式去匹配,例如要匹配的是id“:145} }中的 145,可以写成id”:(.*?)}} 或 id“:(.+?)}} 或 id":(.*?)} .匹配任何字符 *匹配0次或多次 +匹配1交或多次 ?初次匹配成功后就停止 http://jmeter.apache.org/usermanual/regular_expressions.html有关于正则表达式写法的 描述。 模板:$1$表示第一组 匹配数字:1第一个匹配的,2第二个匹配的,0随机取
10
脚本编辑
• 参数化 用Jmeter自带的方法参数化 例如: ${_StringFromFile(/home/vipshop/Jenkins/workspace/benchmarktest_cart.api/userE dit.csv,userEditID,,)} ${__RandomString(9,chars,variableName)}
例子: 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 1 Post-Processor 2 Assertion 1
时间把timer和pre-post processors也计算在内,如果不勾,则不计算pre-post processors的时间
15
场景设置
• 线程组 线程组是设置计划的开始点,所有controller和sampler都必需在线程组下面,其它元素 可以直接放在test plan下面,用于同时应用于所有的线程组,例如listener。
Pre-Processor 1 Timer 1 Timer 2 Sampler 2 Post-Processor 1 Post-Processor 2 Assertion 1
6
Jmeter组件
作用域规则: Controllers的作用域是它的子元素 其它组件是按等级来的,例如, 一个Assertion,如果它的父节点是请求,那它应用于这个
相关文档
最新文档