Locust 负载测试工具使用教程
《Locust 负载测试工具使用教程》
下面为你详细介绍 Locust 的使用教程,包含基础概念、安装、编写测试脚本以及执行测试等方面。
一、Locust 简介
Locust 是一款用 Python 编写的开源负载测试工具,其最大特点是支持分布式测试。它采用事件驱动的方式,在单台机器上能够模拟数千甚至上万的并发用户。和传统基于线程的工具相比,Locust 资源消耗更低,扩展性更强。
二、安装 Locust
要安装 Locust,只需使用 pip 命令即可:
pip install locust |
安装完成后,可以通过下面的命令来验证是否安装成功:
locust --version |
三、基础使用
下面是一个简单的 Locust 测试脚本示例:
from locust import HttpUser, task, between class QuickstartUser(HttpUser): # 设置用户执行任务之间的等待时间 wait_time = between(1, 2) @task def hello_world(self): # 发送 GET 请求 self.client.get("/hello") self.client.get("/world") @task(3) def view_item(self): # 发送带参数的请求 for item_id in range(10): self.client.get(f"/item?id={item_id}", name="/item") def on_start(self): # 用户启动时执行,可用于登录等操作 self.client.post("/login", json={"username":"foo", "password":"bar"}) |
四、运行测试
编写好测试脚本(保存为 locustfile.py)后,可按以下方式运行:
locust -f locustfile.py --host=http://example.com |
运行后,打开浏览器访问 http://localhost:8089,会看到 Locust 的 Web 界面。在该界面中:
- 填入要模拟的用户数量和每秒启动的用户数
- 点击 "Start swarming" 按钮开始测试
五、分布式测试
对于大规模测试,需要进行分布式部署。操作步骤如下:
主节点:
locust -f locustfile.py --master --host=http://example.com |
工作节点:
locust -f locustfile.py --worker --master-host=192.168.0.100 |
这里的 --master-host 要设置为主节点的 IP 地址。
六、测试结果分析
测试过程中,Locust Web 界面会实时显示以下信息:
- 请求的响应时间(平均、最小、最大)
- 请求成功率
- 每秒请求数
- 当前活跃用户数
测试完成后,可以下载 CSV 格式的报告进行更深入的分析。
七、高级特性
- 权重分配:
@task(3) # 该任务的执行频率是其他任务的 3 倍 def frequent_task(self): pass |
- 事件钩子:
from locust import events @events.test_start.add_listener def on_test_start(environment, **kwargs): print("A new test is starting") @events.test_stop.add_listener def on_test_stop(environment, **kwargs): print("A test is ending") |
- 自定义客户端:
from locust import User, task class MyCustomUser(User): abstract = True # 确保 Locust 不会实例化这个类 def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.client = MyCustomClient() |
- 命令行参数:
locust -f locustfile.py --headless -u 1000 -r 100 --run-time 1h30m |
其中:
- --headless 表示无头模式运行
- -u 表示用户数
- -r 表示每秒启动的用户数
- --run-time 表示测试运行时间
八、最佳实践
- 测试数据要使用随机生成的方式,避免服务器缓存对测试结果产生影响。
- 从小规模测试开始,逐步增加负载。
- 对测试环境的资源使用情况进行监控。
- 采用断言来验证响应内容的正确性。
- 定期对测试脚本进行维护和更新。
九、常见问题及解决方法
- 性能瓶颈:可以尝试使用分布式模式或者优化测试脚本。
- 连接错误:检查目标服务器的连接限制和防火墙设置。
- 内存泄漏:避免在测试过程中累积过多的数据。
通过上述内容,你可以全面了解 Locust 的使用方法。如果有具体的使用场景,可以进一步探讨如何优化测试脚本。