手把手教你如何使用jmeter做性能测试

Posted 软件测试君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手教你如何使用jmeter做性能测试相关的知识,希望对你有一定的参考价值。


手把手教你如何使用jmeter做性能测试


本文共3040字  阅读约需5分钟

(后台回复“Python福利”获取一份Python学习入门图解)


一、为什么要写这篇文章?


在博客园和公号连续写文章,已经快两年了。


自然在公号或博客园阅读过我文章的同学,基本都能联系到我的。


就在几天前,有个同学加我微信,当然我并不惊讶,甚至习以为常(因为总有人加我微信),为什么呢?


这里讲下原因吧,对于被添加好友一般可为以下几类:



第二种:索取,“大佬,有学习视频、资料吗?”,官方回答,有,200,还需要吗?


第三种:直接发来“进群”,我知道你谁呀,想干什么的,搞“团结”来了?


第四种:不说话,也不清楚要做什么,某一天发现自己意外被删除了,是不是感觉特无辜,有木有!


但这个同学,我要着重说一下,挺有意思的。这是一个关注我公号很久的一个粉丝,总会看我的文章。我们聊了一会,他和我说了下他的情况,也是个自学党,问我有老师讲jmeter课程吗?想系统学习一下。


手把手教你如何使用jmeter做性能测试


毕竟我不是专业搞培训,虽然工作多年,也不敢妄称为人师,怕误人子弟呀,也只能勉强算工作稍微久一些吧。


但作为一个自学党,自知自学是一件多么坚难的事。


当然,还有一点就是自己的小玻璃心,受到了影响。因为有一阵自己特别不爱写文章,周期大概有1-2个月,为什么呢?



后来我就琢磨是为什么,是排版不好看呢?还是内容写的low?后来也总结了一些原因,只能一点点坚持努力改进,期待阅读量上去。


但是,这个同学给我了一种强烈的认同感,顿时让我觉得备受期待,原来我写的文章,还有人看的,超感动的手把手教你如何使用jmeter做性能测试!所以当他说出困惑后,我想了想,我还是可以帮上一些人的,必须坚持写下去,帮助一些渴望学习技术的同学,所以就专门写了这篇文章。


那么就我限有的知识,来诠释怎么做一个功能的性能测试。


二、性能测试的分类


做性能测试,有些名词自然也是需要了解的,如果后面篇幅我提到有些名词,感觉生疏,不好理解的。请自行百度一下,对于概念性的东西,个人感觉百度说的比我好多了。


那么性能测试分为哪些呢,简单来说分为以下几类:


1、压力测试


目的:找出临界点。


2、负载测试


目的:找出能承受的最大负载量。


3、稳定性测试


目的:验证系统是否有内存泄露等问题。


4、容量测试


目的:找出数据库能够处理的最大会话能力、最大容量。 


5、配置测试


目的:为系统调优提供参考。


三、性能测试流程


在实施性能测试的过程中,整体工作流程,如下图所示:


手把手教你如何使用jmeter做性能测试


当然,以上流程仅供参考,具体大家还需视公司情况自行调整。


1、性能需求分析


这里以我们常用的禅道中的添加用例功能为例,进行分享。


1.1、调研期望指标(即性能需求)


手把手教你如何使用jmeter做性能测试


这只是流程中的第一步,如果这一步做好了,接下来的测试方案设计、脚本开发、测试执行、测试报告都会轻松很多。


为什么? 你想如果想都不想,直接搞,后面做的一切不都是白扯嘛!自己心里都迷迷糊糊的,还怎么去说服别人呢?


1.2、关于收据需求指标


  • 参考前辈的历史数据

  • 参考同行竞品


友情提示:什么所谓的二八原则,没有数据支持依据一切都是屁话,完全没说服力,也就是能忽悠下,没接触过性能测试的同学吧。


这里在废话几句哈,做测试的要严谨,觉得可能?大约?应该就是这样的吧?这些字眼能说服谁?下面划重点,拿出数据说话、数据说话、数据说话、重要的事说三遍!


2、性能测试方案设计


2.1、测试目的、目标与范围


目的:找出系统潜在的性能缺陷


目标:从安全,可靠,稳定的角度出发,找出性能缺陷,并且找出系统最佳承受并发用户数,以及并发用户数下长时间运行的负载情况,如要并发100用户,如何对系统进行调优


测试功能范围:本次测试计划主要收集分析禅道添加用例并发请求相关数据,做出分析和调优


手把手教你如何使用jmeter做性能测试


2.2、测试指标范围


测试范围:禅道中添加用例并发时,服务器各项性能指标的性能测试


