locust基础使用

本文介绍了Locust,一个基于事件驱动的Python分布式负载测试工具,重点讲解了其特点、安装步骤、基本使用方法以及比较优缺点。通过实例演示了如何编写和运行Locust脚本,对测试结果进行了分析和报告下载的指导。
摘要由CSDN通过智能技术生成

一、了解locust

1、简介

Locust(俗称 蝗虫), 是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在自己的进程内运行)。【轻量级的开源压测工具,可用Python编写】

2、特点

①、不需要编写笨重的UI或者臃肿的XML代码,基于协程而不是回调,脚本编写简单易读;

②、有一个基于we简洁的HTML+JS的UI用户界面,可以实时显示相关的测试结果;

③、支持分布式测试,用户界面基于网络,因此具有跨平台且易于扩展的特点;

④、所有繁琐的I / O和协同程序都被委托给gevent,替代其他工具的局限性;

3、比较

在这里插入图片描述

总结:

得分项:单机并发能力高,支持Python语言,开源免费

掉分项:不支持资源监控,报告异常简单

二、简单使用locust

以下操作基于window系统下使用locust对百度个人设置接口(http协议)进行调试,了解locust的基本使用方法。需提前配置Python运行环境,locust支持的python版本:2.7、3.4、3.5、3.6、3.7和3.8;

1、Windows系统安装locust

有两种方法:

①、通过命令安装:pip install locustio

②、通过为pyzmq、gevent和greenlet安装预先构建的二进制包,然后在找到非官方的预制包,下载.whl文件后,使用 pip install name-of-file.whl 命令安装

安装成功后可以输入 pip show locust 命令查看是否安装成功,以及通过 locust -help 命令查看帮助信息。

注意: 可在Windows上调试测试脚本。在运行大规模测试时,建议在Linux机器上这样做,因为gevent在Windows下的性能很差。

2、编写一个Locust文件

文件名符合规范即可,如basic.py,示例如下
basic.py文件下载:basic.py
在这里插入图片描述

脚本解读:

创建myTasks()类继承TaskSet类: 用于定义测试业务。
创建index()方法分别表示行为,访问http://baidu.com。用@task() 装饰该方法为一个任务。
WebsiteUser()类: 用于定义模拟用户。
task_set : 指向一个定义了的用户行为类。
host: 指定被测试应用的URL的地址
min_wait : 用户执行任务之间等待时间的下界,单位:毫秒。
max_wait : 用户执行任务之间等待时间的上界,单位:毫秒。

脚本使用场景解读:

在这个示例中,定义了针对 http://baidu.com 网站的测试场景:访问个人设置页(/my/index),index方法主要用来阐述client对get接口的处理方式(post接口使用类似);并且,在测试过程中,两次请求的间隔时间为0.1->5秒间的随机值。

从脚本中可以看出,脚本主要包含两个类,一个是WebsiteUser(继承自HttpUser,而HttpUsert继承自Locust),另一个是myTasks(继承自TaskSet)。事实上,在Locust的测试脚本中,所有业务测试场景都是在Locust和TaskSet两个类的继承子类中进行描的。

简单地说,Locust类就好比是一群蝗虫,而每一只蝗虫就是一个类的实例。相应的,TaskSet类就好比是蝗虫的大脑,控制着蝗虫的具体行为,即实际业务场景测试对应的任务集。

3、运行Locust文件

locust -f basic.py (在存放文件的目录下执行)
在这里插入图片描述

或者在主函数中写执行
在这里插入图片描述

4、进入web操作界面

如果是本地启动,可以直接在浏览器输入 localhost:8089 打开UI界面,如果是其他机器搭建locust服务,则输入该机器的IP+端口即可;
在这里插入图片描述

参数说明如下:

Number of users to simulate:设置模拟的用户总数

Hatch rate (users spawned/second):每秒启动的虚拟用户数

Start swarming:执行locust脚本

5、查看执行结果

PS:点击STOP可以停止locust脚本运行

Statistics页面:类似于jmeter中Listen的聚合报告
在这里插入图片描述

参数说明如下:

Type:请求类型,即接口的请求方法;

Name:请求路径;

requests:当前已完成的请求数量;

fails:当前失败的数量;

Median:响应时间的中间值,即50%的响应时间在这个数值范围内,单位为毫秒;

Average:平均响应时间,单位为毫秒;

Min:最小响应时间,单位为毫秒;

Max:最大响应时间,单位为毫秒;

Content Size:所有请求的数据量,单位为字节;

reqs/sec:每秒钟处理请求的数量,即QPS;

ps: 停止后点击New test可对模拟的总虚拟用户数和每秒启动的虚拟用户数进行编辑;
在这里插入图片描述

Charts页面:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟用户数;
在这里插入图片描述

Failures页面:失败请求的展示界面;
在这里插入图片描述
Exceptions页面:异常请求的展示界面;
在这里插入图片描述

Download Data页面:测试数据及结果下载模块
在这里插入图片描述

6、下载报告

Download Data页面提供三种类型的CSV格式的下载,分别是:request statistics、failures、exceptions;以及一种HTML格式的报告下载。

Request statistics报告(示例)
在这里插入图片描述

7、参数说明

-h,

查看帮助

-V, --version

查看当前 Locust 工具的版本.

–host=HOST

指定被测试的主机,采用以格式:http://10.21.32.33

–web-host=WEB_HOST

指定运行 Locust Web 页面的主机,默认为空 ‘’。

–port=PORT, --web-port=PORT

指定 --web-host 的端口,默认是8089

-f LOCUSTFILE,或–locustfile=LOCUSTFILE

指定运行 Locust 性能测试文件,默认为: locustfile.py

–csv=CSVFILEBASE, --csv-base-name=CSVFILEBASE

以CSV格式存储当前请求测试数据。

–headless

禁用web界面,开始测试

–master

Locust 分布式模式使用,当前节点为 master 节点。

–slave

Locust 分布式模式使用,当前节点为 slave 节点。

–master-host=MASTER_HOST

分布式模式运行,设置 master 节点的主机或 IP 地址,只在与 --slave 节点一起运行时使用,默认为:127.0.0.1.

–master-port=MASTER_PORT

分布式模式运行, 设置 master 节点的端口号,只在与 --slave 节点一起运行时使用,默认为:5557。注意,slave 节点也将连接到这个端口+1 上的 master 节点。

–no-web

no-web 模式运行测试,需要 -c 和 -r 配合使用.

-c (-u)NUM_CLIENTS, --clients=NUM_CLIENTS

指定并发用户数,作用于 --no-web 模式。

-r HATCH_RATE, --hatch-rate=HATCH_RATE

指定每秒启动的用户数,作用于 --no-web 模式。

-t RUN_TIME, --run-time=RUN_TIME

设置运行时间, 例如: (300s, 20m, 3h, 1h30m). 作用于 --no-web 模式。

-L LOGLEVEL, --loglevel=LOGLEVEL

选择 log 级别(DEBUG/INFO/WARNING/ERROR/CRITICAL). 默认是 INFO.

–logfile=LOGFILE

日志文件路径。如果没有设置,日志将去 stdout/stderr

–print-stats

在控制台中打印数据

–only-summary

只打印摘要统计

–show-task-ratio

打印 locust 测试类的任务执行比例,配合 -f 参数使用.

–show-task-ratio-json

以 json 格式打印 locust 测试类的任务执行比例,配合 -f 参数使用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值