Locust类
每生成一个实例都代表一个虚拟的用户,用来发送请求到进行负载测试的系统。
该用户的行为由task_set属性定义,该属性应指向一个 TaskSet类。
1、这个类通常应该由某些类继承并且重新定义。例如,当测试HTTP系统时,使用的HttpLocust类。
2、安装locust库:pip install locust
3、使用以下代码,建立.py文件,名称为:locust_demo.py
from locust import HttpLocust, TaskSet, task #调用库里的包
class UserBehavior(TaskSet): # 建立链接启动服务 , 指向TaskSet类,定义了locust的执行行为
@task
def baidu_page(self):
self.client.get("/")
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 3000 # 执行locust任务之间的最短等待时间,单位是毫秒
max_wait = 6000 # 执行locust任务之间的最长等待时间,单位是毫秒
4、cmd命令:locust -f locust.py --host=http://www.baidu.com
ps:启动成功,端口号是8089
附locust命令详解
-h, --help 查看帮助
-H HOST, --host=HOST 指定被测试的主机,采用以格式:http://10.21.32.33
--web-host=WEB_HOST 指定运行 Locust Web 页面的主机,默认为空 ''。
-P PORT, --port=PORT, --web-port=PORT 指定 --web-host 的端口,默认是8089
-f LOCUSTFILE, --locustfile=LOCUSTFILE 指定运行 Locust 性能测试文件,默认为: locustfile.py
--csv=CSVFILEBASE, --csv-base-name=CSVFILEBASE 以CSV格式存储当前请求测试数据。
--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 节点。
--master-bind-host=MASTER_BIND_HOST Interfaces (hostname, ip) that locust master should bind to. Only used when running with --master. Defaults to * (all available interfaces).
--master-bind-port=MASTER_BIND_PORT Port that locust master should bind to. Only used when running with --master. Defaults to 5557. Note that Locust will also use this port + 1, so by default the master node will bind to 5557 and 5558.
--expect-slaves=EXPECT_SLAVES How many slaves master should expect to connect before starting the test (only when --no-web used).
--no-web no-web 模式运行测试,需要 -c 和 -r 配合使用.
-c 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 只打印摘要统计
--no-reset-stats Do not reset statistics once hatching has been completed。
-l, --list 显示测试类, 配置 -f 参数使用
--show-task-ratio 打印 locust 测试类的任务执行比例,配合 -f 参数使用.
--show-task-ratio-json 以 json 格式打印 locust 测试类的任务执行比例,配合 -f 参数使用.
-V, --version 查看当前 Locust 工具的版本.
5、在浏览器地址输入: http://localhost:8089/,进入locust页面,如图
ps: Number of users to simulate 设置虚拟用户数,
Hatch rate(users spawned/second)每秒产生(启动)的虚拟用户数
点击Start swarming 按钮,开始运行性能测试
6、设置用户数10,每秒产生启动的虚拟用户数为2,点击start swarming(statistics统计页面)
上图:启动了一个 master 和两个 slave,由两个 slave 来向被测试系统发送请求
RPS
和平均响应时间
这两个指标显示的值都是根据最近2秒请求响应数据计算得到的统计值,我们也可以理解为瞬时值。
性能测试参数
- Type: 请求的类型,例如GET/POST。
- Name:请求的路径。这里为百度首页,即:https://www.baidu.com/
- request:当前请求的数量。
- fails:当前请求失败的数量。
- Median:中间值,单位毫秒,一半的服务器响应时间低于该值,而另一半高于该值。
- Average:平均值,单位毫秒,所有请求的平均响应时间。
- Min:请求的最小服务器响应时间,单位毫秒。
- Max:请求的最大服务器响应时间,单位毫秒。
- Content Size:单个请求的大小,单位字节。
- reqs/sec:是每秒钟请求的个数。
相比于LoadRunner,Locust的结果展示十分简单,主要就四个指标:并发数、RPS、响应时间、异常率。但对于大多数场景来说,这几个指标已经足够了。
7、Charts栏,展示性能指数
ps:download data下载 Download request statistics CSV
Download response time stats history CSV
部分资料转载至https://www.cnblogs.com/ailiailan/p/9474973.html,有需要的朋友可以点击详细查看