Locust性能测试入门
Locust性能测试入门
郭燕燕~
星光不负赶路人,时光不负有心人
展开
-
(十五)no web模式执行
locust支持无界面模式运行,即命令行模式,需结合locust参数实现,常用参数如下启动命令行模式,进入脚本所在目录locust -f zentaoSecTest.py --no-web -c5 -r 1 -t 20s --host=http://127.0.0.1:8088 --csv=zentaoTest执行完成后,在脚本所在目录下生成2个报告文件,打开可以看到性能指标和...原创 2019-12-19 16:34:00 · 257 阅读 · 0 评论 -
(一)Windows下安装locust
安装python后,配置环境变量,cmd进入命令行模式输入以下命令安装locust>pip install locust>pip install pyzmq安装成功后,输入locust -V或者locust --version查看版本号注意:此种方式安装的locust版本可能不是最新的,想要最新版本的可以手动下载,然后覆盖安装下载地址:https...原创 2019-12-16 18:50:02 · 2492 阅读 · 0 评论 -
(二)centos安装python3
centos系统自带python2,尽量不要卸载,yum等程序依赖目前的python2环境使用python3 xxx.py运行python脚本即可安装依赖环境#yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4...原创 2019-12-16 18:36:23 · 156 阅读 · 0 评论 -
(三)centos下安装locust
安装pip3 install locustpip3 show locustio,查看locust安装路径python3/bin目录下查看locust可执行文件是否存在,我的python路径是/usr/local/python3/bin配置环境变量将ocust可执行文件路径添加至环境变量vi /etc/profile执行source /etc/profile命...原创 2019-10-30 11:27:19 · 691 阅读 · 0 评论 -
(四)简单的http请求
locust的脚本中,模拟负载的http协议的请求,同python requests库一样,以访问禅道系统为例代码示例# coding=utf-8''' Created on 2019-11-08 author: ali'''import osfrom locust import HttpLocust, TaskSet, taskclass userTaskSet...原创 2019-12-17 11:51:38 · 274 阅读 · 0 评论 -
(五)TaskSet类
TaskSet是任务的集合以禅道任务管理系统为例,用户要完成以下四项任务:用户登录、查看任务列表、查看任务详情、用户退出测试任务开始后,每个Locust虚拟用户会从TaskSet中随机挑选一个任务执行,或按照权重关系执行任务,然后随机等待min_wait和max_wait(HttpLocust或TaskSet类中定义)之间的一段时间,再执行下一个任务on_start()定义每个...原创 2019-12-17 16:39:45 · 321 阅读 · 0 评论 -
(六)TaskSequence类
@task修饰的任务是随机执行的,继承TaskSequence类,可以实现任务按指定顺序执行@seq_task指定执行顺序,如果未指定,默认顺序是1@task执行权重,如果未指定,默认执行1次既没有@task也没有@seq_task修饰的方法,不会被执行实例代码# coding=utf-8''' Created on 2019-11-08 author:...原创 2019-12-17 17:04:56 · 1117 阅读 · 0 评论 -
(七)HttpLocust类
测试http协议系统时,使用HttpLocust类每生成一个实例,都代表一个虚拟用户,用来发送请求到被测系统class websiteUser(HttpLocust): task_set = userTaskSet host = "http://127.0.0.1:8088" min_wait = 2000 # 单位为毫秒 max_wait = 5000...原创 2019-12-17 18:16:31 · 187 阅读 · 0 评论 -
(八)client属性
client属性http协议是无状态的,就是不对之前发生过的请求和响应进行管理。所以登录请求和登录之后的请求是独立的,但是登录后的请求需要依赖先登录拿到cookie,才能保持登录状态,在python3语法中可以用requests.session()实现。在locust中,HttpLocust类继承Locust类,并添加一个client属性,client封装了python的requests库...原创 2019-12-19 14:56:11 · 424 阅读 · 0 评论 -
(九)断言
断言:判断一个请求成功还是失败一般情况下,HTTP响应码为200即可认为请求发送成功,然而这并不能代表响应返回内容正确比如登录禅道系统,当用户输入错误密码并且请求发送成功,HTTP响应码为200,但这不是真正的pass使用catch_response参数和with语句,捕获响应内容,标记请求成功或失败catch_response=True,捕获响应数据,然后对响应数据进行校验,最后...原创 2019-12-17 18:36:12 · 144 阅读 · 0 评论 -
(十)参数化——随机取值
随机取值是较为简单一种取值方式以用户登录为例,将数据放入list中,数组元素下标从0开始,最大下标为数组长度减1userdatas = ["ali001", "ali002", "ali003", "ali004", "ali005"]userdatas 数组长度为5userdatas 中元素下标依次为0, 1, 2, 3, 4使用random.randint(0, 4)函数,...原创 2019-12-18 17:59:23 · 705 阅读 · 0 评论 -
(十一)参数化——循环取值
循环取数据,数据可重复使用模拟3用户登录,有5个账号供测试使用,迭代过程中从第1个数据开始取值,当第5个数据取出后,再从第1个数据开始取值借助python 队列queue来实现数据的循环取值queue是python3的标准库,不需要installqueue模块包含三种类型的队列queue.Queue(maxsize=0)FIFO队列,First in First Out...原创 2019-12-18 19:15:18 · 648 阅读 · 0 评论 -
(十二)关联
所谓关联,就是把一个任务中动态变化返回的数据获取到,把它保存为一个参数,提供给后续任务请求使用。例如用户在任务1中请求获取任务列表,将返回的taskid获取到并保存为参数,然后在任务2中,用户查看任务详情,使用该taskid作为参数。既然涉及参数的传递,就需要定义任务的执行顺序,否则locust从TaskSet中随机挑选一个任务执行,任务2可能先于任务1执行,此时任务2执行必然是fail的...原创 2019-12-19 11:44:35 · 166 阅读 · 0 评论 -
(十三)动态参数请求分组
前面关联的例子中,查看任务详情的参数taskid我们是通过关联获取的,这个参数是动态的,每次的值可能都不同,所以在Locust的测试结果中会看到默认以"/zentao/task-view-taskid.json"为Name的多个分组实际上这些请求都是在测试同一个任务,查看某个taskid的任务详情,应该被分为一组,否则当taskid成百上千时,报告中的请求显示也是成百上千的,看起来非常不方...原创 2019-12-19 15:05:12 · 246 阅读 · 0 评论 -
(十四)web模式执行
访问locust web界面,地址:http://localhost:8089/Number of users to simulate:设置模拟的用户总数Hatch rate:孵化率,每秒启动的虚拟用户数,可以模拟一个逐渐增加的过程,可以根据曲线来考察接口的处理峰值。Start swarming:执行测试测试报告参数Type: 请求的类型,例如GET/POST/PUT等...原创 2019-12-19 15:22:34 · 107 阅读 · 0 评论 -
(十六)分布式执行
前提1、主机(master)安装配置好locust环境2、从机(slave)安装配置好locust环境3、主机/从机上都要上传要执行的Python文件(调试好的压测脚本)几个参数说明master处理器负责分发任务(在主机Windows下执行)启动命令行模式,进入脚本所在目录locust -f zentaoSecTest.py --no-web --master ...原创 2019-12-19 17:53:38 · 542 阅读 · 0 评论