俗话说:“工欲善其事必先利其器”,想要学习压力测试,先确定用哪个工具是相当重要的。多多最近在调研常见的压力测试工具,如:HP的Loadrunner,Apache的Jmeter,阿里的PTS,Gatling。下边就给大家简单的介绍一下这几个工具。
1.loadRunner
loadRunner算的上性能测试的老大哥了,功能齐全,操作简单,最适合不太懂开发的测试小伙伴了,But是个商业工具。他的大概工作流程和原理是:安装完成后,新建初始化,选择协议,输入网址,新建成功,开始录制,回放修改脚本。工作原理是通过中间代理,监控和收集并发客户端发出的指令,把他们生成脚本,在发送到应用服务器,在监控服务器反馈结果的一个过程。loadRunner实际上是有三个部分:
1 Generator录制创建脚本
2 Controller建立场景,运行负载测试
3 Analysis分析测试数据。
优缺点:
优点:有分布式中间代理功能,有IP欺骗功能,可以直接录制脚本,设置场景,直接选择虚拟用户数量,易于使用,功能强大,有技术支持且网上资料很多。
缺点:商业软件,很贵,脚本代码不开源,安装麻烦,占用内存较大,需要掌握函数修改脚本,比较依赖脚本。
注意点:多多的电脑是Windows10,所以在下载好工具的时候死活装不上,提示OSI的系统配置文件不符,后通过公司大神安装了虚拟机win7的系统后,顺利安装破解,汉化后,开心的运行,录制脚本的时候发现web页面打不开,弹框显示JS错误,咨询了公司的前端小伙伴说项目已经不支持IE9了;所以多多挥泪不干了......默默发誓,有钱了要买最新版,哼
总结:网上最多的破解版的loadRunner11支持的系统为Windows7,支持的IE浏览器版本为9;
2.Jmeter
jmeter是Apache组织开发的基于Java的压力测试工具,比较适合刚刚接触到压力测试的小伙伴,因为是开源的并且操作很简单。大概的使用流程和原理:下载解压,建立线程组,设置线程组参数,添加请求和选择测试报告样式,录制。工作原理是通过中间代理,监控和收集并发客户端发出的指令,把他们生成脚本呢,在发送到应用服务器,在监控服务器反馈结果的一个过程。他的虚拟用户数主要是通过增加线程的数目,或者是设置循环次数来增加并发用户。
优点:开源,轻量级,安装简单,纯Java,完全可移植;可以做web的功能测试,
缺点:用户量较少,网上资料不全,需要自己去学习。录制脚本需要手动添加URL和参数,不方便。
入门的教程百度上一大堆,所以就不贴怎么实例步骤了。
3.阿里云PTS
阿里的工具都是很便捷,很好用的,但是是商业工具。大概的使用流程和原理:通过创建脚本(创建事务、编写脚本、调试)、创建场景(关联脚本、关联监控机、设定压测方法)、执行场景(设定持续时间、实时监控、查看日志)、生成报告(业务指标、ECS指标、RDS指标)四个步骤就可以完成一次性能测试。
优点:简单易用、无需安装工具,并发模式和固定TPS模式两种压测策略,贴合实际业务场景需求。平台提供脚本管理、场景管理、压测调试与执行、性能监控、压测报告的一体化操作流程
缺点:使用收费,包月服务是100万VUM,最大并发1万,1000元,过期后VUM会释放。
不包月每个VUM 按0.0036收费
PTS没有什么坑,报告结果很直观,可以很清楚的看到每个时段的变化。唯一就是有点贵,测试狗最穷了.........
4.Gatling
Gatling是我们技术总监特别提醒推荐给我的一个工具,开源的,脚本是基于Scale语言的,方便编写。大概使用流程和原理:Gatling是基于HTTP的服务器,多用于web端应用,主要分为Gatling(用来运行脚本)和record(用来录制脚本);脚本是.scale的一个类,能够灵活的编辑脚本;record用liunx系统内网运行减少网络对压力测试的影响;结果以HTML的格式存储在user-file的文件中,Gatling使用了HighCharts这款JavaScript库来进行报表的展示。另外Gatling还提供了方便的接口用来自定义报告的展示。
优点:开源绿色免费,轻量级;用AKKA为其并发编程运行;(Akka是一个用Scala编写的库,用于简化编写容错的、高可伸缩性的Java和Scala的Actor模型应用。它已经成功运用在电信行业。系统几乎不会宕机(高可用性99.9999999 %一年只有31 ms宕机)。运行在JVM上,有强大简洁的API;结果柱状图详细简洁易懂;
缺点:不支持数据库的性能测试;不能进行分布式性能测试。
Gatling的结果是一个单独的HTML文件,结果样式很多彩,便于查看,且可以自定义格式;因为我们公司的项目是全栈的HTTPS访问,所以我没有录制成功,只能很苦逼的学习scale,scale是Java语言的扩展,我不会,所以只能慢慢的去网上搜scala的简单请求。不过作为一个测试学习一下简单的开发语言也不错啊。
以上内容是多多逛了很多blog,网页还有亲自使用得出的结论,有什么不对的,欢迎大神来指点。