vlambda博客
学习文章列表

我为什么选择Locust性能测试工具

最近一直在GCP平台上做一些性能测试任务。也一直在思考,到底应该使用什么样的压测工具才是适合的,毕竟“工欲善其事,必先利其器”。
本来在性能测试中使用的工具是JMeter,JMeter是一款免费的利用pure Java编写的压测工具,它本身功能和周边扩展还是比较强大的。在免费软件领域使用的范围很广,包括扩展插件等,整个生态还是比较好的。但是还是那句话,适合自己的才是最好的。由于是在GCP上测试,而测试环境(包括测试机器)也必须搭建在此云平台上,那么有个问题是,稳定性和费用问题。至少对于我来说是这样。比如我申请了一个16GB的VM,但是最终发现单台JMeter slave 节点能模拟的用户数还是不能另人满意。而且偶尔也有稳定性问题,如某个节点会有不规律的JMeter相关进程异常退出问题。还有一个问题,就是JMeter在真正进行高并发性能测试时,是很吃内存的。这就又涉及到了费用问题,很多时候这也是要考虑的因素之一。
结合实际的需要,最后评估发现工具Locust更适合项目的性能测试需要。主要基于以下几点:
  1. 资源(如内存)占用少。这个是Locust比较显著的优势。

  2. "Test as code", 针对这个特性,Locust是可以使用Python进行场景模拟的,所以在脚本实现上比较灵活。但是反过来说,使用Locust要有一定的Python编程基础。

  3. 云平台集成分布式测试。如果后期需要把本地(或项目环境)的分布式测试环境搭建在云平台的分布式测试上,那么就需要考虑一个通用性的问题了,如下图,利用GCP平台,结合K8S可以像搭建一个产品框架一样搭建一个性能测试平台。GCP官方对此是支持的。


后期也会分享在使用中遇到的问题和解决方式。
注解:需要说明的几点:
  • 如果项目安排比较紧急,可能对新工具的引入不利。

  • 如果不了解Python编程的基础等,可能会有更多的学习成本,需要考量。

  • 如果项目使用的协议非HTTP,那么可以暂时先不要考虑Locust的了。比如H5页面(web socket)协议等。