文章目录
开始Locust的web界面直接使用命令行 / headless更多选项下一步开始
一个Locust测试用例本质上就是一个python程序。这使得它非常灵活,特别适合实现复杂的用户流。但它也可以做简单的测试,让我们从这个程序开始:
from locust import HttpUser, taskclass HelloWorldUser(HttpUser):@taskdef hello_world(self):self.client.get("/hello")self.client.get("/world")
上述代码定义了该用户一次又一次的进行/hello和/world的HTTP请求。有关完整的解释和更实际的例子参考locust脚本编写。
将上述代码保存在当前目录下的locustfile.py中,并在当前目录下运行locust指令:
$locust[-11-23 16:35:23,401] .../INFO/locust.main: Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces)[-11-23 16:35:23,403] .../INFO/locust.main: Starting Locust 2.13.0
Locust的web界面
一旦启动了Locust,打开一个浏览器窗口输入http://localhost:8089。你将会看见下图的界面:
将测试指向你自己的web服务器并进行测试!
下面的屏幕截图显示了使用40个并发用户运行该测试时的情况,ramp-up rate为0.5用户/秒,即Spawn Rate的值为20。
在【Charts】选项卡中,可以看到每秒请求数(RPS)等信息:
响应时间(毫秒):
用户数量:
批注
解释性能测试结果非常复杂(并且大部分超出了本手册的范围),但如果你的图形结果开始看起来像这样,最可能的原因是你的目标服务/系统无法处理您正在处理的负载(它过载或“饱和”)。
最明显的迹象是,当我们达到大约9个用户时,响应时间开始快速增长,以至于每秒请求的数量停止增长,尽管仍在增加新用户。
如果需要一些关于如何开始挖掘服务器端问题的指导,或者你在生成足够的负载以使系统饱和方面遇到困难,请查看Locust常见问题解答。
直接使用命令行 / headless
Locust web UI界面的使用是可选项。你也可以在命令行上提供加载参数,并以文本形式获取结果报告结果:
$locust --headless --users 10 --spawn-rate 1 -H http://your-[-11-23 16:41:10,947] .../INFO/locust.main: No run time limit set, use CTRL+C to interrupt.[-11-23 16:41:10,947] .../INFO/locust.main: Starting Locust 2.13.0[-11-23 16:41:10,949] .../INFO/locust.runners: Ramping to 10 users using a 1.00 spawn rateName # reqs# fails |AvgMinMax Median | req/s failures/s----------------------------------------------------------------------------------------------GET /hello 10(0.00%) |115115115115 | 0.00 0.00GET /world 10(0.00%) |119119119119 | 0.00 0.00----------------------------------------------------------------------------------------------Aggregated 20(0.00%) |117115119117 | 0.00 0.00[-11-23 16:44:42,484] .../INFO/locust.runners: All users spawned: {"HelloWorldUser": 10} (10 total users)
参考无Web UI运行章节获取更多详情。
更多选项
要在多个Python进程或机器上运行Locust,可以使用–master命令行参数启动一个Locust主进程,然后使用–worker命令行参数来启动任意数量的Locust工作进程。有关详细信息,请参阅分布式负载生成。
要查看所有可用选项,请输入:locust --help
或查看Configuration章节。
下一步
现在,让我们更深入地了解一下locustfiles以及它们可以做什么:编写locustfile。