一、locust是什么?
一个支持分布式架构的测试工具,能够很轻松的编写测试脚本,完成网站的并发性能测试。
官方网站(Locust - A modern load testing framework),里面有详细的使用介绍。
二、部署
(一)环境要求:Python 3.6以上,支持Win、Mac、Linux
(二)安装步骤(Win环境):
1.官网下载Pyhton的最新版本,完成安装。
2.使用 pip3 install locust 安装。如果在命令行提示无此命令,请检查Python的环境变量设置。将 Python/ 和 Python/Scripts/ 添加到 Path 变量下,或者直接到Python的Scrips/目录下开个命令行窗口运行。
C:\> pip3 install locustpip3 install locust
3.在命令行输入 locust -V检查版本,出来版本说明安装成功。
C:\>locust -V
locust 2.2.1
参数输入错误的情况下会提示找不到 locustfile ,也是已经安装好了。
C:\>locust
Could not find any locustfile! Ensure file ends in '.py' and see --help for available options.
三、测试
(一)测试脚本编写
locust的测试脚本,以官方的HelloWorld为例。可以参考Writing a locustfile — Locust 2.2.1 documentation。
import time
from locust import HttpUser, task, between
from locust import events
from locust.runners import MasterRunner, WorkerRunner
class QuickstartUser(HttpUser):
wait_time = between(1, 5)
@task
def hello_world(self):
self.client.get("/hello")
self.client.get("/world")
@task(3)
def view_items(self):
for item_id in range(10):
self.client.get(f"/item?id={item_id}", name="/item")
time.sleep(1)
def on_start(self):
self.client.post("/login", json={"username":"foo", "password":"bar"})
QuickstartUser类定义了网站的访问行为。
@task:定义网站的访问操作,后面的 () 内可以设置权重占比。
例如网站有80%的比例是GET方式访问,20%的比例是POST,就可以分别写成@task(80)和@task(20)。
self.client.get(""):HTTP的请求方式,支持GET、POST、PUT等等。(“”)里写网页的路径,需要注意的是,如果这里加了“/”,在写HOST时结尾就不要加“/”,否则会导致目录错误,影响测试结果。
分布式测试:
from locust import events
from locust.runners import MasterRunner, WorkerRunner
在做分布式测试时需要增加上述两行内容。
(二)运行测试脚本
1.单机运行
locust -f 指定测试脚本。
C:\> locust -f .\helloworld.py
[2021-09-07 09:47:16,734] DESKTOP-9R9O2EC/INFO/locust.main: Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces)
[2021-09-07 09:47:16,851] DESKTOP-9R9O2EC/INFO/locust.main: Starting Locust 2.2.1
出现上述字段说明locust已经正常运行,在浏览器输入http://localhost:8089打开UI界面。
不知道是什么原因,只有localhost能打开,其他的无论是具体ip还是127.0.0.1都不行。

指定最大用户量1000,用户每秒增长100个,测试域名要带协议,注意结尾有没有反斜杠"/"。点击开始以后开始按照测试脚本进行压测。

测试结果也可以展示RPS,提供数据图,并能够到处测试报表。
2.分布式测试
分为master和worker角色,可以在多台worker上分布式测试,结果汇总到master上。注意测试脚本需要一致。
master角色:
C:\> locust -f .\helloworld.py --master
worker角色:
C:\> locust -f .\helloworld.py --worker --master-host=x.x.x.x
x.x.x.x为master的ip地址,默认端口是5557,可以通过--master-port=xx指定其他端口。
Locust是一个现代的负载测试工具,支持分布式测试,适用于Python 3.6以上环境。本文介绍了Locust的安装、测试脚本编写以及如何进行单机和分布式测试。在测试脚本中,通过@task定义不同操作的权重,利用self.client进行HTTP请求。在运行测试时,可以通过UI界面监控RPS等性能指标,并导出测试报告。

1321

被折叠的 条评论
为什么被折叠?



