Locust性能测试学习总结

Locust学习总结分享

简介:

Locust是一个用于可扩展的,分布式的,性能测试的,开源的,用Python编写框架/工具,它非常容易使用,也非常好学。它的主要思想就是模拟一群用户将访问你的网站。每个用户的行为由你编写的python代码定义,同时可以从Web界面中实时观察到用户的行为。

Locust完全是事件驱动的,因此在单台机器上能够支持几千并发用户访问。与其它许多基于事件的应用相比,Locust并不使用回调,而是使用gevent,而gevent是基于协程的,可以用同步的方式来编写异步执行的代码。每个用户实际上运行在自己的greenlet中。

特点:

①用简单python语言编写测试脚本,非常简单轻便。不需要笨重的UI和臃肿的xml代码,基于协同而非回调。

②分布式的,可扩展性的,可模拟上百万用户。Locust支持多机器的性能测试,每台机器可以模拟上千用户,当然这可以控制的,

③Locust有一个整洁的HTML+JS的用户界面,实时显示相关测试细节。由于用户界面是基于网络的,它是跨平台的和容易扩展。

④可以测试任何系统,尽管Locust是基于网站的,但它几乎可以测试任何系统,只要你写一个客户端。

安装:

Locust可以通过pip或者easy_install安装:

pip install locustio

或者

easy_install locustio

安装完Locust后,shell命令locust就可以使用了,可以查看locust命令有哪些选项:

(注意,要确保你安装好了python,版本必须是2.6以上的,但不能是3.0版以上的,3.0以上的改动好大,还没法兼容)

locust --help

如果打算以分布式模式运行Locust,建议同时安装pyzmq(一种通信队列):

pip install pyzmq

或者

easy_install pyzmq

在windows上安装:

下载二进制安装包,然后按照提示安装

网址:http://www.lfd.uci.edu/~gohlke/pythonlibs/

需要注意的是,当需要大规模的测试时,安装在Linux上的性能比windows上的好。

在苹果电脑上安装:

①先安装Homebrew

②安装libevent

brew install libevent

③参照在linux上的安装过程。

增加打开文件限制的最大数量:

在每一个HTTP连接的机器上打开一个新文件(技术文件描述符)。操作系统可以设置一个可以打开的文件的最大数量的下限。如果限制小于模拟用户的数量,在测试时,会发生故障。增加操作系统的默认最大数量的文件限制到一个数字高于模拟用户数的数量,才能达到你想要的测试,具体操作参考本机的操作系统。

快速启动:

下面是一个简单的列子,保持为python文件,文件名随意

from locust import HttpLocust, TaskSet

def login(l):

l.client.post("/login", {"username":"ellen_key", "password":"education"})

def index(l):

l.client.get("/")

def profile(l):

l.client.get("/profile")

class UserBehavior(TaskSet):

tasks = {index:2, profile:1}

def on_start(self):

login(self)

class WebsiteUser(HttpLocust):

task_set = UserBehavior

min_wait=5000

max_wait=9000

这个几行短短的代码就是一个完成的测试脚本。定义了两个类,一个User Behavior类,继承了TaskSet类,用于定义测试任务的,给属性tasks增加了两个任务,index函数和profile函数,这些人物被执行,然后返回执行时间,正常情况下,是在下面的最小时间和最大时间之间,从on_start 开始,就像java的main函数一样,是任务开口,然后随机的挑选任务,通过client(相当于一个Httpsession)的方法执行http请求,但是会按照设置的比率来执行。Tasks属性把上面定义的函数变成任务,它是一个dict类型。相当于java的map类型。

一个WebsiteUser类,继承了HttpLocust类,这个类用于代表用户,生成一个实例,为每个每个模拟用户,发送http请求和设置测试参数,Task_set属性,它是唯一必须要有的,它指向Task Set类,定义用户的行为,请求等待最小时间min_wait和请求等待最大时间max_wait属性,单位是毫秒。,weight属性指定用户的执行的比率,host属性是测试的应用的网址。

注意最大时间和最小时间属性可以在locust类中定义,也可以在task set类中定义,完全是一样的

下面是一种更简单的定义task的方法,用@task 构造器。下面的代码和上面的效果是一样的:但这是顺序执行任务的,第一种是随机挑选任务

from locust import HttpLocust, TaskSet, task

class UserBehavior(TaskSet):

def on_start(self):

""" on_start is called when a Locust start before any task is scheduled """

self.login()

def login(self):

self.client.post("/login", {"username":"ellen_key", "password":"education"})

@task(2)

def index(self):

self.client.get("/")

@task(1)

def profile(self):

self.client.get("/profile")

class WebsiteUser(HttpLocust):

task_set = UserBehavior

min_wait=5000

max_wait=9000

TaskSet还可以嵌套:参考下面的代码

第一种:

class ForumPage(TaskSet):

@task(20)

def read_thread(self):

pass

@task(1)

def new_thread(self):

pass

@task(5)

def stop(self):

self.interrupt()

class UserBehaviour(TaskSet):

tasks = {ForumPage:10}

@task

def index(self):

pass

第一种需要注意的是interrupt这个函数,如果没有这个函数locust就会一直执行formpage这个任务,只有通过这个函数,才能跳出来。执行formpage之外的函数。

第二种:

class MyTaskSet(TaskSet):

@task

class SubTaskSet(TaskSet):

@task

def my_task(self):

