- A+
1. Jmeter概述
1.1 Jmeter是什么
»Apache组织开发的基于Java的压力测试工具
»100%纯Java开发、完全的可移植性
»可以用于测试静态和动态资源
»多协议——http/ftp/socket/Java/数据库(JDBC)
»完全多线程,jmeter已线程的方式来用户的并发访问的
»高可扩展性
PS:在控制台打印输出:测试计划→线程组→sampler→beanshell sampler:system out.print(${var})
性能测试流程:
需求分析:熟悉这个项目是做什么的,用户在在程序上是如何操作的,哪些是重点,哪些是重要业务流程,这些就是需求分析需要做的事。了解完需求分析时候呢,我们进入的就是性能指标制定,比如说响应时间啊,吞吐量啊就是在这个环境定义的,为什么药定义这些指标呢,因为我们性能测试要有一个目标,因为一个软件啊,他总归有一个性能瓶颈,我们要定义他,假如满足一百个并发就OK了,前面我们了解了业务流程,也了解了性能指标,接下来需要做的就是脚本开发,可以自己写脚本,也可以利用工具,工具也有多种选择,看你对哪一种工具比较熟悉,如jmeter啊,loadrunner啊等等;脚本开发完毕之后,我们进入场景设置,脚本在开发完成之后啊,不能直接应用于性能测试,我们要有调试,有设置的过程,设置场景主要跟第一步需求分析关联,符合用户在软件上的使用流程,用户经常做哪些操作,我们就把这些操作作为性能测试的重点;场景设置完成后就监控部署,如服务器硬件,中间件,数据库等等,把他监控起来,只有监控起来才能发现他的运行状态,对后面的调优提供依据等等,监控一定要有,监控部署完成之后进入测试执行,第一阶段,基础测试,少量的用户跑一边,看有没有问题,先解决问题后进入正式的性能测试,性能执行完了后进入性能分析,结合之前的监控数据进行分析了,分析完之后就进入性能调优了,性能调优完成后就进入下一轮性能执行,这是一个循环的过程。
常见系统应用分层:
显示层(view):web、Android、IOS、H5
逻辑控制处(controller):API
数据存储层(model):MySQL、MongoDB、Redis
性能指标定义:
事务:从发起请求到收到从服务端返回的响应的一个闭环,一个事务可能包含多个请求
TPS(transaction per second):每秒钟系统能够处理的事务数
响应时间:从发起请求到收到从服务端返回的响应的一个闭环所花费的时间
并发:没有严格意义上的并发,并发总有先后,有时间差,可能是一毫秒,一微妙等,所以并发讲的是一个时间范围,比如一秒内
并发用户数:同一单位时间内对系统发起请求的用户数
吞吐量:一次性能测试过程中网络传输的数据量的总和
吞吐率:单位时间内网络上传的数据量
点击率:表示用户每秒向服务器发起的请求数,一次鼠标单击可能会发起多个请求,最佳或理想状态下随着用户数的增加而上升
资源使用率:如CPU,内存,网络等
性能测试需求分析:
明确测试指标:哪些是重点关注指标,指标定义是什么,把定义明确了,不要产生分歧,指标要求是什么
明确测试场景:紧跟业务挂钩,明确哪些是重点业务,指标评审,场景评审,用例评审
同行业比较、业务预期(跟产品、市场沟通)
性能测试工具对比:
1.2 JDK安装及版本对应
JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
JDK版本要求:
»JMeter2.x—最低jdk1.6
»JMeter3.0/3.1—最低jdk1.7
»JMeter3.2/3.3—最低jdk1.8
1.3 JMeter下载及安装n
JMeter下载地址:http://jmeter.apache.org/download_jmeter.cgi
系统要求:Java开发,可跨平台
Windows:apache-jmeter-xx.zip
Linux/Mac:apache-jmeter-xx.t
1.4 JDK环境变量配置n
1.4.1计算机右键→属性→高级系统设置→环境变量n
1.4.2新建变量JAVA_HOME,变 量 值 填 JDK 安 装 的 D:Javajdk1.7.0_76_x64n
1.4.3编辑Path变量,在末尾加%JAVAHOME%in;%JAVAHOME%jrein
1.4.4打开cmd输入javac验证是否配置成功
1.5 JMeter环境变量配置
1.5.1计算机右键→属性→高级系统设置→环境变量
1.5.2新建变量JMeter_HOME,变 量 值 填 JMeter 安 装 的 路 径 , 如D:apache-jmeter-3.3
1.5.3编辑Path变量,在末尾加%JMeter_HOME%in
1.5.4打开cmd输入jmeter --version验证是否安装成功
1.6 Jmeter目录介绍
/bin-可执行文件、配置文件
/bin/examples - CSV样例
/bin/report-template -报告模板
/bin/templates -脚本模板
/doc - Jmeter API文档
/extras -扩展插件目录,提供了对Ant的支持
/lib -插件目录,存放Jmeter所依赖的外部jar
/lib/ext - Jmeter依赖的核心jar包、插件包
/lib/junit - junit测试脚本
/Licenses– 许可证书
/Printable_docs -用户使用
1.7 Jmeter配置文件
»jmeter.bat
»jmeter.properti
1.8 Jmeter各大组件介绍
1.8.1 测试计划Testplan
»测试的起点
»其他所有组件的容器
»用来描述性能测试
»所有内容基于一个测试
1.8.2 取样器sampler
»真正干活的
»发送请求到服务器,并等待服务器的响应
»按照其在测试树中的顺序去执
»受逻辑控制器控制
»支持多种协议
»支持二次开发
1.8.3 逻辑控制器LogicController
»控制sampler发送请求的逻辑 、顺序
»控制sampler本身
»模拟复杂逻辑
常用:
ForEach控制器、如果(IF)控制器、循环控制器、随机控制器、事务控制器、吞吐量控制器
1.8.4 配置元件Config Element
»静态数据配置
»配置默认属性、信息
»不会向服务器发送任何请求
»仅对所在测试树分支有效
»放在sampler之前
一个例外!--用户自定义变量(User Defined Variables)此组件无论放在哪里,它定义的变量都会被整个线程所
1.8.5 定时器Timer
»设置请求间的时间间隔
»思考时间:定时器、随机定时器
»集合点:Synchronizing Time
1.8.6 前置/后置处理器
»前置处理器
发出请求(Request)前对即将发出的请求进行特殊处理如:Sample Timeout
»后置处理器
对采样器发出请求后得到的服务器响应(Response)进行处理如:正则表达式提
1.8.7 断言Assertions
»判断取样器是否正常工作
»判断请求响应是否正确
»判断结果是否符合预期
»相当于LR的检查点l
常用:jp@gc - JSON Path Assertion、响应断言、断言持续时间
1.8.8 监听器Listener
»收集整理测试结果
»将测试结果数据进行处理并展示
»生成XML、CSV等形式的文件供后续分析
常用:图形结果、察看结果树、聚合报告、用表格察看结果、保存响应到文件
1.8.9 组件执行顺序
»配置元件(Config Element)
»前置处理器(Pre Processors)
»定时器(Timer)
»取样器(sampler)
»后置处理器(Post Processors,只在有结果可用情况下执行)
»断言(Assertions,只在有结果可用情况下执行)
»监听器(Listener,只在有结果可用情况下执行)
1.8.10 组件作用域
靠测试计划的树型结构中元件的父子关系确定原则:
»采样器(sampler):元件不和其它元件相互作用,因此不存在作用域的问题
»逻辑控制器(Logic Controller):元件只对其子节点中的取样器和逻辑控制器作用
»除采样器和逻辑控制器元件外,其他6类元件,如果是某个sampler的子节点,则该元件只对其父子节点起作用
»除采样器和逻辑控制器元件外的其他6类元件,如果其父节点不是sampler ,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)
- 安卓客户端下载
- 微信扫一扫
- 微信公众号
- 微信公众号扫一扫