jmeter使用心得(四)

测试推送·2021-05-08 14:06
本期文章,继续为大家带来jmeter使用上的一些心得体会,希望对大家有所帮助。

编者按:本文来自微信公众号“搜狗测试”(ID:SogouQA),作者:大帆船,36氪经授权发布。

     之前的文章,小编分享了一些关于jmeter的使用心得,不知是否对大家的测试工作有些许的帮助呢,本期将继续为大家带来jmeter相关的使用心得第四篇。 

往期文章:

jmeter使用心得(一)

jmeter使用心得(二)

jmeter使用心得(三)

一、jmeter聚合报告的生成

     在使用jmeter进行接口测试的过程中,聚合报告(Aggregate Report)几乎是必不可少的一项功能。使用聚合报告,我们可以不费吹灰之力就得到测试中的各项统计信息,如错误率、接口响应时间、吞吐量等,方便快捷。

     如在GUI模式下对线程组或采样器添加聚合报告,在运行完测试计划后,我们可以在聚合报告中看到所需的统计信息,点击下面的Save Table Data,还可以将结果保存到csv文件,以便于后续查看。

      以上是在GUI模式下得到聚合报告的方式,想必大家都比较熟悉。但其实jmeter很多情况下会在NO-GUI模式下使用,本系列文章也介绍过使用NO-GUI模式的一些好处。在NO-GUI模式下生成聚合报告的方式与在GUI下有一些区别,最显著区别的就是因为没有页面,所以不能直接生成聚合报告。虽然不能直接生成,但在NO-GUI模式下也有多种生成聚合报告的方法,下面主要介绍三种常用方法。

1、保存聚合报告文件,加载到GUI中生成2、使用jmeter插件生成3、通过生成html报告间接得到聚合报告

    第一种方法最为简单,只需在添加聚合报告的时候设置一个保存的文件地址。这样跑完测试之后,每条case的统计信息就会输出到这个文件之中,之后将这个文件加载到GUI中,就可以自动计算得到聚合报告信息,与直接用GUI模式跑的没什么两样。

直接打开日志文件查看聚合报告

第二种方法我们需要利用jmeter的插件助手。同样需要在添加聚合报告时设置一个保存的文件地址,如test.jtl。然后从插件官网下载并安装插件助手,具体方式可以参见插件官网教程:

https://jmeter-plugins.org/wiki/JMeterPluginsCMD

    安装好插件助手之后,在jmeter安装目录的bin目录下会出现JMeterPluginsCMD.bat和JMeterPluginsCMD.sh两个脚本,分别是windows和linux/MacOS下的命令行脚本程序,利用这个脚本,我们就可以直接用保存的日志文件test.jtl生成聚合报告test.csv文件了。命令行如下(以windows为例):

JMeterPluginsCMD.bat --generate-csv test.csv --input-jtl test.jtl --plugin-type AggregateReport

      生成的csv文件就和用GUI模式保存下来的csv文件完全一样。这种生成聚合报告的方式,相比第一种,重要的优势在于不用再通过GUI来操作,尤其是在实际测试和统计结果使用的机器不同时,这种方式省去了拷贝日志的过程,在测试时间长、并发量大、生成日志较多的情况下可以考虑使用。

保存的聚合报告csv文件

第三种方法其实是利用了jmeter另外一个生成html报告的功能,这种方式产出的聚合报告直接就包含在html报告之中了,在NO-GUI模式下可以通过在执行测试脚本命令时添加额外的参数一键实现。

  •  

jmeter -n -t test.jmx -l test.jtl -e -o report 

      其中report必须是一个已经存在的空目录,不然可能不能正常生成报告。

      生成报告后,用浏览器打开,就可以看到其中的聚合报告字段了。这种方法的优点是,生成聚合报告比较方便,且除了聚合报告外还能输出一些其他统计信息,看起来非常直观。但也存在一些缺点,比如生成的报告信息都在网页中,且通过js加载,不利于单独进行数据分析、统计对比等操作。

html报告中的聚合报告

二、jmeter进行固定吞吐量(QPS)测试

     一般我们使用jmeter进行测试时,多考虑的是不同并发数下服务的性能,这些性能指标包括吞吐量、响应时间等。但在某些场景下,服务其实对于并发数并不是很敏感,反倒是平常作为性能指标的吞吐量会对服务性能产生影响,比如不同吞吐量下,服务的响应时间和错误率会有所不同。这时就需要我们对jmeter发送请求的吞吐量进行限制,而jmeter正好有一个定时器(timer)可以实现这样的效果。他就是固定吞吐量控制器(Constant Throughput Timer)。

      固定吞吐量控制器的参数很简单,只有两个,一个是期望达到的吞吐量(注意这里是每分钟,如果是控制QPS,需要填写QPS*60),一个是计算的模式。其中计算的模式有几种,各有区别,可以按照不同的需求选用。

This thread only:

控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的target Throughput 乘以该线程的数量

All active threads:

设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。

All avtive threads(shared):

与All active threads的选项基本相同。唯一区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。

All active threads in current thread group:

设置的target Throughput 将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和All active threads 选项的效果完全相同。

All active threads in current thread group(shared):

与All active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。

     例如我要控制某个线程组中某个请求的总QPS为1.0,那么就可以选择All active threads in current thread group模式,并将吞吐量设置为1.0*60=60。

     这样当我们进行测试时,这个请求的QPS就被固定为1了,通过聚合报告可以清晰得看到,长时间测试下来,对于吞吐量的控制还是比较精确的。

通过使用吞吐量控制器保持QPS为1

小结

     本文主要分享了在使用jmeter进行测试时的一些心得体会。以上内容均来自小编自身在测试中所遇到的问题以及总结的经验,后续还会继续为大家带来这方面的分享,如果大家有不同的看法或更好的建议,欢迎一起讨论~ 

有任何想说的话,都可以发送内容到“搜狗测试”公众号,我们一起聊聊~

欢迎添加我们的搜狗测试微信号,与我们一起聊聊测试。

+1
30

好文章,需要你的鼓励

参与评论
评论千万条,友善第一条
后参与讨论
提交评论0/1000

下一篇

新手看利润表,老手看现金流量表,高手看资产负债表。

2021-05-08

36氪APP让一部分人先看到未来
36氪
鲸准
氪空间

推送和解读前沿、有料的科技创投资讯

一级市场金融信息和系统服务提供商

聚焦全球优秀创业者,项目融资率接近97%,领跑行业