一、Locust介绍:
Locust是一款高性能的负载测试工具,完全基于事件,可在一个进程中支持大量并发用户。但是可视化ui界面相对简单切功能较少。
另外,Locust目前发展较快,存在严重的版本兼容问题。很多几个月前的实例代码已经不支持目前最新版本。
Locust和jmeter的区别 | |
Locust | 通过编写代码来完成测试脚本,通过gevent,单台负载机可模拟的负载数远超jmeter。 |
jmeter | 需要在ui界面上通过选择组来“编写”脚本,单台负载机可模拟的负载数量有限。 |
二、安装
1、通过pip install locust 命令安装。很多资料里介绍通过“pip install locustio”来安装,现已不支持。
2、可以通过“pip show locust”命令来查看是否安装成功,通过“locust -help”命令来查看帮助信息。
3、由于Locust基于gevent,而gevent在windows中性能很差,所以建议在Linux系统安装。
三、简单运行demo
# 现版本已经不用HttpLocust
from locust import HttpLocust,TaskSet,task,HttpUser# 期望要做的业务
class Discuz_Task(HttpUser):@task(1)def index(self):self.client.get("http://www.baidu.com")# 模拟一个用户
class Discuz_Locust(TaskSet):task_set = Discuz_Task# 为了让请求更像是人为操作,所以设置一个随机等待时间min_wait=1000max_wait=3000
使用“locust -f XXXX.py”来运行程序。
运行此程序之后,用浏览器打开“locust:8089”,既可以看到Locust自带ui操作界面
点击“Start swarming”,可以看到测试页面如下。
各模块说明:
New test:点击该按钮可对模拟的总虚拟用户数和每秒启动的虚拟用户数进行编辑;
Statistics:类似于jmeter中Listen的聚合报告;
Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟用户数;
Failures:失败请求的展示界面;
Exceptions:异常请求的展示界面;
Download Data:测试数据下载模块, 提供三种类型的CSV格式的下载,分别是:Statistics、responsetime、exceptions;