Jmeter五步实现性能测试
Jmeter除了是一款常用的接口测试工具,它其实更强大的功能是实现性能测试,今天用jmeter实现一个简单的性能测试案例,本次只涉及性能测试的执行,前期的测试需求分析,测试数据准备,以及测试结果的分析调优后续会更新相关文章。
首先,基本环境如下:
jdk:java环境
Jmeter:直接解压使用,本文使用apache-jmeter-5.1.1
运行:进入 apache-jmeter-5.1.1bin
目录,双击 jmeter.bat
需求:为了便于大家理解实践,采用访问百度首页的一个HTTP请求,并发20个用户,运行1分钟,查看TPS和响应时间变化。
第一步:添加线程组
启动软件之后,右击“测试计划”——“添加”——线程——线程组”,这样就建好了一个线程组了。
这是常规的添加线程组,缺点是线程数不能分批执行,怎么样可以实现像roadrunner那样梯度加压呢。
幸好Jmeter有着丰富的开源插件,百度搜索下载JMeterPlugins-Standard.jar,放入目录apache-jmeter-5.1.1libext下,就可以实现如下的梯度加压。
启动参数说明:
- This group will start 20 threads:设置线程组启动的线程总数为20个;
- First,wait for N seconds:启动第一个线程之前,需要等待N秒;(此次案例中可设置为0秒)
- Then start N threads:设置最开始时启动2个线程;
- Next,add 2 threads every 2 seconds, using ramp-up 0 seconds:每隔2秒,启动2个线程;
- Then hold load for 60 seconds:启动的线程总数达到最大值之后,再持续运行60秒;
- Finally,stop 5 threads every 1 seconds:每秒停止5个线程;
第二步:添加请求
按照如下顺序添加HTTP请求,线程组——添加——取样器Sampler——HTTP请求。
填写百度访问请求协议、URL、请求方法GET。
还可以对请求的响应进行断言,添加断言-响应断言,响应文本。
第三步:添加监听器
常规使用的监听器有察看结果树和聚合报告
添加顺序如下:
- 选择“添加”→“监听器”→察看结果树
- 选择“添加”→“监听器”→聚合报告
我们的目标是观察TPS和响应时间的变化,有没有什么图形化的工具呢。
开源插件很丰富,将插件jmeter-plugins-manager-1.3.jar放入目录apache-jmeter-5.1.1libext下。
添加如下两个监听器。
第四步:运行查看
点击工具栏运行按钮,开始执行测试,同时观察察看结果树是否有错误请求。
运行前需要保存脚本,并且需要将聚合报告的结果保存在一个.jtl文件中,如下:
运行完成:
聚合报告
TPS曲线
响应时间曲线
第五步:生成报告
JMeter3.0以后提供一个用于生成HTML页面格式图形化报告的扩展模块。该模块支持通过两种方式生成多维度图形化测试报告。
基本命令格式: jmeter-g<log file>-o<Pathto output folder>
如:jmeter-g C:UsersAdministratorDesktop访问百度.jtl-o D:JmeterReport
-g :specifies the existing result file 指定已存在的结果文件
-o:保存html报告的路径, 此文件夹必须为空或者不存在
`cmd`
`d:`
`cd:D:jmeterapache-jmeter-5.1.1apache-jmeter-5.1.1bin`
`jmeter -g C:UsersAdministratorDesktop访问百度.jtl -o D:JmeterReport
生成如下测试报告:
使用浏览器打开html文件:
报告中有丰富的图表数据,便于直观分析测试结果,大家可以自行探索下这个报告都有哪些功能吧。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- deepin linux 手动升级内核的方法
- UGL之单色位图
- Linux网络启动问题:Device does not seem to be present解决办法
- UGL之透明位图
- 关于ISR
- python 井字棋-文字版(下)
- Linux下nginx生成日志自动切割的实现方法
- Centos 7.2中双网卡绑定及相关问题踩坑记录
- Linux双网卡绑定实现负载均衡详解
- 单台服务器中利用Apache的VirtualHost如何搭建多个Web站点详解
- linux系统下MongoDB单节点安装教程
- Centos 7系统虚拟机桥接模式详解
- Centos 6中编译配置httpd2.4的多种方法详解
- linux的最大打开文件数限制修改方法
- Shell中如何删除文本比较长的行的实现方法