“我怎么才能学会做性能测试?”
“性能测试工具到底是选JMeter好,还是Loadrunner好呢?”
“每次做性能测试,似乎都是设置好工具(Jmeter),然后跑下脚本,图表结果看不懂怎么办?”
我是我经常从测试员中收到的问题,归根到底的问题就是:怎么入门性能测试?
网上绝大部分的答案开篇都是讲性能测试的定义,性能测试的目的,性能测试的分类,性能测试的步骤和性能测试工具的使用。包括小酋早期写的一篇专题文章《系统性能测试及调优》 。看似没毛病,但实际对于大部分性能测试新人来说:要嘛看完后一脸懵逼;要嘛觉得性能测试如此困难,干脆从了解、学习到放弃;或者干脆心里一句MMP,直接放弃~
实际性能测试入门并不那么复杂,今天小酋结合自己的经历,让大家对于性能测试的学习,心里多少有点谱。然后再去按小酋的专题,或者网上的 好文 学习,可能事半功倍。
小酋从2010年刚入公司,非常幸运的参与到了电信一个大项目——天翼应用工厂。因为当时我们要对SMS(短信群发服务)的做性能测试,从业不久的小酋被赶鸭子上架。原因是测试经理了解到小酋在实习公司抽空自学了解了性能测试及Loadrunner的“基础”使用(实际就是了解了什么是性能测试,Loadrunner的用户手册对照着工具使用看了一两遍)。So,作为一名测试员,自学很重要,不然连“鸭子”(强调下,此鸭非彼“鸭”)都做不成。
开头,小酋做性能测试也很“简单粗糙”。根据产品经理给出的性能指标,录制好脚本,然后在Loadrunner中设置好场景后执行(中间借助了Loadrunner用户手册,当时好像是LR 8.5版本的),等待执行完Loadrunner生成的报告,bingo,一次性能测试就完成了。面对各种性能曲线,小酋也是一脸懵逼。没法,对照着工具使用手册中的性能曲线分析说明看看吧。什么?这里有跟曲线不正常,突然上扬了,按照手册上所述那肯定就是异常了(高兴下,当没有问题还真不知道怎么进行下去,小酋也无法写下去了)。试着自己解读下,无果。这时,貌似可找开发谈谈了。小酋是幸运的,当时研发团队的开发和测试简直是恨不得穿一条裤子的亲兄弟(不要关注这条裤子的尺寸,哈哈)。所以可能当时的对话是如此展开的:
大兄弟,这图像有异必有问题,你怎么看?
小酋兄,以我之见,因为这是XX业务,所以中间某一环可能出了问题。
大兄弟,以你之见那该怎么搞?
不如监控下JVM,看下堆、内存或线程情况,我们一起看看?
OK,该用什么工具好呢?
用JDK中的工具jvisualvm就行。
……(后面省略N多字)
因为时间过于久远,也许是这样展开的吧,哈哈。这里之所以举这个例子,只是说明团队的氛围很重要。小酋在与开发紧密配合中,不仅掌握了一门监控工具,更是了解了JVM的内存、堆、线程等知识,从而为后面性能测试的进阶 性能调优 打下了良好的基础。
在开发大兄弟的建议以及自己的学习下。小酋慢慢让性能测试“丰满”了起来。比如在脚本中添加检查点,场景运行过程中添加必要的性能计数器(如JVM、linux系统的资源使用,数据库运行情况),更加合理的设置场景,也逐步开始解读隐藏在曲线下的数据。所以,实践和交流,才能让人快速学习或掌握一门技能或知识。
而小酋最得意的是,最终定位到SMS群发的性能瓶颈,和开发员一起努力是单服务器SMS的TPS从60调高到了200多。不要认为200tps很少,想想当时的服务器配置,这是小酋目前为止认为最得意的产出之一。
紧接着,小酋又意外的来到了一家搞网络教育的国企。要测性能的地方也非常多,比如全校线上考试,网络视频性能,网站访问性能等。所以,小酋经历不同项目,不同类型的“海量”(实际也就十来个吧)的性能测试洗礼。你能想象小酋星期天一个人加班,去对一个中间件不停的调整参数做性能调优嘛?在这里,小酋最爱的是有几台配置不错的刀片机随意让我瞎搞。以老大的话说:想把机器硬件搞坏还真有点困难,环境搞坏了大不了重装系统;至于硬件,搞坏算你本事。
过程中小酋也发现了前面做了很多无用功,一些性能指标根本没必要要求的那么高,无法实现也很“铺张浪费”。这时,小酋开始思考:怎么才能让自己做的性能测试带来最大的价值?
小酋开始整理的性能测试前应该进行的性能需求调研。在过程中,如果出现带有疑问的指标,我会直接与产品和项目经理了解场景,然后自己尝试分析。这个过程中,我最大成就不是改善了系统多少性能;而是通过PK或者中间件调优(包括系统调优),为公司节约了多少的成本。比如,一个加密狗的什么业务(经历太多项目,好多已经记不清了),真实场景几人操作而已,根本不需要支持什么XX并发性。所以小酋了解分析场景后,直接找到项目经理“大牛”进行了PK,最终阻止了一场“奢华的浪费”行为。
从上面小酋的两段自身经历,大家不妨自己思考下:自己应该如何学习性能测试?
思考完了,继续往看下来,或者干脆跳过。让我们回到开篇的三个问题,小酋逐一简单说下。
怎么才能学会做性能测试?
不管如何,了解下什么是 性能测试 是很有必要的。然后,学习掌握一款性能工具的基础使用,现在JMeter用的更多更广。
当我们有基本的性能测试基础后,就等“被赶鸭子”或者自己“赶鸭子”上架,在工作中实践、学习和交流中成长。交流可以和开发face to face 的交流,也可以通过在线视频课程等与大牛神交。
性能测试工具到底是选JMeter好,还是Loadrunner好呢?
这个问题你自己就能解答。前提是,深入掌握一门工具,如上面提到的JMeter。最后,你会发现性能测试工具的原理是相通的。针对于不同的项目,不同的环境或场景,我们选择一个最适合(最经济)的就行。
每次做性能测试,似乎都是设置好工具(Jmeter),然后跑下脚本,图表结果看不懂怎么办?
如果在大学中不是非常非常牛逼,那我们对于图表结果一脸懵逼很正常的。要怎么解读图标,那一切都靠实践、学习、思考,然后再实践、学习、思考。当大量重复上述过程,自然就能逐步解读结果图表(或数据)中隐藏的信息了。而驱动力——“年轻人我看好你,所以这项神圣的使命交给你了!”
结尾:
小酋总喜欢画蛇添足。所以还是唠叨下。性能测试难不难?难!但是,我们可以从“简单暴力”开始,再上升到“复杂精细”,然后回到“简单暴力”。哈哈,希望你看完后,不会从入门到学习再到放弃~~
kylinTOP(2019-12-24 18:35:40)
一款性能测试工具好不好,要看以下几个方面:
1、并发能力:看工具的并发量是否能满足你。
2、仿真能力:kylinTOP>LoadRunner12>loadRuner11>Jmeter
3、易用性:录制能力(loadRunner最新版本新版本的浏览支持不是很好、很多网站无法录制、图表展示能力等
4、价格:开源免费,但用起来不是很好用。商用软件,如:kylinTOP、LoadRuner,好用,但需要花钱.kylinTOP是国产软件价格相对便宜很多。
以上信息仅供参考命名用