locust 完成性能测试 (一)

本贴最后更新于 1582 天前,其中的信息可能已经时过境迁

目录:

    1、locust简介

    2、locust安装

    3、参数说明

    4、简单性能测试

	      开发get请求脚本

      运行locust

      场景的参数学习

一、认识Locust

1、定义

Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过(协程)gevent使用轻量级过程(即在自己的进程内运行)。

备注:Gevent是一个第三方库,可以轻松通过gevent实现并发同步或异步编程。在gevent中用到的主要模式是Greenlet,它是以C扩展模块形式接入Python的轻量级协程。Greenlet 全部运行在主程序操作系统进程的内部,但它们被协作式地调度。
2、特点

①、不需要编写笨重的UI或者臃肿的XML代码,基于协程而不是回调,脚本编写简单易读;
②、有一个基于we简洁的HTML+JS的UI用户界面,可以实时显示相关的测试结果;
③、支持分布式测试,用户界面基于网络,因此具有跨平台且易于扩展的特点;
④、所有繁琐的I / O和协同程序都被委托给gevent,替代其他工具的局限性;

3、locust与jmeter的区别

image.png

备注:但locust的局限性在于,目前其本身对测试过程的监控和测试结果展示,不如jmeter全面和详细,需要进行二次开发才能满足需求越来越复杂的性能测试需要。

二、安装

Linux系统安装,需要配置好python环境变量(目前locust只支持python3.6,3.7,3.8)

新版本的安装

#pip3 install locust

#老版本安装pip3 install locustio

python -m pip install -e

配置环境变量,找到locust安装目录

vim /etc/profile

export PATH=$PATH:/usr/local/python3/bin/

source /etc/profile

查看有没有生效:

locust -h

备注:window安装也是一样的,只要设置好python环境变量

三、参数说明

image.png

image.png

image.png

image.png

四、运行简单性能测试

locust模拟get请求

from locust import TaskSet, HttpLocust, task

'''
新建一个类LocustApi(TaskSet),继承TaskSet,该类定义了每个用户的任务结合,测试任务开始后,每个locust用户会从TaskSet中随机挑选一个任务执行,然后随机等待httplocust类中定义的min_wait和max_wait之间的一段时间,执行下一个任务
'''

class LocustApi(TaskSet):

# 获取商品列表

# 装饰器,表示用户的行为,括号里参数表示请求行为的执行权重:

数值越大,执行频率就越高,不设置默认是1

@task()

#定义一个方法
def get_types(self):

self.client调用get或post方法,和requests一样;

    self.client.get("/mobile/api/goods/gettypes")

#WebsiteUser(HttpUser):HttpUser类用于设置生成负载的基本属性
class WebsiteUser(HttpUser):

#指向定义了用户行为的类,老版本(task_set)

#新版本
tasks = [LocustApi]

#模拟负载的任务之间执行时的最小等待时间,单位为毫秒

min_wait = 3000     # 单位毫秒

#模拟负载的任务之间执行时的最大等待时间,单位为毫秒

max_wait = 6000     # 单位毫秒

或者直接用:
wait_time = between(1, 5)

#指定服务器的域名地址,在命令中用--host选项,则以命令行为准

host="http://192.168.228.128:8080"

备注:默认情况下,时间是在min_wait和max_wait之间随机选择,但是可以通过将wait_function设置为任意函数来使用任何用户定义的时间分布

if name == "main":
import os
os.system("locust -f locust_get.py WebsiteUser)

启动locust:

如果启动的locust文件名为locustfile.py并位于当前工作目录中,可以在编译器中直接运行该文件,或者通过cmd,执行如下命令:

locust --host=http://192.168.228.128:8080

如果Locust文件位于子目录下且名称不是locustfile.py,可以使用-f命令启动上面的示例locust文件:

locust -f locust_get.py --host=http://192.168.228.128:8080

启动成功之后:

D:\Python37\python.exe D:/python/locust/locust_get.py

[2019-07-07 13:05:09,594] LAPTOP-PV92Q38R/INFO/locust.main: Starting web monitor at *:8089

[2019-07-07 13:05:09,594] LAPTOP-PV92Q38R/INFO/locust.main: Starting Locust 0.11.0

访问locust:

在浏览器里面输入:http://localhost:8089/

启动界面

image.png

Number of users to simulate:设置模拟的用户总数Hatch rate (users spawned/second):每秒启动的虚拟用户数Start swarming:执行locust脚本

测试结果界面

备注:点击stop可以停止locust脚本运行

image.png

type:请求类型,get或post

name:请求路径

Requests:当前已完成的请求数量

fails:当前失败的数量;

Median:响应时间的中间值,即50%的响应时间在这个数值范围内,单位为毫秒;

Average:平均响应时间,单位为毫秒;

Min:最小响应时间,单位为毫秒;

Max:最大响应时间,单位为毫秒;

Content Size:所有请求的数据量,单位为字节;

reqs/sec:每秒钟处理请求的数量,即QPS;

image.png

New test:点击该按钮可对模拟的总虚拟用户数和每秒启动的虚拟用户数进行编辑;

Statistics:类似于jmeter中Listen的聚合报告;

Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟用户数;

Failures:失败请求的展示界面;

Exceptions:异常请求的展示界面;

Download Data:测试数据下载模块, 提供三种类型的CSV格式的下载,分别是:Statistics、responsetime、exceptions;

作业:

1、在Linux上面部署好locust工具

2、在windows上面安装好locust工具

3、在pycharm里面开发get请求

4、跑性能测试场景,并熟悉每个参数的含义

回帖
请输入回帖内容 ...