希望大家指出我的不足之处。
希望能帮我点上一颗 star,多谢多谢。
云压测平台在测试领域并不是陌生的名词,简单来说就是在网页/移动端执行压测操作,同时压力机是部署在云端。
如压力节点机在云南,那就是云南产生压力,在北京,那就是北京产生压力。
现阶段云压测平台挺多的,我了解到的就有收费的如阿里云的 PTS、XMeter,还有一些开源的,如 nGrinder、云集微店的 TITAN。
收费的就不提了。
开源的各种压测工具,总会面临各种问题:
同时,平台实现之后还有好处:
其实平台本身使用什么语言开发都可以,但是由于压力内核选择使用了 Jmeter,为了要调用 Jmeter 的 API,平台也选择使用 Java 开发。
优点不详述了,最重要的还是顶级项目开源,社区活跃,Java 语言性能好和跨平台。
说下缺点,我目前发现的有:
所以国内已经有余力的公司(阿里)是在改造 Jmeter,就是取其精华去其糟粕了。
平台根据前端的操作,自动拼接出一行可执行的命令,然后在指定服务器上执行这段脚本。
相当于是手工敲的命令平台帮着拼接和回车执行了。
即便是前端来生成测试脚本,也可以先保存成 jmx 文件,再脚本执行。
特点是平台和 Jmeter_Home 完全分离,带来的:
平台代码直接调用 Jmeter 的 API。
相对脚本执行的实现:
对比脚本执行的好处:
我的平台两种方式都支持,当然推荐是引用 Jmeter 的 API 方式启动,可配置。
最最基本的要求了。
如果没有在线实时监控,那和 Jmeter 自身的脚本压测甚至和 AB 等工具,就没啥区别了。
Jmeter 3 开始支持测试报告,这也是选择 Jmeter 的原因之一。
即云压测的基础。
权限管理是平台面向全公司/全网的基础。
压测需要和具体业务有关系,这个关系在平台上要可以设置。
图形监控的功能要非常丰富,比如放大缩小等。
删除是让系统文件空间可控。下载是移动办公的基础。
分布式压测的衍生需求,有了分布式节点管理,能大大减轻手工操作。同时各种提示非常人性化。
这曾经是我比较纠结的地方。
还有很多很多。
阿里的 PTS 是让在平台上写脚本代码实现最核心的功能包括断言,然后页面录入压测指标数据。
这样做如果遇到复杂的性能测试要求,问题很大:
所以我的选择很简单,上传 Jmeter 的脚本,同时上传参数化文件。
好处不说了,详细的后续会介绍。
简单来说,就是平台可以实时监控到服务器的网卡,CPU,内存,磁盘,甚至日志等等。
我放弃的原因:
其实这个话题很大,比如监控到什么程度才算合格,能否做到智能化监控与测试报告的连接,服务器指标数据和服务器日志的结合展示分析等等。
在没想好怎么做之前,我的选择是抛弃这部分需求,做不好不如不做。
平台我一直在深度使用,挺好用。
平台代码当前也比较稳定。
平台创造压力的能力和 Jmeter 的内核相同,无论是单机还是分布式,同样的支持 Grafana+InfluxDB。
后续我会慢慢介绍这个平台,当然也可以直接看我的代码,我自认为代码注释,结构等,还是很清晰的。
基于 Jmeter 的轻量级云压测平台的原理与实现 (二):压测引擎