Jmeter指标:由于Apache旗下性能测试工具Jmeter收集的性能指标偏少,下面的数据选取代表性指标


1、Average/ms:服务器处理事物平均响应时间(表示客户端请求到服务器处理信息且反馈客户端的时间)

2、Throughput/s:服务器每秒处理请求数(表示服务器每秒处理客户端请求数(单位:个/秒))

3、KB/s:服务器每秒接受到的数据流量(表示服务器每秒接受到客户端请求的数据量KB表示)


硬件指标:


1、%Processor time:CUP使用率(平均低于75%,低于50%更佳)

2、System:Processor Queue Length:CUP队列中的线程数(每个处理器平均低于2)

3、Memory:Pages/sec:内存错误页数(平均低于20,低于15更佳)

4、Physical Disk-%Disk Time:磁盘使用率(平均低于50%)

5、SQL Server:Buffer Manager-Buffer Cache Hit Ratio:(在缓冲区告诉缓存中找到而不需要从磁盘中读取的页的百分比,正常情况次比率超过90%,理想状态接近99%)


不需要关心的指标:


  • 业务流程/路径覆盖率

  • 业务数据的完整、正确性

  • 其他诸如系统易用性、可管理性等属于专项测试的内容


2.3、测试资源


条件有限,我就一个测试环境,虚拟机套出来的环境,所有服务都部署在一块了,正常系统是分开部署的,这里参考这个表格的属性就好了。


手把手教你如何使用jmeter做性能测试


2.4、测试准备


测试环境安装:我这里部署的是一个禅道系统,如何搭建百度一下


2.5、测试工具和测试策略


测试工具:Apache-Jmeter2.3.2


测试策略:根据公司内部实际情况,以及业务分布设置访问量即并发用户数


2.6、测试数据收集测试脚本、数据及其预验证 


添加测试用例场景设计如下:


手把手教你如何使用jmeter做性能测试



2.8、基准测试


目的:验证测试脚本,初步检查交易本身是否存在性能缺陷。


测试方法:采用5个用户负载执行,取交易的平均响应时间作为衡量指标,并计算吞吐量


2.9、负载测试


目的:获得交易本身的性能表现,诊断交易是否存在性能缺陷。


2.10、稳定性测试


压测系统7x24小时


2.11、测试输出成果物


  • 《性能测试方案》

  • 《性能测试记录及问题跟踪表》

  • 《性能测试报告》


2.12、测试进度计划


度量你性能测试期间,在每个时间点该完成的事。这里根据公司情况来吧,我不给出示例了。


2.13、实施风险及规避措施


指对影响项目测试的各种可能发生的风险进行估计,以及对风险的发生几率和严重程度进行估计,并按照估计结果对风险进行排序


3、脚本开发制作


脚本开发制作:请参考文章


4、服务器监控


服务器性能监控:请参考文章


5、测试报告编写 


这里我只介绍可能会涉及的一些点、大家根据自己情况做增减,性能测试报告一般包含如下几项内容:测试目标、参考文档、测试环境说明、硬件配置、软件配置、测试策略、人力资源、测试方案、测试场景、测试用例、测试结果及其分析、测试结论及建议等等。


至于每项的详细内容,这里就不逐项一一详细说明了,请大家根据公司情况做设计编写。



四、关于性能测试的一些看法


想要把性能测试做好,需要做好多方面的知识储备,而且涉及到面非常广,比如网络,OS,系统架构,业务逻辑,协议报文,脚本开发,服务和系统的监控等等更多方面的知识。


值的一提的是,真正要把性能测试做得好,还得是大公司(真的肯花钱呀),毕竟人家真的是数据量大呀。我们一起回忆一下双十一的淘宝和京东,这些才算的上真正意义的性能测试。


还有一点要说的是,性能测试真的是水太深了,个中细节,相信做过性能测试的同学自有体味,哈哈哈!!!


以上仅为自己实际工作中的一些经验,本人能力有限,如有不足,还请留言补充。最后,谢谢您的耐心阅读!!




转发到朋友圈

分享给你身边的朋友~
版权归软件测试君所有
欢迎同行转载开白




做事一定要有始有终,

坚持到底很重要。


以上是关于手把手教你如何使用jmeter做性能测试的主要内容,如果未能解决你的问题,请参考以下文章

压力测试研究

压力测试研究

不会压测?没关系,手把手教你用jmeter做压力测试及结果分析

性能测试-第01天-从理解到体验,最后能够对比说出Loadrunner和JMeter的优缺点

CSDN做测试的老师教你Jmeter生成压力测试报告

后台测试手把手教你jmeter压测