基本介绍

Locust 是开源的、使用 python 开发、基于事件、支持分布式并且提供 webUI 进行测试执行和结果展示的性能测试工具
注:locust1.x 相比较于 0.x 变化较大,具体可参考:https://blog.csdn.net/kk_gods/article/details/110237549

locust 特性

模拟用户操作:支持多协议,locust 可以压测任意协议类型的系统
并发机制:摒弃了进程和线程,采用协程(gevent)机制,单台测试机可以产生数千并发压力

Locust 核心库

1、gevent:gevent 是一种基于协程的 Python 网络库,它用到 Greenlet 提供的,封装了 libevent 事件循环的高层同步 API。
2、flask:Python 编写的轻量级 Web 应用框架。
3、requests:Python Http 库
4、msgpack-python:MessagePack 是一种快速、紧凑的二进制序列化格式,适用于类似 JSON 的数据格式。msgpack-python 主要提供 MessagePack 数据序列化及反序列化的方法。
5、pyzmq:pyzmq 是 zeromq(一种通信队列) 的 Python 实现,主要用来实现 Locust 的分布式模式运行

压测工具比对

locust 实践

安装

Pip install locust
注:mac 通过软连接方式配置环境变量 ln -s xxxx/bin/locust /usr/local/bin/locust

locust 简单脚本

from locust import HttpUser, TaskSet, task
import logging


class UserBehave(TaskSet):

    @task(1)
    def get_books(self):
        response = self.client.get("/bookstore/api/v1/books")
        assert '200' in str(response), logging.info("failed")


class WebsiteUser(HttpUser):
    tasks = [UserBehave]
    min_wait = 1000
    max_wait = 3000
    host = "http://127.0.0.1:5000/"


if __name__ == '__main__':
    import os
    os.system(r'locust -f F:\code\perform\locusts.py --web-host="127.0.0.1" -P 8091')

访问 locust: http://127.0.0.1:8091

结果分析


New test:点击该按钮可对模拟的总虚拟用户数和每秒启动的虚拟用户数进行编辑;
Statistics:类似于 jmeter 中 Listen 的聚合报告;
Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟用户数;
Failures:失败请求的展示界面;
Exceptions:异常请求的展示界面;
Download Data:测试数据下载模块, 提供三种类型的 CSV 格式的下载,分别是:Statistics、responsetime、exceptions;


↙↙↙阅读原文可查看相关链接,并与作者交流