压测工具之Locust

前言

  说起压测,我就用过Jmeter,而且仅是简单使用,好用性能强大,最近接触了一个python提供的压测框架Locust,翻译为蝗虫,蝗虫过之,寸草不生,哈哈哈,我感觉很贴切。
首先,我们分析一下市面上几种工具的特性。

\ LoadRunner Jmeter Locust
授权方式 商业收费 开源免费 开源免费
开发语言 C/Java Java Python
测试脚本形式 C/Java GUI Python
并发机制 进程/线程 线程 协程
单机并发能力
分布式压力 支持 支持 支持
资源监控 支持 不支持 不支持
报告与分析 完善 简单图表 简单图表
支持二次开发 不支持 支持 支持
并发方式 线程 线程 协程
  我认为最适合程序员的当然是Locust,脚本语言快速开发,可玩性高,自由发挥,甚至可以用来干坏事,哈哈哈哈,不用记繁琐的页面操作,支持二次开发,最关键的是它使用的协程,这个减少了线程的资源耗费,适合我这种只有低端笔记本的选手。

Locust安装

Locust官网地址,具体安装步骤可以参考。
  我是搭建在一个阿里云服务器上,当然是需要python环境的,如果你的centos需要安装python环境可以参考我的另一篇帖子Centos安装Python3.8详细教程。
接下来使用pip或者pip3安装locust

pip3 install locust

我已经装好了,因此显示已经存在如下图。实际安装情况也不慢。除此之外,还还可以直接去git上面下载zip包,那种方式没有尝试过,有兴趣的朋友可以去试试。
使用命令查看安装是否成功,显示下图则表示已经安装成功。

locust -V

显示版本号2.6.0
在这里插入图片描述

测试脚本准备

  本来想自己写个jar包扔上去做测试,一看机器上面没有装jdk,我又懒了。。。。后来从网上找了个demo,访问百度的接口。脚本里面启动命令加了访问地址,这里不做赘述,都是很简单的命令,请求直接使用request类库,帖子能看到这一步的不会没有用过吧!!!

import time
from locust import HttpUser, task, between, events
import urllib3
from locust.contrib.fasthttp import FastHttpLocust
urllib3.disable_warnings()


@events.test_start.add_listener
def on_test_start(**kwargs):
    print('===测试最开始提示===')


@events.test_stop.add_listener
def on_test_stop(**kwargs):
    print('===测试结束了提示===')


class TestTask(HttpUser):
    wait_time = between(1, 5)
    # host = 'https://www.baidu.com'

    def on_start(self):
        print('这是SETUP,每次实例化User前都会执行!')

    @task(1)
    def getBaidu(self):
        self.client.get(url="/", verify=False)

    def on_stop(self):
        print('这是TEARDOWN,每次销毁User实例时都会执行!')

# class MyLocust(FastHttpLocust):
#     task_set = TestTask
#     min_wait = 1000
#     max_wait = 60000
if __name__ == "__main__":
    import os

    os.system("locust -f locustDemo1.py --host=https://www.baidu.com")

将脚本上传至服务器。然后运行。

python3 locustDemo1.py

启动效果如下图,并且已经给出了ui页面的访问方式,机器http://ip:8089/即可。
在这里插入图片描述
压测工具之Locust_第1张图片

到这里,Locust脚本已经跑了起来。页面也很直观,要求输入并发用户数量,每秒产生用户数量,host(刚才已经指定)。然后点击start就开始了压测。

Locust压测指标简介

  进来默认展示的是压测报告
压测工具之Locust_第2张图片

字段 解释
Type 请求类型
Name 请求路径
requests 当前请求的数量
fails 当前请求失败的数量
Median 中间值,单位毫秒,一般服务器响应时间低于该值,而另一半高于该值
Average 所有请求的平均响应时间,毫秒
Min 请求的最小的服务器响应时间,毫秒
Max 请求的最大服务器响应时间,毫秒
Content Size 单个请求的大小,单位字节
reqs/sec 每秒钟请求的个数

切换至图表页面还能查看实时的折现图、包含请求趋势、响应时间、并发用户数等。
压测工具之Locust_第3张图片

压测工具之Locust_第4张图片
压测工具之Locust_第5张图片

当然,还提供了查看失败请求的页面、下载请求统计数量的页面。这些对于程序员做一写简单的压力测试完全够用。爱了爱了。

你可能感兴趣的:(python,压力测试,python,locust,测试工具)