1
写在前面:此文章在通过学习、实践网络资料写成,相关链接在文章结尾。

一、简介

1、locust是一种可用python编写脚本的开源压测工具(实质是由python下的一些库构成),可定义用户行为,模拟并发访问,从而观测系统的性能与瓶颈。

2、特点:
(1)完全基于python,且http请求完全基于Requests库;除了http/https协议,locust也可测试其他协议的系统,只需采用python调用对应的库进行请求描述即可;
(2)locust的并发机制摒弃了进程和线程,采用协程(gevent)机制,避免了系统级资源调度,可大幅提高单机的并发能力。

3、依赖的第三方的库:(在https://github.com/locustio/l... 中的setup.py下查看:install_requires=["gevent>=1.2.2", "flask>=0.10.1", "requests>=2.9.1", "msgpack-python>=0.4.2", "six>=1.10.0", "pyzmq>=16.0.2"])
(1)gevent是python中实现协程(微线程)的一个第三方库;
(2)flask是python的一个web开发框架;
(3)requests接口库是python下可用来做http接口测试的库;
(4)msgpack-python是一种快速紧凑二进制序列化结果,适用于类似json的数据;
(5)six:提供一些简单工具来封装python2和python3之间的差异;
(6)pyzmq:如果打算运行locust分布在多个进程/机器,最后安装此库。

二、安装(*)

1、安装locust
locust可以通过python的pip命令安装,因为我使用的是Mac,它是自带python的,但并不含pip,所以还需下载pip包。打开终端,执行以下步骤:
a、安装easy_install:
curl https://bootstrap.pypa.io/ez_... -o - | sudo python

b、安装pip:
sudo easy_install pip(若不成功可尝试sudo easy_install-3.6 pip 或者sudo easy_install-2.7 pip),执行后再输入电脑密码(不可见)再回车确认即可;

c、安装locust:
方法一:pip install locustio
方法二(推荐python3使用):从GitHub项目地址:https://github.com/locustio/l...
下载项目,在终端下来到项目路径,执行:python setup.py install

d、验证是否安装成功:locust --help

e、如果未来可能运行Locust 分布在多个进程/机器,建议安装pyzmq:pip install pyzmq

2、补充(待学习)
(1)如果使用的Mac,其实不建议用其自带的python,因为一旦将python折腾崩溃,将可能影响到系统。解决办法是安装homebrew(https://brew.sh),在终端中输入:brew install python,还可指定python的版本,需要将此版本python的环境变量设置在系统自带python的环境变量之前,且此方法安装的python中将含有pip。
(2)可使用python的包管理工具anaconda。

三、实践——一个简单的脚本与测试

1、创建load_test.py文件,内容为:


from locust import HttpLocust, TaskSet, task

class UserBehavior(TaskSet):

    @task(1)
    def baidu(self):
        self.client.get("/")

class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait = 3000
    max_wait = 6000

2、在终端中来到load_test.py所在目录下,输入:
locust -f load_test.py --host=https://www.baidu.com
若正常运行则将看到:
[2017-11-28 17:39:47,262] appledeMacBook-Air-3.local/INFO/locust.main: Starting web monitor at :8089
[2017-11-28 17:39:47,263] appledeMacBook-Air-3.local/INFO/locust.main: Starting Locust 0.8.1*

3、打开浏览器访问:http://127.0.0.1:8089
(1)设置模拟用户数和每秒产生用户数,然后点击Start swarming 开始运行性能测试。

图片描述

(2)页面数据说明——statistics:

图片描述

<性能测试参数>

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

Name:请求的路径。这里为百度首页,即:https://www.baidu.com/

request:当前请求的数量。

fails:当前请求失败的数量。

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

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

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

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

Content Size:单个请求的大小,单位字节。

reqs/sec:是每秒钟请求的个数。

官方文档
本文主要参考资料
进一步学习locust请戳


形式流亡
67 声望10 粉丝