加餐讲推荐⼏款常⽤的性能测试⼯具
你好,我是刘超。很多同学给我留⾔想让我讲讲⼯具,所以我的第⼀篇加餐就光速来了~
熟练掌握⼀款性能测试⼯具,是我们必备的⼀项技能。他不仅可以帮助我们模拟测试场景(包括并发、复杂的组合场景),还能将测试结果转化成数据或图形,帮助我们更直观地了解系统性能。
常⽤的性能测试⼯具
常⽤的性能测试⼯具有很多,在这⾥我将列举⼏个⽐较实⽤的。
对于开发⼈员来说,⾸选是⼀些开源免费的性能(压⼒)测试软件,例如ab(ApacheBench)、JMeter等;对于专业的测试团队来说,付费版的LoadRunner是⾸选。当然,也有很多公司是⾃⾏开发了⼀套量身定做的性能测试软件,优点是定制化 强,缺点则是通⽤性差。
接下来,我会为你重点介绍ab和JMeter两款测试⼯具的特点以及常规的使⽤⽅法。
ab
ab测试⼯具是Apache提供的⼀款测试⼯具,具有简单易上⼿的特点,在测试Web服务时⾮常实⽤。
ab可以在Windows系统中使⽤,也可以在Linux系统中使⽤。这⾥我说下在Linux系统中的安装⽅法,⾮常简单,只需要在
Linux系统中输⼊yum-y install httpd-tools命令,就可以了。安装成功后,输⼊ab命令,可以看到以下提示:
ab⼯具⽤来测试post get接⼝请求⾮常便捷,可以通过参数指定请求数、并发数、请求参数等。例如,⼀个测试并发⽤户数为
10、请求数量为100的的post请求输⼊如下:
ab -n 100 -c 10 -p ‘post.txt’ -T ‘application/x-www-form-urlencoded’ ‘http://test.api.com/test/register’
post.txt为存放post参数的⽂档,存储格式如下:
usernanme=test&password=test&sex=1
附上⼏个常⽤参数的含义:
-n:总请求次数(最⼩默认为1);
-c:并发次数(最⼩默认为1且不能⼤于总请求次数,例如:10个请求,10个并发,实际就是1⼈请求1次);
-p:post参数⽂档路径(-p和-T参数要配合使⽤);
-T:header头内容类型(此处切记是⼤写英⽂字⺟T)。
当我们测试⼀个get请求接⼝时,可以直接在链接的后⾯带上请求的参数:
ab -c 10 -n 100 http://www.test.api.com/test/login?userName=test&password=test
输出结果如下:
以上输出中,有⼏项性能指标可以提供给你参考使⽤:
Requests per second:吞吐率,指某个并发⽤户数下单位时间内处理的请求数;
Time per request:上⾯的是⽤户平均请求等待时间,指处理完成所有请求数所花费的时间/(总请求数/并发⽤户数); Time per request:下⾯的是服务器平均请求处理时间,指处理完成所有请求数所花费的时间/总请求数;
Percentage of the requests served within a certain time:每秒请求时间分布情况,指在整个请求中,每个请求的时间⻓度的分布情况,例如有50%的请求响应在8ms内,66%的请求响应在10ms内,说明有16%的请求在8ms~10ms之间。
JMeter
JMeter是Apache提供的⼀款功能性⽐较全的性能测试⼯具,同样可以在Windows和Linux环境下安装使⽤。
JMeter在Windows环境下使⽤了图形界⾯,可以通过图形界⾯来编写测试⽤例,具有易学和易操作的特点。
JMeter不仅可以实现简单的并发性能测试,还可以实现复杂的宏基准测试。我们可以通过录制脚本的⽅式,在JMeter实现整个业务流程的测试。JMeter也⽀持通过csv⽂件导⼊参数变量,实现⽤多样化的参数测试系统性能。
Windows下的JMeter安装⾮常简单,在官⽹下载安装包,解压后即可使⽤。如果你需要打开图形化界⾯,那就进⼊到bin⽬录下,找到jmeter.bat⽂件,双击运⾏该⽂件就可以了。
JMeter的功能⾮常全⾯,我在这⾥简单介绍下如何录制测试脚本,并使⽤JMeter测试业务的性能。
录制JMeter脚本的⽅法有很多,⼀种是使⽤Jmeter⾃身的代理录制,另⼀种是使⽤Badboy这款软件录制,还有⼀种是我下⾯要讲的,通过安装浏览器插件的⽅式实现脚本的录制,这种⽅式⾮常简单,不⽤做任何设置。
⾸先我们安装⼀个录制测试脚本的插件,叫做BlazeMeter插件。你可以在Chrome应⽤商店中找到它,然后点击安装, 如图所示:
然后使⽤⾕歌账号登录这款插件,如果不登录,我们将⽆法⽣成JMeter⽂件,安装以及登录成功后的界⾯如下图所示:
最后点击开始,就可以录制脚本了。录制成功后,点击保存为JMX⽂件,我们就可以通过JMeter打开这个⽂件,看到录制的脚
本了,如下图所示:
这个时候,我们还需要创建⼀个查看结果树,⽤来可视化查看运⾏的性能结果集合:
设置好结果树之后,我们可以对线程组的并发⽤户数以及循环调⽤次数进⾏设置:
设置成功之后,点击运⾏,我们可以看到运⾏的结果:
JMeter的测试结果与ab的测试结果的指标参数差不多,这⾥我就不再重复讲解了。
LoadRunner
LoadRunner是⼀款商业版的测试⼯具,并且License的售价不低。
作为⼀款专业的性能测试⼯具,LoadRunner在性能压测时,表现得⾮常稳定和⾼效。相⽐JMeter,LoadRunner可以模拟出不同的内⽹IP地址,通过分配不同的IP地址给测试的⽤户,模拟真实环境下的⽤户。这⾥我就不展开详述了。
总结
三种常⽤的性能测试⼯具就介绍完了,最后我把今天的主要内容为你总结了⼀张图。
现在测试⼯具⾮常多,包括阿⾥云的PTS测试⼯具也很好⽤,但每款测试⼯具其实都有⾃⼰的优缺点。个⼈建议,还是在熟练掌握其中⼀款测试⼯具的前提下,再去探索其他测试⼯具的使⽤⽅法会更好。
今天的加餐到这⾥就结束了,如果你有其他疑问或者更多想要了解的内容,欢迎留⾔告诉我。也欢迎你点击“请朋友读”,把今天的内容分享给身边的朋友,邀请他⼀起学习。
精选留⾔ <br />![](https://cdn.nlark.com/yuque/0/2022/png/1852637/1646315601483-007b99ad-a2d4-4a24-821f-d99155d392cf.png#)晓杰<br />在linux上⾯装了ab,windows上⾯装了jmeter,早上还把公司的接⼝测了⼀下<br />2019-05-31 14:22<br />![](https://cdn.nlark.com/yuque/0/2022/png/1852637/1646315602000-986e9dda-b4ce-4c8a-932c-46e110e2363f.png#)不靠谱~<br />感谢⽼师分享。<br />⽬前开发不再是只开发,测试不再是只功能测试。开发需要⾃测,单元测。测试需要⾃动化,性能测。性能测试真是都需要了解啊。<br />2019-05-31 08:16
Din
⽼师,你好。如果要对⼀个服务集群来进⾏测试,能讲讲如果规划测试机器吗?例如如何从测试机器数量、并发线程设置,⽹络带宽等⽅⾯来考虑
2019-05-31 09:55
作者回复
要参考产品上线后的预期标准来确定并发量,根据⾃⼰架构设计分配机器数量,机器配置可以从中低配置开始,带宽内⽹⼀般是固定的百兆,如果需要根据线上贷款限制,可以设置线上贷款⼤⼩。
2019-05-31 21:26
QQ怪
⽼师,⽜逼啊,还加餐,哈哈哈,⼜可以学习了
2019-05-31 08:09
业余草
如果再讲讲它们的实现原理就更好了。其实也可以⾃⼰使⽤ Java 代码来实现性能测试!
2019-05-31 14:16
作者回复
对的,性能测试⽐较核⼼的问题是,如何保证真正的并发性能测试,这个可以参考多线程的相关知识。
2019-05-31 20:43
胖妞
⽼师,请问单机测试对于参数设置⼀般设置数按照什么⽅案!集群下⼜按照什么⽅案,可以说⼀下吗?
2019-05-31 10:38
⽪卡⽪卡
开发⽤postman也挺好⽤
2019-06-30 17:36
Geek_ebda96
⽼师你好请教⼀个问题,公司最近⽣产环境,出现⼀个请求很⻓时间才响应,应⽤程序和数据库的压⼒都不⾼,并发不⼤,看慢查询花的时间也不是很⻓,但系统就是响应很慢,我看他们配置的tomcat线程数很⼤800,其他问题没就没看出来了,怎么来排查呢,还有服务器⽹络问题这个有什么好的⼯具来诊断不,windows系统
2019-06-05 20:08
作者回复
建议先确定是否是应⽤程序的问题,可以在程序中打印请求到响应的时间。如果是⽹络或者服务问题,应该不会是⼀个接⼝出现响应慢的问题,其他的接⼝也会出现。如果是单独⼀个接⼝的问题,应该重点排查代码问题。
服务器的⽹络问题可以通过netstat查看。
2019-06-07 10:24
Fever
⽼师,我也想知道压⼒参数设置怎么测出来的结果才是准确的?具体能举个栗⼦吗?
2019-06-04 16:44
Jarric
Tsung ⽼师⽤过吗?博客上讲这个性能更好,想了解⼀下,谢谢⽼师
2019-06-03 13:08
作者回复
没有使⽤过。如果觉得好⽤就⽤起来,判断⼀个⼯具好不好,第⼀是使⽤⽅便实⽤,该有的功能都有最好了;第⼆是稳定性和专业性。
2019-06-03 21:54
⻔窗⼩⼆
我们⼀般是测试使⽤python⾃⼰写压测脚本压测
2019-06-03 08:14
⼩辉辉
Jmeter那个录制的,到时候去试试,有了这个还是挺⽅便的,不⽤再去⼿动写⼀堆参数
2019-06-02 16:06
⾏者
单个接⼝ab是⾜够⽤的;不过JMeter中的录制功能挺好的,可以更好模拟⽤户来进⾏测试。
2019-06-01 22:19
胡⼩榕
请问⼀下⽼师,siege做压测的怎么样呢?还有上⾯画思维导图的⼯具是啥
2019-05-31 21:03
作者回复
siege没有使⽤过,可以根据⾃⼰的使⽤情况去判断好不好。以上思维导图是⼀个付费版的协同办公软件上画的,现在很多办公
⼯具都有思维导图的⼯具。
2019-06-02 13:44
涛哥迷妹
点赞找这个东⻄好⼏天了
2019-05-31 14:45
mickle
开发中⼀直在⽤ab和jmeter,但是不知道⽼师说的那款jmeter插件,下次试试。
2019-05-31 14:25