Python性能测试-Locust框架

这篇具有很好参考价值的文章主要介绍了Python性能测试-Locust框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、认识Locust

Locust是一个比较容易上手的分布式用户负载测试工具。 它旨在对网站(或其他系统)进行负载测试,并确定系统可以处理多少个并发用户,Locust 在英文中是 蝗虫 的意思: 作者的想法是,在测试期间,放一大群 蝗虫 攻击您的网站。 当然事先是可以用 Locust 定义每个蝗虫(或测试用户)的行为,并且通过 Web UI 实时监视围攻过程。

二、locust运行原理

Locust 的运行原理是完全基于事件运行的,因此可以在一台计算机上支持数千个并发用户。 与许多其他基于事件的应用程序相比,它不使用回调(比如 Nodejs 就是属于回调,Locust 不使用这种的逻辑)。 相反,它通过 gevent 使用轻量级进程。测试您站点的每个蝗虫实际上都在其自己的进程中运行

三、Locust的特点

1、用Python编写测试方案 不需要在UI界面上点击,只需要正常编写代码即可,灵活性比较强

2、分布式&可扩展 Locust 支持分布在多台计算机上的运行负载测试(可以多台机器并行开搞)。

3、统计结果基于Web界面 Locust 有一个简单的用户界面,可实时显示相关的测试详细信息,并且统计结果界面是基于网页的,而网页是天生跨平台的,所以 Locust 是跨平台且易于扩展的

4、可以测试任何网页/应用/系统 只需用 python 编写想要测试的方案,然后放”蝗虫”去怼需要测试的项目就可以了,非常简单!

四、测试工具哪个好

LoadRunner: 是非常有名的商业性能测试工具,功能非常强大。使用也比较复杂,但收费贼贵

Jmeter: 同样是非常有名的开源性能测试工具,功能也很完善。可以当做接口测试工具来测试接口,但同时它也是一个标准的性能测试工具

Locust: 功能上虽然不如LoadRunner及Jmeter丰富,但其也有不少有点。Locust 完全基本 Python 编程语言并且 HTTP 请求完全基于 Requests 库。LoadRunner 和 Jmeter 这类采用进程和线程的测试工具,都很难在单机上模拟出较高的并发压力。Locust 的并发机制摒弃了进程和线程,采用协程(gevent)的机制。协程避免了系统级资源调度,由此可以大幅提高单机的并发能力。

五、环境安装

1、Python环境配置

(1)首先去Python官网下载Python3.6+版本解释器

(2)安装解释器并配置环境变量(将python的根目录以及Scripts路径配置到环境变量Path下面)

(3)打开cmd窗口,分别输入python、pip命令并回车,如果没有报错,则说明Python环境配置成功

2、Locust环境配置

(1)打开cmd窗口,输入pip install locustio==0.14.6 并回车,此时系统会自动下载locust库以及部分依赖库(PS:locust 目前有2个大版本,0和1的版本,两个版本之间语法差异比较大,安装1*版本,直接pip install locust 即可)

(2)安装成功后验证:在cmd窗口中,输入python,进入python开发环境,然后输入import locust,如果没有报错,则说明locust安装成功

六、如何使用

Python性能测试-Locust框架
Locust类
1、HttpLocust类 继承了Locust类,表示将要生成的每一个虚拟的HTTP用户,用来发送请求到进行负载测试的系统。

2、task_set属性 该 task_set 属性指向定义的用户行为的类

