谈到性能测试工具,我们首先想到的是 LoadRunner 或 JMeter。 LoadRunner 是非常有名的商业性能测试工具,功能非常强大。但现在一般不推荐使用该工具来进行性能测试,主要是使用也较为复杂,而且该工具体积比较大,需要付费且价格不便宜。
JMeter 同样是非常有名的开源性能测试工具,功能也很完善,我们之前介绍了它作为接口测试工具的使用。
Locust 同样是性能测试工具,虽然官方这样来描述它:“An open source load testing tool.”,但它和前面两个
工具有一些不同。
Locust 简介
Locust 完全基于 Python 编程语言,采用纯 Python 描述测试脚本,并且 HTTP 请求完全基于 Requests 库。除了 HTTP/HTTPS 协议外,Locust 还可以测试其他协议的系统,只需采用 Python 调用对应的库进行请求描述即可。 LoadRunner 和 JMeter 这类采用进程和线程的测试工具,都很难在单机上模拟出较高的并发压力。Locust 的并发机制摒弃了进程和线程,采用协程(gevent)的机制。协程避免了系统级资源调度,因此可以大幅提高单机的并发能力。
下载安装
pip install locustio
安装完成之后检测是否安装成功:
C:\Users\Shuqing>locust -help
Usage: locust [options] [LocustClass [LocustClass2 ... ]]
Options: | |
-h, --help | show this help message and exit |
-H HOST, --host=HOST | Host to load test in the following format: |
http://10.21.32.33 | |
--web-host=WEB_HOST | Host to bind the web interface to. Defaults to '' (all |
interfaces) | |
-P PORT, --port=PORT, --web-port=PORT
Port on which to run web host
-f LOCUSTFILE, --locustfile=LOCUSTFILE
Python module file to import, e.g. '../other.py'.
Default: locustfile
....
测试案例
测试场景
针对如下两个接口进行性能测试:
http://127.0.0.1:8000/users/
http://127.0.0.1:8000/groups/
以上两个接口也就是我们之前项目 django_restful 的接口负载场景
• 每秒生成 2 个用户,总共生成 60 个用户。
• 负载测试 5 分钟然后查看接口的平均响应时间。
• Number of users to simulate:设置模拟用户数。
• Hatch rate(users spawned/second):每秒产生(启动)的虚拟用户数。
• 单击“Start swarming”按钮,开始运行性能测试