首页 > 编程语言 >Python性能测试框架:Locust实战教程

Python性能测试框架:Locust实战教程

时间:2024-07-04 20:53:22浏览次数:15  
标签:教程 请求 Python Locust locust 并发 测试 测试工具

01认识Locust

 

 

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

 

locust运行原理

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

 

Locust的特点

 

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

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

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

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

 

 

02 测试工具哪个好

 

LoadRunner

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

 

Jmeter

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

 

Locust

功能上虽然不如LoadRunner及Jmeter丰富,但其也有不少优点。Locust 完全基本 Python 编程语言并且 HTTP 请求完全基于 Requests 库

 

LoadRunner 和 Jmeter 这类采用进程和线程的测试工具,都很难在单机上模拟出较高的并发压力。Locust 的并发机制摒弃了进程和线程,采用协程(gevent)的机制。协程避免了系统级资源调度,由此可以大幅提高单机的并发能力。

 

03 环境安装

 

Python环境配置

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

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

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

 

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安装成功

 

04 如何使用

 

Locust类

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

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

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

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

 

TaskSequence 类

  • TaskSequence 类

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

  • @task装饰器

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

  • @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种启动方式

直接启动

 locust -f stock_center.py (stock_center.py为执行脚本,可在编译器中直接运行该脚本) 

无web页面启动 

locust -f stock_center.py --no-web -c 200 -r 20 -t 1m

(–no-web 代表不需要启动UI页面

-c 代表需要并发的用户数

-r 代表每秒并发的用户数

-t 代表需要运行的时间)

 

分布式启动 

locust -f stock_center.py --master # 指定当前机器为master主机

locust -f stock_center.py --slave --master-host=10.xxx.xxx.xxx # 指定当前机器为从机并指向对应master主机

 

启动页面

 

Number of total users simulate: 设置需要并发的总人数

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

Start swarming: 执行locust脚本

 

 

Type: 请求类型,即接口的请求方法

Name: 接口请求路径

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

Fails: 当前失败的数量

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

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

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

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

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

Current RPS: 每秒能处理的请求数目

 

各模块说明

 

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

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

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

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

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

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

 

05 Locust的总结

 

局限:

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

 

优势:

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

 

另外一点就是并发机制了。Locust的并发机制摒弃了进程和线程,采用协程(gevent)的机制。避免了系统级资源调度,由此大幅提高了性能。正常情况下,单台普通配置的测试机可以生产数千并发压力,这是LoadRunner和Jmeter都无法实现的。

 

 

标签:教程,请求,Python,Locust,locust,并发,测试,测试工具
From: https://www.cnblogs.com/zhuuque23/p/18284655

相关文章

  • python爬虫3-多进程多线程协程
    多进程和多线程frommultiprocessingimportProcessimportthreadingdefprocess_worker():foriinrange(200):print(f"Processworker{i}")defthread_worker():foriinrange(200):print(f"Threadworker{i}")if__......
  • PyQt5入门教程:从安装到构建简单应用
    PyQt5入门教程:从安装到构建简单应用简介PyQt5是一个功能强大的Python绑定库,用于Qt应用程序框架。它允许我们使用Python语言快速开发跨平台的桌面应用程序。本教程将引导你完成PyQt5的安装、配置,并带你创建一个简单的图形用户界面(GUI)应用程序。Part1:安装PyQt5在你的开......
  • Python的分支结构的教学
    一.pass的介绍:1、pass在执行过程中表示的含义:“暂时跳过”,pass是一种空操作,解释器执行到它的时候,除了检查语法是否合法,什么也不做就直接跳过。它跟return、break和continue之类的非空操作相比,最大的区别是它不会改变程序的执行顺序。它就像我们写的注释,除了占用一行代码......
  • python实现扑克游戏 - 抽鬼牌 和 21点
    poker_gamespython实现扑克游戏:抽鬼牌和21点-PythonImplementationofPokerGames:DrawingGhostCardsandBlackjackpoker模块首先,定义一个扑克模块,后面的包括以后的扑克牌游戏,都可以调用这个模块这个模块可以实现:卡牌、扑克牌组发牌、洗牌玩家摸牌、出牌等......
  • Python从0到100(三十三):xpath和lxml类库
    1.为什么要学习xpath和lxmllxml是一款高性能的PythonHTML/XML解析器,我们可以利用XPath,来快速的定位特定元素以及获取节点信息2.什么是xpathXPath,全称为XMLPathLanguage,是一种用于在XML文档中进行导航和数据提取的语言,可用来在HTML\XML文档中对元素和属性进行遍......
  • python+flask计算机毕业设计的图书管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在数字化与信息化日益深入的今天,图书管理系统的开发与应用已成为图书馆管理工作中的重要一环。传统的图书管理方式,如手工登记、纸质借阅记......
  • python+flask计算机毕业设计二手图书零售系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息时代的到来,知识的传播与获取方式发生了深刻变革,图书作为文化传承和知识积累的重要载体,其数量与日俱增。然而,在传统图书市场饱和、......
  • 工具篇:01用python的request爬虫
    工具篇:01用python爬虫爬虫爬虫的概念尝试用python爬虫爬虫爬虫的概念爬虫我认为就是用代码获取数据经过我的上网查找得出结论:爬虫是一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。尝试用python爬虫用两种爬虫方式第一种是request,第二种scra......
  • Authlib,一个终极利器 Python 库专注于提供各种认证和授权解决方案
    目录01什么是Authlib?Authlib简介为什么选择Authlib?安装与配置02Authlib的基本用法实现OAuth2客户端1、创建OAuth2客户端 2、获取访问令牌3、使用访问令牌访问资源实现OAuth2服务器1、创建OAuth2服务器2、实现授权端点3、实现资源端点03Authlib......
  • 《Python 第三方模块包安装指南》
    在Python编程中,第三方模块包极大地丰富了其功能,让我们能够更高效地完成各种任务。下面将为您详细介绍如何安装Python的第三方模块包。一、使用pip命令安装pip 是Python的包管理工具,大多数情况下,我们可以通过以下命令来安装第三方模块包: pipinstall模块包名称......