最近一直在GCP平台上作一些性能测试任务。也一直在思考,到底应该使用什么样的压测工具才是适合的,毕竟“工欲善其事,必先利其器”。web
原本在性能测试中使用的工具是JMeter,JMeter是一款免费的利用pure Java编写的压测工具,它自己功能和周边扩展仍是比较强大的。在免费软件领域使用的范围很广,包括扩展插件等,整个生态仍是比较好的。可是仍是那句话,适合本身的才是最好的。因为是在GCP上测试,而测试环境(包括测试机器)也必须搭建在此云平台上,那么有个问题是,稳定性和费用问题。至少对于我来讲是这样。好比我申请了一个16GB的VM,可是最终发现单台JMeter slave 节点能模拟的用户数仍是不能另人满意。并且偶尔也有稳定性问题,如某个节点会有不规律的JMeter相关进程异常退出问题。还有一个问题,就是JMeter在真正进行高并发性能测试时,是很吃内存的。这就又涉及到了费用问题,不少时候这也是要考虑的因素之一。
结合实际的须要,最后评估发现工具Locust更适合项目的性能测试须要。主要基于如下几点:编程
资源(如内存)占用少。这个是Locust比较显著的优点。并发
"Test as code", 针对这个特性,Locust是可使用Python进行场景模拟的,因此在脚本实现上比较灵活。可是反过来讲,使用Locust要有必定的Python编程基础。app
云平台集成分布式测试。若是后期须要把本地(或项目环境)的分布式测试环境搭建在云平台的分布式测试上,那么就须要考虑一个通用性的问题了,以下图,利用GCP平台,结合K8S能够像搭建一个产品框架同样搭建一个性能测试平台。GCP官方对此是支持的。框架
注解:须要说明的几点:socket
若是项目安排比较紧急,可能对新工具的引入不利。分布式
若是不了解Python编程的基础等,可能会有更多的学习成本,须要考量。ide
若是项目使用的协议非HTTP,那么能够暂时先不要考虑Locust的了。好比H5页面(web socket)协议等。高并发