一.jmeter基本使用
1.元件执行顺序
配置元件;
前置处理器;
定时器;
sampler;
后置处理器;(关联,正则表达式提取器)
断言;
监听;(不涉及顺序)
逻辑控制器自成单元(可添加多个逻辑,在单元中自成顺序)
举例:
HTTP Cookie 管理器 需要登录、验证的时候(如网站发帖前需要先登录)
HTTP Cache Manager 缓存图片、cache信息
HTTP信息头管理器 共同的信息头
HTTP请求默认值 甚至共同的默认值,在sample的http请求中可以不再录入
用户参数
简单控制器(逻辑控制器)
固定定时器
JAVA请求(http请求)
2.参数化方式
1、函数助手;
选项--函数助手,对应每列生成函数;在HTTP请求数据参数列中复制名称对应的值的函数。多种随机函数可用
2、配置元件-CSV Data Set Config(参数化数据文件另存为utf-8)添加-配置元件-CSV Data Set Config
3、配置元件:用户自定义变量
4、用户参数
5、从数据库中获取:配置元件-JDBC Connection Configuration:连接后添加JDBCRequest,在SQL Query中输入查询语句,查询结果作为参数使用
Jmeter 中想用到连接数据库的功能,必须下载jar包,一般保存在对应Jmeter的lib下的扩展目录。下载后把jar包添加到jmeter中
3.关联参数
用一个请求的响应结果作为另一个请求的入参时需要用到关联
1.在请求A下新建JSON提取器,提取响应数据,应用到B。提取值:$.key[].value
2.用正则表达式关联,在需要被提取响应数据的请求下添加正则表达式提取器,右击添加->后置处理器->正则表达式提取器;
一般可用Debug PostProcessor 调试,查看获取的变量值
正则表达式,最简单的办法是在响应数据中把要提取的目标值左右若干字符包含目标值的一行拷贝出来,粘贴到正则表达式框内,在把目标值用一对小括号替换,括号里用添上合适的匹配符本例如(.*);
注意在响应数据中拷贝时尽量避开需要转义的字符如果不能避开,请转义;模板通常固定填$1$;匹配数字1代表区匹配的第一个值;缺省值是在匹配失败时取得的值,通常用来检查匹配是否成功;
4.请求需要http权限验证
当某些请求需要authorization授权时使用。实际效果就是在请求头中加了Authorization,直接在HTTP信息头管理器中设置也能达到登录的效果
添加授权管理器,右击线程组->添加->配置元件->HTTP授权管理器;打开HTTP授权管理器,在基础URL添加路径;填写用户名、密码;添加域即请求的服务器域名或IP;其他默认;
5.断言
选中http请求sample.右键添加,选择"断言"->"响应断言"。添加断言后、增加一个断言结果监 听器就可以看到断言的结果
6.集合点
定时器---->Synchronizing Timer
a. 集结的group用户数量一定要比线程组的数量小。
b. 集结的用户数和线程组并发用户数的关系。例如线程组设定的用户是50, 集结点设置的用户组数量是25, 那么当集结了25个用户后,就会立即开始测试。 当集结了下一组25个用户后,会立即开始这25个用户的测试。
JMeter能干嘛
1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。
2.完全的可移植性和100% 纯java。
3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。
4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
5.精心的GUI设计允许快速操作和更精确的计时。
6.缓存和离线分析/回放测试结果。
二.性能测试
1.安装第三方插件jmeter-plugins.org
下载地址:jmeter-plugins.org
下载后的jar文件放入jmeter安装目录下的lib/ext中,重启jmeter。
启动jemter,点击选项,最下面的一栏,进入。搜索 jpgc - Standard Set,选中后点击Apply Changes and Reatart JMeter,重启后可以看到安装了线程组插件和监听器插件:
2.性能测试指标
1).TPS、响应时间、CPU、memory、I/O
1.TPS(Transaction Per Second)
每秒事务数,通常指每秒成功的事务数,代表着服务器的处理能力,监控服务器TPS的表现如整体趋势、实时平均值走向、稳定性等,是性能测试中最重要的指标之一。一个事务是一个业务度量单位,有时一个事务会包括多个子操作,为了统计方便,会把着多个子操作记为一个事务。TPS,执行一次事务(包括请求、请求服务器、等待服务器返回等等,比如一个TPS事务,可能触发3个QPS请求)
2.TRT(Response Times Over Time)
事务响应时间,性能测试重要的另一个指标,在测试脚本执行过程中,监控查看响应时间的实时平均值、整体响应时间走向等
QPS、TPS、吞吐量区别:
性能测试中的QPS、TPS、吞吐量,此处以一个业务举例。
业务:一个登陆的功能,主要页面为登陆页面、登陆成功后跳转页面success.html。整个事务的主要资源有登陆接口(api)、success页面的样式css.css,加载的js脚本script.js。
整个事务流程:发起请求-后端接口处理请球-返回到前端页面并请求加载前端资源
a、TPS
TPS(Transactions Per Second ),字面意思即每秒处理事务数,本例中, 发起登录请求-后端处理请求-返回前端页面就是一整个事务,如果一秒钟能处理N个这样的流程,那么TPS就是N/S。
b、QPS
QPS(Queries Per Second),字面意思即每秒查询数,本例中。如果我们请求的资源只有单个接口,那么QPS=TPS。但是在业务中,除了接口还有其它页面资源信息。一次请求包括css.css,script.js以及api,向服务器发起了3次请求,那么QPS=3。可以理解为QPS是每秒钟发起请求的数量。
访问问一个页面会请求服务器3次,一次访问产生一个“T”,产生3个“Q”
c、吞吐量
一个系统的吞度量(承压能力)与request对CPU的消耗、外部介面、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统介面、IO影响速度越慢,系统吞吐能力越低,反之越高。也就是说吞吐量一般要根据实际情况看与什么指标关联性更大来判断系统的承受能力
2).监听器
1.PerfMon Metrics Collector
PerfMon Metrics Collector,即服务器性能监控数据采集器,比如CPU、memory、I/O等,分为客户端和服务端。
PerfMon Metrics Collector使用
被测服务器配置:
1.下载ServerAgent-2.2.3包
2.上传至linux服务器 解压压缩文件 unzip ServerAgent-2.2.3
3.进入ServerAgent-2.2.3目录下,启动 ./startAgent.sh 文件
4.cmd进入命令行,有消息表示ServerAgent启动成功
客户端
监听器中加入PerfMon Metrics Collector,配置,ip为服务器IP
① cpu:代表使用率的百分比
②内存:代表使用率的百分比
③磁盘io:代表磁盘的读写速度,单位Mb/s
④网络io:网络的速度,单位kbps
3.特殊的线程组
1.Stepping Thread Group
当测试需求是要求逐渐增加负载型的压力测试场景时,使用该线程组,例如:测试场景共有30个线程,每5秒增加2个线程,持续运行60秒,最后每5秒停止2个线程
2.Ulitimate Thread Group
1.当测试需求是要求进行阶梯型的压力测试场景时,使用该线程组。例如:测试场景总共有30个线程,然后分为三次逐渐增加负载,每次增加负载10个线程,运行一定时间后,逐步停止
备注:这里是设置了三个线程计划,每个线程计划并发10个线程,实际上是最高30个线程同时执行
2.当测试需求是要求进行波浪型的压力测试场景时,使用该线程组,
例如:测试场景总共有10个线程,然后分为三个波段进行测试,每个波段负载策略设置为一样
备注:这里是设置了三个线程计划,每个线程计划并发10个,是在时间轴上按顺序执行的,因此场景最高并发用户是10个,而非30个并发用户。
举例:双十一买物品,0点后开始疯狂抢购(第一批用户),可能有一部分人5分钟后才进入,这个就是第二批用户,此时第一批和第二批会存在同时请求的情况。
4.性能测试报告
1.聚合报告
2.生成html测试报告
a.脚本执行前,新建一个csv存放执行结果文件
执行 完成后,查看文件中已存入执行结果
b.生成html报告
生成html的内容
打开html文件可查看测试报告,发送给其他人查看时,需要把生成的内容全部发送。