pass

运行Locust:

locust -f ../locust_files/上面的文件名.py --host=http://example.com

代码存放地址                           主机的名字和应用

分布式多处理器的Locust运行:

主处理器,负责分发任务的

locust -f ../locust_files/上面的文件名.py --master --host=http://example.com

--master-port=8888(默认的是8080端口)

从处理器,负责执行代码脚本的

llocust -f ../locust_files/上面的文件名.py --slave --master-host=192.168.0.100 --host=http://example.com --master-bind-host=8888

打开Locust web 界面

http://127.0.0.1:8089

由于example是在本地的,所以ip也是本地的

需要输入模拟多少个用户数和每秒启动多少个用户,就是并发数。

时间: 2024-11-02 21:14:41

Locust性能测试学习总结的相关文章

性能测试学习笔记-如何管理loadrunner的临时文件

lr默认保存一些乱七八糟的文件到C:\Documents and Settings\wushi\Local Settings\Temp文件夹下,时间长了会占用大量空间. 在每台loadrunner的客户端机器上,都设置了一个lrtemp文件(可能是d:\lrtemp:也可能是e:\lrtemp).在打开controller后,到result settings设置一下路径,指到这个lrtemp文件下.等你保存好报告后,请将lrtemp里所产生的临时文件删除掉.这样就能避免这些临时文件占用大量空间了

Python Locust性能测试框架实践

Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装python2.6以上版本,而且有pip工具.之后打开命令行,分别安装locustio和pyzmq(命令如下): pip install locustio pip install pyzmq 之后我们就可以写性能测试脚本了. Locust脚本编写 接下来我们拿两个接口做一下测试,编写脚本如下(每一步都有注释).我来解释一下,首先我们要i

locust性能测试4-参数关联

前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:https://account.chsi.com.cn/passport/login]的登录接口请求参数 请求参数 需要先发个get请求,从返回的html页面中解析出需要的数据 lt : LT-277623-5ldGTLqQhP4foKihHUlgfKPeGGyWVI execution: e1s1 备注

LoadRunner工具性能测试学习笔记

性能测试工具基于协议,如loadRunner jmeter 自动化测试工具基于对象识别,如selenium,不能模似大负载 工具选择 1.成本 1)工具成本 2)学习成本 2.通信协议 1)标准协议 2) 自有协议 3.生命力 4.跨平台 常见的性能测试工具:loadRunner(HP商业,免费并发50),Jmeter(开源),Gatling LoadRunner安装 windows平台(略) LoadRunner基本组成 1.Virtual User Generator录制最终用户业务流程,创

性能测试学习之路

最近在研究性能测试,已经看书查资料的研究了一个月,可是整个人依然云里雾绕的,迷茫的不知所措,下面不知道该去何方? 或许此时就像在爬山,目标是山顶(学会并应用性能测试),爬到山顶的过程就是学习的过程,可是因为路不熟悉(不知道该学哪些东西),人慢慢就迷路了,再加上体力的耗费(学习时间的花费),整个人就累了(学习时间的浪费让人莫名其妙的烦躁起来).这个时必须让自己安静下来,慢慢看看眼前的路,只要走在正确的路上,开始慢点无所谓,熟悉了就慢慢快起来了.整理一下自己下面打算走的路(学习的东西): <性能测试

性能测试学习线路图(建议)

1 概览 纵向划分3颗子树:vugen,controller,monitor.优先学习vugen脚本开发以及调试. 横向划分为2层:基础知识以及高级应用. 2 基础知识 2.1 Loadrunner工具使用 2.1.1 建议学习路径 Vugen开发脚本(函数使用)->controller场景设置->monitor增加计数器 http://www.cnblogs.com/jackei/archive/2006/10/20/534684.html 2.1.2 Loadrunner 认证 更多见 h

python locust 性能测试:locust 关联---提取返回数据并使用

from locust import HttpLocust, TaskSet, taskimport jsonfrom common import readConfig class UserBehavior(TaskSet): # 定义用户行为 def on_start(self): # 当模拟用户开始执行TaskSet类的时候,on_start方法会被调用 pass def get_headers(self): """会员登录""" heade

Locust性能测试1-环境准备与基本使用

Locust简介 Locust是一款易于使用的分布式用户负载测试工具.它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户.这个想法是,在测试期间,一群蝗虫(Locust)会攻击你的网站.您定义了每个蝗虫Locust(或测试用户)的行为,并且实时地从Web UI监视群集过程.这将有助于您在让真正的用户进入之前进行测试并识别代码中的瓶颈.Locust完全基于事件,因此可以在一台计算机上支持数千个并发用户.与许多其他基于事件的应用程序相比,它不使用回调.相反,它通过协程(geven

性能测试学习(一)--基础知识点

最近在学习性能测试,整理了下一些知识点. 首先从ISO9216质量模型切入,这个模型展示了去完整测评一个软件的时候,需要从哪些维度去考虑.如下图所示,一般需要从功能性.可靠性.易用性.效率.维护性.可移植性这6个维度去测评.软件的性能测试就是从效率这一维度去测评软件. 简单的对效率这一维度里的内容进行解读: 时间特性:就是软件的快慢,能否达到用户的需求? 资源利用率:在达到时间特性以后,对资源的利用率是否在用户的期望之下? 那么,给出性能测试的定义: 观察系统在一个给定的环境和场景中的性能表现是