locust的安装和基本使用
一、认识locust
官方文档:https://docs.locust.io/en/stable/index.html
1、定义
locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在自己的进程内运行)。
PS:运行大规模测试时,建议在Linux机器上执行此操作,因为gevent在Windows下的性能很差。
2、特点
◆ 使用Python
△ 使用代码来创建批量用户
◆ 分布式
△ 可以在多台服务器上,进行分布式性能测试
△ 可伸缩性强
◆ 稳定、应用广泛
△ 经得住各种场景下的考验
△ 基于web ui界面展示测试详情
△ 能测服务器/云服务器中的任何系统
二、基础操作
1、安装locust
◆ 使用官方pypi源来安装
pip install locust
◆ 使用豆瓣pypi源来安装(推荐)
pip install -i https://pypi.douban.com/simple locust
在cmd输入命令:
locust --version
显示上图,即安装完成
可以通过再cmd控制台输入如下命令查看帮助信息:
locust --help
2、基本用法
打开pycharm,新建一个项目,在项目根目录下创建locustfile.py文件
from locust import User, task
class MyTasks(User):
'''
创建测试任务类,需要继承User父类
用于定义测试任务,可以添加多个测试任务
'''
# 每个测试任务,以实例方法的形式来呈现
# 同时需要使用task装饰器来装饰测试任务,装饰器的数字代表locust实例被挑选执行的权重,数值越大,执行频率越高
@task(1)
def first_task(self):
print('执行第一个测试任务')
@task(2)
def second_task(self):
print('执行第二个测试任务')
class RunTasks(User):
'''
创建运行测试类,需要继承User父类
'''
user = MyTasks # 指定一个定义测试任务的类
host = "http://example.com" # 指定被测试应用的URL的地址
min_wait = 2000 # 指定启动任务间隔的时间范围(单位毫秒),2-5秒之间
max_wait = 5000 # 使用min_wait、max_wait覆盖父类的类属性
# PS:默认情况下,时间是在min_wait和max_wait之间随机选择,但是可以通过将wait_function设置为任意函数来使用任何用户定义的时间分布。
3、启动locust
打开pycharm Terminal控制台,运行命令:
输入locust命令默认运行文件名为locustfile.py
locust
若文件名不为locustfile.py,可以输入locust -f 指定文件名,示例如下:
locust -f one_example.py
运行后,控制台会显示如下信息:
PS:显示8089为该服务启动的端口号,如果是本地启动,可以直接在浏览器输入http://localhost:8089打开ui界面,如果是其他机器搭建服务,则输入该机器的ip+端口即可
在浏览器中打开UI设置界面
Number of users to simulate:设置模拟的用户总数
Hatch rate (users spawned/second):每秒启动的虚拟用户数
Host: 设置主机名
Start swarming:执行locust脚本
测试结果界面
Type:请求类型,即接口的请求方法;
Name:请求路径;
requests:当前已完成的请求数量;
fails:当前失败的数量;
Median:响应时间的中间值,即50%的响应时间在这个数值范围内,单位为毫秒;
Average:平均响应时间,单位为毫秒;
Min:最小响应时间,单位为毫秒;
Max:最大响应时间,单位为毫秒;
Average Size:平均请求的数据量,单位为字节;
Current RPS:最近的吞吐率;
各模块说明
Statistics:类似于jmeter中的聚合报告;
Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟用户数;
Failures:失败请求的展示界面;
Exceptions:异常请求的展示界面;
Download Data:测试数据下载模块;
睿江云官网链接:www.eflycloud.com