3、host属性 host属性是要加载的域名(URL 前缀,例如http://xxxxxx)

4、wait_time属性 用于发送Http请求时,虚拟用户需要等待的时间,等待时间是一个区间范围。单位为毫秒,等待时间在min_wait和max_wait之间随机选择

TaskSequence 类
1、TaskSequence 类 TaskSequence 类是 TaskSet,但其任务将按顺序执行。

2、@task装饰器 用于标识测试任务,并且可以通过task装饰器设置权重用于执行任务的执行率

3、@seq_task装饰器 用于指定接口的执行顺序。可以把@task装饰器和@seq_task装饰器一起组合使用

初始化方法
1、setup 和 teardown方法 setup 和 teardown 都是只能运行一次的方法。在任务开始运行之前运行setup,而在所有任务完成并且蝗虫退出后运行 teardown;这使您能够在任务开始运行之前做一些准备工作(比如创建数据库,或者打印日志 等等),并在蝗虫退出之前进行清理。

2、on_start 和 on_stop 方法 每个虚拟用户执行操作时运行on_start方法,退出时执行on_stop方法

3、初始化方法的执行顺序 setup > on_start > on_stop > teardown

常用3种启动方式
1、直接启动 locust -f stock_center.py (stock_center.py为执行脚本,可在编译器中直接运行该脚本)

2、无web页面启动 locust -f stock_center.py --no-web -c 200 -r 20 -t 1m (–no-web 代表不需要启动UI页面,-c 代表需要并发的用户数,-r 代表每秒并发的用户数, -t 代表需要运行的时间)

3、分布式启动 locust -f stock_center.py --master # 指定当前机器为master主机 locust -f stock_center.py --slave --master-host=10.xxx.xxx.xxx # 指定当前机器为从机并指向对应master主机

启动页面
Python性能测试-Locust框架
Number of total users simulate: 设置需要并发的总人数

Hatch rate(users spawned/second): 每秒启动的虚拟用户数

Start swarming: 执行locust脚本

Python性能测试-Locust框架
Type: 请求类型,即接口的请求方法

Name: 接口请求路径

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

Fails: 当前失败的数量

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

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

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

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

Average Size: 平均请求的数据量, 单位为字节

Current RPS: 每秒能处理的请求数目
Python性能测试-Locust框架

各模块说明
Python性能测试-Locust框架
New test:点击该按钮可对模拟的总虚拟用户数和每秒启动的虚拟用户数进行编辑;

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

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

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

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

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

七、Locust的总结

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

优势:
1、纯脚本形式,并且HTTP请求完全基于Requests库。用过Requests的都知道,这个库非常简洁易用,但功能十分强大

2、另外一点就是并发机制了。Locust的并发机制摒弃了进程和线程,采用协程(gevent)的机制。避免了系统级资源调度,由此大幅提高了性能。正常情况下,单台普通配置的测试机可以生产数千并发压力,这是LoadRunner和Jmeter都无法实现的。文章来源地址https://www.toymoban.com/news/detail-409949.html

到了这里,关于Python性能测试-Locust框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决:macOS上用python+locust搭建测试框架,pip3 install locust安装成功,用locust -V验证提示‘zsh:command not found :locust’

    1.电脑软硬件配置: 电脑:MacBook pro m1 2020款, 系统:macOS Monterey 12.3.1, 芯片:Apple M1, 内存:16G 2.python的安装方式: 在python官网下载并安装 3.locust的安装方式: 打开终端,使用pip3 install locust安装成功后,提示内容如图: 警告内容大致提醒:没有将环境变量(相应的目录)

    2023年04月09日
    浏览(47)
  • locust_性能测试

    一、性能测试准备工作         1、确定性能测试工作目标:                 1、投入小,技术实现快捷                 2、支持千万级以上的用户并发                 3、可以进行性能测试指标分析         2、性能测试工具选型及环境准备                 1、选择

    2023年04月08日
    浏览(56)
  • 性能测试工具locust压测介绍

    官方文档:https://docs.locust.io/en/stable/index.html 1、初识locust         Locust 完全基于Python 编程语言,采用python 编写压测脚本,且所有请求完全基于requests库。除了 HTTP/HTTPS 协议,Locust 也可以测试其它协议的系统,只需要采用Python调用对应的库进行请求描述即可。locust是一个

    2024年02月07日
    浏览(69)
  • locust性能测试和分布式压测

    Locust是一个开源的Python性能测试工具,用于模拟大量并发用户访问网站、API等,以测试系统的性能和稳定性。它的主要特点包括: 1.简单易用:Locust基于Python编写,使用方便,学习曲线较低。 2.分布式支持:Locust支持分布式部署,可以在多台机器上运行,以模拟更大的并发用

    2024年02月16日
    浏览(40)
  • 1-Locust性能测试工具介绍与安装

    locust是一个开源的压测工具,其官网地址是Locust - A modern load testing framework,通过编写Python代码,可以轻松实现百万级的并发,相对于我们熟悉的Jmeter来说,其对压测机的要求更低,而且使用locust和Python协程可以在一个User中实现多个api同时请求,更真实地模拟用户在前端页面

    2024年02月15日
    浏览(42)
  • 性能测试工具 Locust + Boomer In Docker

    目录 前言: 背景 启动 Locust-master Boomer 调试模式启动 boomer locust worker 模式启动 get 请求 post 请求 指定请求头 直接使用 curl 命令 动态读取 csv --json-value-type 说明 Locust 是一种开源的性能测试工具,可以帮助我们快速地进行网站、应用程序等的性能测试和压力测试。Boomer 是一种

    2024年02月15日
    浏览(43)
  • 【测试设计】性能测试工具选择:wrk?jmeter?locust?还是LR?

    目录 前言 wrk 优点 缺点 jmeter 优点 缺点 locust 优点 缺点 总结 资料获取方法 当你想做性能测试的时候,你会选择什么样的测试工具呢?是会选择wrk?jmeter?locust?还是loadrunner呢? 今天,笔者将根据自己使用经验,针对jmeter、locust、wrk和loadrunner常用的性能测试工具进行简单介

    2024年02月14日
    浏览(53)
  • 【性能测试】分布式压测之locust和Jmeter的使用

    受限于单台机器的配置问题,我们在单台机器上达不到一个很高的压测并发数,那这个时候就需要 引入分布式压测 分布式压测原理: 一般通过局域网把不同测试计算机链接到一起,达到测试共享、分散操作、集中管理的目的。 选择一台作为调度机(MASTER),其他机器作为执

    2024年02月19日
    浏览(46)
  • python轻量级性能工具-Locust

    Locust基于python的协程机制,打破了线程进程的限制,可以能够在一台测试机上跑高并发 1.快慢:衡量系统的处理效率:响应时间 2.多少:衡量系统的处理能力:单位时间内能处理多少个事务(tps) 性能测试根据测试需求最常见的分为下面三类 1 负载测试load testing 不断向服务

    2024年02月02日
    浏览(51)
  • 压力测试-Locust框架基本使用及更新报错解决方案

    近期了解到locust在1.0版本之后出现了部分的改动,使用最新locustio加载时可能会出现一些问题,本文将讲述locust的使用基础及常见的环境异常。 ******【环境方面】****** 报错信息1: 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 解决方案:  1、进入pip官网

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包