Locust 官方网站:https://www.locust.io/。

Locust 介绍

一个开源性能测试工具,使用 Python 代码来定义用户行为。用它可以模拟百万计的并发用户访问你的系统。

一、Locust 介绍

性能工具对比

目前我知道的性能工具有以下几类:针对jmeter、locust、wrk、loadrunner、Grinder常用的性能测试工具进行简单介绍和对比。首先,五者基本对比图:

一、Locust 介绍

LoadRunner:是非常有名的商业性能测试工具,功能非常强大。使用也比较复杂,目前大多介绍性能测试的书籍都以该工具为基础,甚至有些书整本都在介绍 LoadRunner 的使用。由于loadrunner为商业收费模式,对于公司级测试使用而言涉及到授权问题。
jmeter:同样采用线程并发机制,但其主要依靠增加线程数提高并发量,当单机模拟数以千计的并发用户时,对于CPU和内存的消耗比较大。
locust:是一个的简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试。locust使用python语言开发,测试资源消耗远远小于java语言开发的jmeter。且其支持分布式部署测试,能够轻松模拟百万级用户并发测试。
wrk:是轻量化的http性能测试工具,采用线程+网络异步IO模型,网络异步IO可以使得系统使用很少的线程模拟大量的网络连接以增大并发量、提高压力。
Grinder是一个基于Java开发的开源性性能测试框架,通过多个负载机进行分布式测试

性能工具LoadRunner优缺点

优点:
基于UI操作,容易上手。早期很流行,功能强大。

缺点:
安装包太大,装过旧版的还不能按照新版的,解决方案较麻烦;
 不开源,扩展性不高,收费贵。往后的方向肯定是客户端工具逐步向平台化发展,所以已经慢慢被替代了。

性能工具Jmeter优缺点

优点:
界面可视化操作,可以使用录制脚本方式对较为复杂的用户流建模,还可以创建断言来验证测试行为是否通过;
表格、图形、结果树等多类可视化数据分析和报告输出
支持http、ftp、tcp等多种协议类型测试;
④  支持分布式压力测试,但对于上万的用户并发测试需要多台测试机支持,资源要求比较大;
⑤  可以用于测试固定吞吐量下的系统性能,例如在100QPS(QPS:每秒查询率)下系统的响应时间和资源消耗;
缺点:
jmeter的GUI模式消耗资源较大,当需要测试高负载时,需要先使用GUI工具来生成XML测试计划,然后在非GUI模式下导入测试计划运行测试,并且关闭不需要的侦听器(收集数据与展示测量的组件),因为侦听器也会消耗掉本用于生成负载的大量资源。测试结束后后,需要将原始结果数据导入GUI以才能查看结果。

性能工具Locust优缺点

优点:
不同与jmeter使用线程数提高并发量,locust借助于协程实现对用户的模拟,相同物理资源(机器cpu、内存等)配置下locust能支持的并发用户数相比jmeter可以提升一个数量级;
②相比jmeter需要界面点击录制复杂场景的麻烦,locust只需用户使用python编写用户场景完成测试;
③不同与jmeter复杂的用户使用界面,locust的界面干净整洁,可以实时显示测试的相关细节(如发送请求数、失败数和当前发送请求速度等);
④locust虽然是面向web应用测试的,但是它可以用来测试几乎所有系统。给locust编写一个客户端,可以满足你所有的测试要求;

缺点:
locust测试结果输出不如jmeter的测试结果展示类型多

性能工具Wrk优缺点

优点:
操作简单、易于使用
高并发低消耗,安装部署简单

缺点:
wrk只支持http协议类型请求(如get、post等),但若是需要执行get之外的http类型请求需要使用者自行编写lua脚本;
②  只允许单机测试,不支持多机分布式压力测试,因此wrk适合性能基准测试,对于模拟上万的用户并发测试显得有点力不从心;
③  测试结果简单,无详细图表解析
 

相关文章: