写点什么

jmeter 命令行执行测试并对测试报表进行初步分析

用户头像
行者AI
关注
发布于: 2021 年 05 月 11 日

本文首发于:行者AI


jmeter 可以通过命令行生成比较完善的可视化测试数据记录报告,为了能够更精确的得出性能测试瓶颈数据,需要我们对测试数据记录报告进行分析。

1. 性能测试方案的设计

性能测试需要根据不同测试目的设计不同的测试方案,因为不是本文的主题这里不过多的描述。


假设我们的测试目的为:找出系统 API 最大吞吐量,我们采用根据每秒增加线程数量的方式来探索最大吞吐量。


(1) 根据项目业务需求编 jmeter 测试脚本。


(2) 如下进行线程组设置。


1-4 场景设置为 300 个线程,启动时间为 600s,相当于每个场景每秒启动 0.5 个线程 。



第 5 个场景设置为 600 个线程,启动时间为 600s,相当于每秒启动 1 个线程。



综上所有场景,相当于每秒启动 3 个线程。


(3) 将脚本保存并命名为 test001.jmx,放在 D:\jmeter_script 下。


(4) 为了测试结果更准确,可多次测试求平均值,我们选择在深夜多次自动运行。

2. 执行性能测试

2.1 执行性能测试的命令

jmeter -n -t D:\test0420.jmx -l D:\jmeter_script\report.csv -e -o D:\jmeter_script\report


(1)-n 设置命令行模式。


(2)-t 执行运行脚本路径。


(3)-l 指定结果文件路径。


(4)-e 设置测试完成后生成报表。


(5)-o 指定生成的报表文件夹路径,文件夹必须为空或者不存在。

2.2 如何让其自动执行测试

为了减少外部环境的干扰,选择在深夜多次压测取平均值作为结果,使用 windows 的定时任务功能定时启动 bat 脚本调用 jmeter 命令。


(1) 写一个 bat 脚本


不仅仅是要运行命令,还需要保存测试报告,保存为 run.bat 放在 D 盘下。


脚本如下参考:


@echo offif %time:~0,2% GTR 9 (SET curtime=%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%) else (SET curtime=%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~1,1%-%time:~3,2%)D:cd D:\jmeter_scriptmkdir report%curtime%cd D:\soft\apache-jmeter-5.2.1\binjmeter -n -t D:\jmeter_script\test001.jmx  -l D:\jmeter_script\report%curtime%\report.csv  -e -o D:\jmeter_script\report%curtime%\report > D:\jmeter_script\report%curtime%\OutputLog%curtime%.txt
复制代码


(2) 在 windows 中可以设置定时任务


win7 在控制面板-管理工具


win10 在电脑右键-管理



以下设置


名称:自己取名。


触发器配置如下:会在晚上 10 点启动,每隔两小时启动一次。



操作配置如下:会在触发时去启动 bat 文件。


3. 执行完成后的结果

3.1 执行完成后的测试报告

这里拿的之前的测试报告做示例。


3.2 测试报告分析

(1) Apdex(应用性能指标)


Apdex 定义:性能指数 Apdex(Application Performance Index)是一个国际通用标准,Apdex 是用户对应用性能满意度的量化值。它提供了一个统一的测量和报告用户体验的方法,把最终用户的体验和应用性能作为一个完整的指标进行统一度量。Apdex 标准从用户的角度出发,将对应用响应时间的表现,转为用户对于应用性能的可量化范围为 0-1 的满意度评价。



如何计算 Apdex:


Apdex 对应用中发生的任务进行采样,并且按其响应时间把采样划分到相应的满意度区间,计数,再用一个公式计算 Apdex 指数:



在测试报告中 Apdex 的位置如下:



(2) 最大吞吐量分析


Throughput-Total Transactions Per Second 每秒事物总数:



OverTime-Active Threads Over Time 全程活跃的线程数量:



OverTime-Response Times Over Time 响应时间:



根据上面三个图得知线程数在 152 个时,响应时间集中在 0.2-0.6 之间,此时吞吐量达到最大在 364TPS 左右,之后再增加线程,出现报错,且响应时间增加,吞吐量下降 。

4. 将测试结论汇总

总共测试了五次,我们将五次测试报告分别做分析,然后汇总到如下表格,便可以得出测试结论。


发布于: 2021 年 05 月 11 日阅读数: 26
用户头像

行者AI

关注

行者AI,为游戏插上人工智能的翅膀。 2020.12.18 加入

行者AI(成都潜在人工智能科技有限公司)专注于人工智能在游戏领域的研究和应用,凭借自研算法,推出游戏AI、智能内容审核、数据平台等产品服务。

评论

发布
暂无评论
jmeter命令行执行测试并对测试报表进行初步分析