软件研究之JMeter
1.前言
最近在做浙政钉上架,里面有一项内容就是要上传 PTS 压测报告,但是 阿里云的 PTS 需要费用,只能寻找免费的了,毕竟项目本身就没有多少钱。找来找去,找到了 JMeter 这个工具。
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
2.安装
安装JDK之后,然后找到 JMeter 下载后,解药在windows上直接双击 jmeter.bat 运行即可。如果是在 macos 上,那就是直接用命令行 运行 jmeter.sh。
【1】.Apache JMeter 入门教程**
3.使用
使用起来也非常的简单。
3.1.添加线程组
右键点击 “测试计划” → “添加” → “线程(用户)” → “线程组”。详细参数:
线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。模拟多少用户访问也就填写多少个线程数量。
Ramp-Up时间(秒):设置的虚拟用户数需要多长时间全部启动。如果线程数为100,准备时长为5,那么需要5秒钟启动100个线程,也就是每秒钟启动20个线程。 相当于每秒模拟20个用户进行访问,设置为零我理解为并发访问。
循环次数:如果线程数为100,循环次数为100。那么总请求数为100*100=10000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。
3.2.添加测试接口
右键点击 “你的线程组” → “添加” → “取样器” → “HTTP请求”。 详细参数:
协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP。
服务器名称或IP :HTTP请求发送的目标服务器名称或IP。
端口号:目标服务器的端口号,默认值为80
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
路径:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分)。
内容编码:编码方式,默认为ISO-8859-1编码,这里配置为utf-8。
参数:同请求一起发送参数 ,在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 key=value),注意参数传入中文时需要勾选“编码”。
3.3.添加观察结果树
右键点击 “你的线程组” → “添加” → “监听器” → “察看结果树”
3.4.添加聚合报告。
右键点击 “你的线程组” → “添加” → “监听器” → “聚合报告”,用以存放性能测试报告。详细参数:
Label:每个 JMeter 的 element(例如我这里只有一个 Spring WebFlux)都有一个 Name 属性,这里显示的就是 Name 属性的值。
样本(Samples):请求数——表示这次测试中一共发出了多少个请求,我这里模拟了100个用户循环6次也就为100*6=600。
平均值(Average):平均响应时间(单位:ms)。默认是单个Request的平均响应时间,当使用了Transaction Controller时,也可以是Transaction为单位显示平均响应时间。
中位数(Median):也就是 50% 用户的响应时间。
90% 百分位(Line):90% 用户的响应时间。相邻几个*%同意。
最小值(Min):最小响应时间。
最大值(Max):最大响应时间。
异常(Error) %:错误率——错误请求数/请求总数。
吞吐量(Throughput):吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数 。
接收 KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec。
发送 KB/Sec:每秒向服务器发送的数据量,相当于LoadRunner中的Throughput/Sec。
4.导出测试报告
下面是一个示例,在windows下执行。导出的是一个html 页面,可以打开之后,另存为 pdf 报告。
1 | ## 进入到 jmeter 目录 |
【1】.使用JMeter导出测试报告的两种方法 1.命令行导出测试报告;2.JMeter生成;
【2】.jmeter压测并导出报告 保存报告为html
【3】.Jmeter测试报告显示错误信息、URL等信息
【4】.jmter生成的报告没有显示请求和响应明细数据 修改bin目录下的user.properties文件,追加配置,修改bin 目录下的jmeter.properties.
5.日志查看与分析
【1】.性能测试 —— Jmeter日志查看与分析
5.问题
(1) Error in NonGUIDriver com.thoughtworks.xstream.io.StreamException: An error occurred: Error in NonGUIDriver
我是在 mac 上执行的,执行了测试之后,然后导出测试结果,结果就报错了。
【解决方案】
重新保存测试脚本,然后进行测试报告输出。
【1】.Error in NonGUIDriver com.thoughtworks.xstream.io.StreamException: An error occurred: Error in NonGUIDrive 将测试脚本重新保存,然后将脚本放到服务器执行即可