鼠年全马铁人挑战 WEEK 29:负载性能测试 - JMeter (上)

         Photo on Hashedin by Sripathi Krishnan


前言

上週介绍了 Apache Bench 的性能测试工具
透过 ab 的指令来轻鬆快速地进行测试
而这週所要介绍的也与 Apache 有关
那就是 Apache 开发的另一个开源测试工具 Apache JMeter

Apache JMeter 是一种较常听到的开源测试工具
而其测试又以负载测试和性能测试为主要功能
透过 JMeter 可以分析和衡量应用程式或其他服务的性能
针对多个併发的用户流量测试应用程式


介绍 JMeter

Open Source:免费的 JMeter 允许开发人员使用源代码进行开发
友善的 GUI:易于使用的 JMeter 图形化使用者介面
多线程框架:通过单线程同时併发达成多线程
可视化报告:支援多种显示格式的测试结果
快速安装:容易安装,快速启用
支持多协议:包括 HTTP, JDBC, LDAP, SOAP, JMS 和 FTP
脚本测试:可以藉由 Bean Shell 和 Selenium 进行自动化测试

安装 JMeter

安装 Java Developer Kit (JDK)

因为 JMeter 是由 Java 写成的
所以必须先行安装 Java Developer Kit
JDK 的版本至少要 8 以上
可以透过指令 $ java -version 来查看 java 版本

Java SE-下载|Oracle技术网|甲骨文
可以依照自己的作业系统,安装想要的版本
小弟是直接装最新版的 Java SE 14

安装 JMeter

前往 JMeter 的官方网站进行安装
Apache JMeter - Download Apache JMeter

下载完成后点选档案将其解压缩
就完成安装啰~ (就是这么的简单)

快速使用 JMeter

接着透过指令来开启 JMeter 的 GUI 介面
$ cd apache-jmeter-<version>/bin && sh jmeter

完成开启后 就可以轻鬆的透过 GUI 介面来操作设定了~
而以下所以快速使用的测试案例是:在 Google 搜寻文章

新增 Thread Group

对左侧预设的 Test Plan 按右键 接着依序选择
Add > Threads(Users) > Thread Group

编辑 Thread Group 设定

Number of Threads (users):执行绪数量,相当于使用者数量
Ramp-up period (seconds):该时间内启动完所有的执行绪
Loop Count:上述两样的设定值,执行的重複次数

新增 Http Request

对左侧的 Thread Group 按右键 接着依序选择
Add > Sampler > HTTP Request

编辑 Http Request 设定

依照所要执行的内容进行填写
Protocol [http]:通讯协定 以 http 与 https 较为常见
Server Name or IP:主机名称或 IP 位置
HTTP Method:可以透过下拉式选单来选择所用的 method
Path:路径

新增 Results Tree 报告

对左侧的 Thread Group 按右键 接着依序选择
Add > Listener > View Results Tree

新增 Aggregate Report 报告

对左侧的 Thread Group 按右键 接着依序选择
Add > Listener > Aggregate Report

执行测试

点击上方工具列的绿色 Star 按钮 执行 Test Plan

查看测试结果

点击 View Results Tree 查看报告

中间下方的部分 出现了 10 笔 HTTP Request (也就是刚刚所设定的笔数)
任意点击其中一笔 Request 可在右方的区块中查看回传结果的内容
藉此确认回传内容为测试的预期结果

点击 Aggregate Report 查看报告

右方的部分 出现了测试结果的彙整数据
Samples:发送请求笔数 (10笔)
Average:平均回应时间 (1120ms)
Median:回应时间的中间值 (830ms)
90% Line:百分之 90 的最高回应时间 (2127ms)
95% Line:百分之 95 的最高回应时间 (2127ms)
99% Line:百分之 99 的最高回应时间 (2575ms)
Min:回应时间的最小值 (322ms)
Maximum:回应时间的最大值 (2575ms)
Error %:执行的错误率 (0.00%)
Throughput:吞吐量 (2.7/sec)
Received KB/sec:下载速率 (718.29)
Sent KB/sec:上传速率 (1.05)

产生 Report

透过指令执行 GUI 所设置完的 jmx 档案
也就是刚刚所存的 <scriptName>.jmx
$ sh jmeter -n -t <scriptName>.jmx -l <resultName>.jtl -e -o /<folderName>

-n:以非 GUI 的方式执行 JMeter,也就是以 CLI 进行操作
-t:执行测试脚本的路径,副档名为 .jmx (testScript.jmx)
-l:记录测试结果的档案路径与名字,副档名为 .jtl (testResult.jtl)
-e:测试脚本执行完后产生 html 报告
-o:测试脚本 html 报告的资料夹,资料夹必须不存在 (ReportFolder)

当执行过一次 如果在执行一次 将会跳错误提示
错误的错误原因是因为 资料夹已存在
An error occurred: Cannot write to '/<folderName>' as folder is not empty

这个时候就要在刚刚的指令加上 -f
$ sh jmeter -n -t <scriptName>.jmx -l <resultName>.jtl -f -e -o /<folderName>

-f:在开始执行测试脚本前强制删除现有的测试结果文件

执行玩指令后 可以到 <folderName> 中找到 index.html 的档案
下面截图为小弟的执行结果


结尾

这週的内容小弟只是介绍了 JMeter 的皮毛
以一些较常被使用的基本操作与设定 来做介绍与分享

如果有疑问或是有错误,还请各位大哥大姐提点。
小弟将继续往下週迈进。 ─=≡Σ((( つ•̀ω•́)つ


参考文献

官方网站 (载点)

Apache JMeter™

相关文章

JMeter Tutorial for Beginners: Learn in 7 Days如何快速使用JMeter进行网站压测压测工具Jmeter简单入门教程JMeter:生成漂亮的多维度的HTML报告

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章