业界压测平台与JMeter的对比
压测平台是什么?
压测,即压力测试,作用是对各种服务对象进行压力测试以获得该服务处于或超过预期负载时系统的运行情况,进而判断系统在峰值负载或超出最大负载情况下的处理能力。
压测工具,顾名思义,就是用来进行压力测试的工具,常用的有ab、jmeter、LoadRunner和wrk等等。
而由于在整个压测过程中存在以下问题:
时间成本:每次测试都需要重新搭建一套生产环境,成本太高,且几乎每个环节都需要人力支撑
数据成本:脚本、测试数据、压测机器、测试报告无法沉淀
风险成本:测试用例多,生产压测缺乏平台流程管理,手工执行非常容易出错
自动化问题:自动化性能基线无统一平台支撑,测试过程中靠手动监控,覆盖不全且定位问题困难
为了解决以上这些问题、更好地满足自己/用户的压测需求,不少企业在开源压测工具的基础上进行二次开发,将压测流程管控、压测任务管理和自动化性能基线等功能整合在一起,形成一个可以支撑各种个性化压测需求的分布式业务系统,也就是压测平台。
本文主要讲什么?
本文主要将常见的压测平台与JMeter进行各方面的对比,并分析JMeter有哪些地方还可以改进加强。
主要对比的指标有:
- 是否适合新手使用
- UI界面是否符合用户操作习惯
- 压测部分的功能是否齐全,足够满足用户的各种需求
- 结果分析的报告是否全面
- 社区建设是否丰富
性能测试PTS(阿里云)
性能测试 PTS(Performance Testing Service)是阿里云推出的一款具备分布式压测能力的SaaS压测平台。与普遍使用的压测工具相比,PTS所宣传的特点有:
施压流量来自真实CDN节点
在PTS服务中进行施压配置时,可以选择国内公网和阿里云内网两种模式来设置压力来源。在国内公网模式中,PTS服务会分配来自全国各地的公网IP,并且根据压测的量级来分配对应的节点资源(IP),压力来源足够分散,可以最大程度模拟真实流量的路径。
纯SaaS平台,使用时无需额外安装和部署
SaaS(Software as a service)软件即服务,也就是说,软件的服务器在云端,可以通过网络提供服务。
阿里云将PTS所有服务都web化,用户可以直接在阿里云上的控制台里进行压测操作。
兼容JMeter脚本,可以平滑复用jmx脚本文件
除了使用阿里云自研的压测引擎外,还可以使用原生JMeter引擎进行压测,直接导入jmx脚本文件即可。有个需要注意的地方是JMeter压测功能和PTS原生功能共享并发用户数的额度。
配置界面所见即所得,对新手友好
从配置场景,发起测试,到最后的查看结果报告,几乎所有步骤都可以都可以在网页上进行(除非你要使用jmx脚本);并且在配置场景时,用户可以直接零编码在PTS上进行场景的可视化编排。
覆盖主流浏览器的录制插件
用户可以在浏览器上模拟压测场景的操作,浏览器中的插件会录制下压测请求URL(包括Header、Body等信息),录制后的内容可以导出为YAML脚本或者JSON脚本。
以下是与JMeter相对比的情况:
是否适合新手使用
适合。
由于PTS的所有操作都可以在网页上进行,用户可以直观地配置各类设置,网站上的文档也介绍得十分清晰,所以很多并不熟悉压测是什么的新手用户也可以轻松使用PTS;但是如果要使用JMeter,新手用户还需要学会如何编写脚本,如何设置参数,如何查看结果等操作。
UI操作界面是否符合用户使用习惯
以我的个人感受来说,是。
评判标准是①没有会令用户产生歧义的地方,②常用的按钮都在用户习惯的位置(比如说保存按钮固定在页面的最下方等),③当鼠标移到部分按钮上时,会以浮窗的方式提示用户此操作会产生的结果,如下图
压测部分的功能是否齐全,足够满足用户的各种需求
是。
以下是对PTS和JMeter的一个功能对比。
功能 | 性能测试PTS | JMeter |
---|---|---|
自定义API | Y | Y |
设置出参 | Y | Y |
配置检查点 | Y | Y |
使用函数/文件参数/自定义参数 | Y | Y |
添加思考时间 | Y | Y |
添加集合点 | Y | Y |
添加条件跳转 | Y | Y |
添加数据指令 | Y | Y |
使用模版配置压测场景 | Y | N |
查看离线报告 | Y | Y |
容量预估 | Y | N |
压力预估 | Y | N |
创建SLA | Y | N |
压测调速 | Y | N |
定时压测 | Y | Y |
脚本录制 | Y | Y |
支持的脚本 | jmx、json、yaml | jmx |
从表格中我们可以看到,其实PTS的大部分功能用JMeter都可以实现,但是在JMeter上使用这些功能时对新手不太友好,而PTS就非常直观地把这些功能都做成了网页上的选项,用户只需要鼠标轻点就可以轻松使用。 |
结果分析的报告是否全面
是。
PTS的一大优点是压测报告中的指标非常详细,排版清楚,方便用户阅读;并且有一些grafana上没有的功能,如下:
- PTS会统计每个请求所返回的响应码,并给出每个时间点的统计结果
- PTS会统计所有返回的错误信息
其他没有提及的大部分功能,grafana上也有,但是不太直观;如PTS和grafana都有调整时间轴更好地分析某一时间段具体的数据的功能,只是在grafana上拉取与缩放时间轴并不太方便。
社区建设是否丰富
是。
PTS官方网站上的文档已经十分详细,并且网络上有许多关于PTS使用心得的博客,总体来说资源非常多。JMeter的文档是英文的,虽然国内有人对其进行了翻译,但是对英文不好的用户来说还是需要多费一些功夫;但是网上也有许多JMeter相关的文章,只是找资料的时候需要多多挖掘。
云性能测试服务CPTS(华为云)
一项为基于HTTP/HTTPS/TCP/UDP等协议构建的云应用提供性能测试的分布式压测服务。与上文提到的PTS相似,CPTS同样支持快速模拟大规模并发用户的真实业务高峰场景,也可以很好地支持报文内容和时序自定义、多事务组合的复杂场景测试。它所宣传的特点有:
低成本的超高并发模拟
可以利用单压测机实现万级并发。
测试任务模型自定义
CPTS引入了“事务”的概念,和PTS中的“串联链路”有一些相似——用户可以定义自己的事务库,并且用户所创建的事务可以被多个测试任务复用,同时每个事务还可以定义多个测试阶段,最大程度地模拟流量起伏的复杂场景。
压测资源管理,按需使用
与PTS中压测集群由控制中心统一调度的情况不同,CPTS支持用户按需创建测试集群,并实现租户间流量隔离。另外在测试期间用户也可以实施扩容、缩容测试集群,升级测试能力等等。
以下是与JMeter相对比的情况:
是否适合新手使用
比较适合。
CPTS和PTS的操作界面有一些相似,操作逻辑也差不多,但是PTS的文档要比CPTS的文档更细致,也对新手更友好。CPTS中有些概念很容易让用户混淆,如“事务”、“用例”与“请求”,文档上也没有详细介绍。新手用户自己摸索着也可以摸索出使用方法,但是要费些功夫。
UI操作界面是否符合用户使用习惯
以我的个人感受来说,符合。
和PTS相似,在操作上没有什么会令用户产生疑问或歧义的地方。
压测部分的功能是否齐全,足够满足用户的各种需求
CPTS的功能比较齐全,以下是对CPTS和JMeter的一个功能对比。
功能 | 云性能测试服务CPTS | JMeter |
---|---|---|
自定义API | Y | Y |
设置出参 | Y | Y |
配置检查点 | Y | Y |
使用函数/文件参数/自定义参数 | Y | Y |
添加思考时间 | Y | Y |
添加集合点 | Y | Y |
添加条件跳转 | Y | Y |
添加数据指令 | Y | Y |
使用模版创建压测场景 | N | N |
查看离线报告 | Y | Y |
容量预估 | Y | N |
压力预估 | Y | N |
创建SLA | N | N |
压测调速 | N | N |
定时压测 | Y | Y |
脚本录制 | Y | Y |
绑定域名 | Y | Y |
支持原生JMeter压测 | Y | / |
支持的脚本 | jmx、json、swagger | jmx |
结果分析的报告是否全面
是。
CPTS的报告也比较详细,同时UI界面也非常舒服。有一些功能和PTS类似,算是各有千秋。特色功能如下:
CPTS也会统计每个异常的响应信息并直观地展现出来
CPTS上的响应状态分布图比grafana多了更多数据
社区建设是否丰富
不太丰富。
首先,CPTS的官方网站内容不是很多;其次,网上也没有几篇关于使用CPTS的文章(除了官方自己发的以外)。
如上图,可以看出JMeter的网络资源明显更加丰富,在这点上JMeter对用户更加友好。
其他类的压测平台
市场上还有部分压测平台并不像PTS和CPTS那样同时面向个人用户和企业用户,它们一般只为企业用户服务,所以我单独把它们列了出来。
WeTest压测大师
压测大师的优势主要有
- 依靠腾讯云提供压力源,并不需要额外配置压力机,同时云端压力稳定无上限
- 有腾讯专家在线指导并且会定期开展性能测试培训或沙龙等
但是压测大师的官网上并没有提供体验入口,所以无从得知其服务细节(只能评价一下官网页面做得挺好看的)。
如果点击【联系客服】,则会转到网页咨询窗口,并提供人工客服选项,联系官方还是比较方便的。
全链路压测ForceCop
ForceCop主打业务零侵入、多语言支持、立体监控等特点,主要的压测功能都有具备,并且附上了客户案例。
但是如果想要体验ForceCop的服务,需要填写申请表。
压测宝
压测宝的官网上信息就没有那么丰富了,只大概提了一下产品的特点,在客户案例部分阐述得比较多,但也没有看出产品的优势具体在什么地方。想要体验服务同样需要申请。
云压力测试平台 CPT
CPT是睿象云公司的产品,该公司的主要业务其实是提供高效智能的跨云监控和告警管理服务,云压测服务并不是它们主推的功能。其实个人也可以体验它们的服务,但是由于想说的内容比较少,于是把它放在最后。在体验过程中我有以下几点感受:
- UI界面对用户不太友好
- “测试任务”部分操作比较简单,但是“编写脚本”部分很让人费解
- 与上文的CPTS和PTS相比,没有很特色的功能,用JMeter可以完全替代
- 压测时可以选择流量所在地域(虽然只有三个选项)
不过它的文档还算详细,在搜索引擎上也能找到挺多相关文章的(要比CPTS多),算是它的一个优点。
总结
总的来说,衡量一个压测平台的指标大概有以下几项:
- 学习成本
- 安装部署成本
- 是否免费
- 是否支持多协议
- 压测结果图形化展示
- 是否支持TPS模式
- 是否有链路、场景编排管理支持
- 是否支持场景录制
- 生态环境
- 监控指标是否完备
- 是否支持原生
- 是否支持流量地域定制
JMeter的优势在于免费、学习成本低、拥有绝大部分用户所需要的功能、生态环境良好等;这些优势不需要我多说。
我主要阐述一下从以上的多个平台的分析中,JMeter可以有哪方面的改进:
- 在JMeter上编写脚本虽然并不是太难,但是如果简化了这一过程则可以大大减少用户的学习成本,可以吸引更多新用户。
- 在结果分析报告部分,JMeter可以增加一些对响应数据的分析,使用户可以直观地找出返回了什么错误的响应代码,更快速地处理问题
- grafana有很多功能,但是它的界面是全英文的,有些用户会面临着一边抱着字典一边用grafana一边摸不清grafana要如何实现自己需求的窘境
- 使用JMeter时,编写脚本在JMeter客户端上、压测在服务器上、查看结果在网页上。这整个压测过程比较割裂,如果可以整合在一起也比较方便用户的使用
- 无论是PTS还是CPTS都有容量预估、压力预估的功能,可以考虑在JMeter上完善相关功能
最新文章
- [Sass]声明变量
- JDBC与Hibernate中SQL语句参数设置的顺序问题
- hdu3264Open-air shopping malls(二分)
- Remove Duplicates from Sorted Array [LeetCode]
- 如何说服你的老板必须使用APM?
- Android 开发框架介绍
- 野指针、NULL指针和void*
- CPU,MPU,MCU,SOC,SOPC联系与差别
- 初涉JavaScript模式 (6) : 原型模式 【二】
- Windows 10开发基础——文件、文件夹和库(一)
- PHP - MySQL数据库
- 军医王-moTestin云测试看好移动医疗行业
- .NET程序保护专家.NET Reactor发布4.7版本
- ROS time stamp and sync
- 使用Stickers拓展集成iMessage简单功能
- Python交互模式下代码自动补全
- 【PAT】B1069 微博转发抽奖(20 分)
- PHP字符串反转
- 赵雅智:service_bindService生命周期
- Mac(OS X)中Git安装与GitHub基本使用
热门文章
- 这个Spring Security登录插件牛啊,验证码、小程序、OAuth2都能快速接入
- JS数组at函数(获取最后一个元素的方法)介绍
- java编程用大小写字母及数字输出五位数验证码
- HDLBits->;Circuits->;Arithmetic Circuitd->;3-bit binary adder
- 建立QT工程的规范型,以及重要性
- zabbix主动式和被动式
- RPA纳税申报机器人
- IntelliJ IDEA 项目文件旁边都有0%classes,0% lines covered
- React技巧之导入组件
- mongodb 数据块迁移的源码分析