性能测试三--Locust基础入门

Locust基础入门

官网:https://www.locust.io/
官方使用文档:https://docs.locust.io/en/latest/

1 下载与安装

MAC安装

  • 本机python为2.X版本,终端执行:pip install locust
  • 本机python为3.X版本,终端执行:pip3 install locust

安装成功之后会看到:

Successfully installed ConfigArgParse-1.5.3 Flask-BasicAuth-0.2.0 Flask-Cors-3.0.10 Jinja2-3.0.3 Werkzeug-2.0.2 brotli-1.0.9 flask-2.0.2 gevent-21.8.0 geventhttpclient-1.5.3 greenlet-1.1.2 itsdangerous-2.0.1 locust-2.5.0 msgpack-1.0.2 psutil-5.8.0 pyzmq-22.3.0 roundrobin-0.0.2 typing-extensions-3.10.0.2 zope.event-4.5.0 zope.interface-5.4.0

这是locust需要用到的一些库,如果本地没有安装,安装locust时会自动帮忙安装对应版本。

2 基础步骤

2.1 编写简易python脚本文件

在当前目录下(即安装locust的目录),新建一个名为locustfile.py的文件,代码如下:

from locust
import HttpUser, task

class HelloWorldUser(HttpUser):
    @task
    def hello_world(self):
        self.client.get("/hello")
        self.client.get("/world")

2.2 启动Locust

2.2.1 简易启动方式:

终端输入:locust

启动locust

如上图所示,则表示启动成功!

2.2.2 其他启动方式

命令行单机模式启动 locust.py 可以随意命名
locust -f locust.py --host=https://test.com
命令行分布式模式启动
locust -f locust.py --host=https://test.com --master
locust -f locust.py --host=https://test.com --slave --master-host=192.168.1.1
非web模式
locust -f main.py -H http://test.cn --csv=report --no-web -c1000 -r 200 --run-time 60 # 执行60秒,每秒增加200个用户.直到1000个用户

2.3 Locust网页界面操作和执行

2.3.1 打开Locust网页

启动 Locust 后,打开浏览器并将其指向http://localhost:8089(启动locust时终端中展示的),将会看到如下页面:

Locust网页

2.3.2 执行测试

设置图中表格中所需数据,开始执行!

下图展示的是当以 1 个用户/秒的上升速度运行针对 40 个并发用户的测试时的效果

运行中

2.3.3 查看结果

  1. 整体统计数字
综合统计结果

上图中展示的性能测试参数:

  • Type: 请求的类型,例如GET/POST。

  • Name:请求的路径。

  • Requests:当前请求的数量。

  • Fails:当前请求失败的数量。

  • Median:中间值,单位毫秒,一半的服务器响应时间低于该值,而另一半高于该值。

  • 90%ile:90%的请求时间。

  • Average:平均值,单位毫秒,所有请求的平均响应时间。

  • Min:请求的最小服务器响应时间,单位毫秒。

  • Max:请求的最大服务器响应时间,单位毫秒。

  • Average size:平均请求的大小,单位字节。

  • RPS:是每秒钟请求的个数。

  • Current Failures:瞬时每秒失败数。

  1. 各种表格
  • RPS
RPS
  • 响应时间
响应时间
  • 用户数
用户数

2.4 其他补充

2.4.1 数据准备

Locust 没有像 jmeter 那样的 csv 读取器,使用函数生成随机数等功能,所有的数据准备,读取都需要自行代码的实现。数据可以通过 list,dict 等 python 数据类型进行存储,如果是使用 excel 或者 csv 等格式的数据,需要自行编写读取数据,循环数据的代码。

2.4.2 接口请求

Locust 接口的请求基于 requests 库实现,可以通过调用 client.post,client.get 等方法实现,通过 headers,data 入参进行接口参数的传递和使用 requests 库的方法相似,但代码中需要使用 client.post 的方法而不是 requests.post。

2.4.3 断言

Locust 没有像 jmeter 那样的响应断言的检查插件,所有的逻辑校验需要自行进行响应体 json 格式的解析,然后判断并调用 response.failure 方法进行设置具体的输出信息,该方法是 locust 自带方法,设置后就可以在页面的 failures tab 中查看具体日志。

2.4.4 资源监控

Locust 需要使用第三方的软件进行监控,一般可以使用 nmon,或者 Granfana 等。

你可能感兴趣的:(性能测试三--Locust基础入门)