性能测试利器 - Locust框架解析

news2024/9/27 7:01:21
01 认识Locust

说起性能测试工具,大家肯定想到的都是Jmeter,是的,由于其简单易用、功能强大,已经变成主流的压测工具之一。当需要实现一些高级功能的时候,可以使用Java语言对Jmeter进行扩展。

但是很多小伙伴只会Python,不会Java,可不可使用Python语言来做性能测试呢?答案是肯定的,今天我们就来介绍下基于Python的强大的性能测试框架Locust。

Locust直译是“蝗虫”的意思,意在压测时产生的压力就像是漫天蝗虫一样,铺天盖地。Locust是 用Python实现的开源性能测试框架 ,不同于其他压测工具基于进程/线程产生压力,Locust是完全 基于事件,支持分布式 ,一个Locust节点可以在一个进程中轻松支持上千并发用户。从这一点来看,它的设计思路要远优于Jmeter、Loadrunner之类的工具。

02 Locust环境搭建
  • 安装Python,建议使用Python3.6+
  • 安装Locust及其依赖:pip3 install -i http://pypi.douban.com/simple locust
  • 验证是否安装成功,执行命令:locust -V,如果能看到版本信息,即代表安装成功
03 Locust脚本编写

不同于Jmeter的界面化脚本配置,Locust的脚本需要完全写Python代码,虽然从一定程度提高了脚本编写的门槛,但是对于熟悉Python的人来说还是比较简单的,况且自己写代码的话,脚本的灵活性更高。

Locust脚本就是一个普通的Python文件,但是在脚本中必须先定义一个类,然后继承Locust提供的一个HttpUser类。在测试类里,将压测的请求封装到一个函数里,一个简单的Locust脚本就完成了。

看个实际的例子,比如现在要测试这样一个接口

  • URL:http://192.168.2.130:8080/pinter/login
  • 参数:userName=admin&password=1234

在这里插入图片描述

在上面脚本中,login_test是自定义的测试函数,函数上添加了一个装饰器@task,标明此函数是需要Locust并发执行。在函数内调用了父类的client对象中post方法,发起了一次HTTP post请求。

在MyTest类里,必须添加一个wait_time属性,此属性设置了循环调用login_test之间的等待时间,between(1,1)代表等待时间为1秒

04 Locust脚本运行

脚本写好后,需要在命令行上去运行Locust脚本,在cmd下(或者Mac的终端、Linux命令行),进入到脚本目录,执行命令

在这里插入图片描述

然后在浏览器上访问URL:http://localhost:8089/,就可以打开Locust的压测控制页面

在这里插入图片描述

05 Locust压测执行

在Locust的压测控制页面打开后,就可以针对脚本做一些压测的配置了,比如并发数,压测持续时间,host等,其中:

  • Number of total users to simulate:并发数,代表模拟了多少虚拟用户
  • Hatch rate:每秒产生的用户数
  • Host:目标服务器的ip或域名

点击"Start swarming",即可开始压测,在web页面会上统计出实时的性能汇总数据

字段解释:

在这里插入图片描述

TPS和响应时间曲线图:

在这里插入图片描述

好啦,关于Locust的入门,今天就介绍这么多啦,后续会继续介绍Locust的高级特性和详细功能,敬请期待!

 总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2165539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10种数据库技术的发展历程与现状

数据库是互联网的基石,存储着海量信息,使信息可被高效地组织、检索和分享。没有数据库,网站无法记忆用户数据,应用无法提供个性化服务,信息交流将失去智能与连贯性。因此,数据库技术极大地推动了互联网的发…

如何使用 Windows 自带的虚拟机 Hyper-V

当前环境: Windows 10 Pro 开启 Hyper-V 功能 开启 Hyper-V 功能 开始菜单, 搜索 “control” 打开控制面板点击 “程序” > “启用或关闭 Windows 功能”开启所有的 Hyper-V 选项 安装虚拟机 准备系统镜像 .iso 文件 进入 itellyou.cn 进行下载所需镜像我选择的是: Wind…

nginx部署手册

1、在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel yum -y install gcc pcre-devel zlib-devel openssl openssl-devel2、 新建nginx用户 (1)groupadd 命令用于创建一个新的用户组 groupadd nginx(2&#…

鸿蒙开发(NEXT/API 12)【基础功能(EnterpriseAdminExtensionAbility开发指南)】企业设备管理服务

概述 企业设备管理扩展能力,是设备管理应用必备组件。当开发者为企业开发设备管理应用时,需继承EnterpriseAdminExtensionAbility,在EnterpriseAdminExtensionAbility实例中实现MDM业务逻辑,EnterpriseAdminExtensionAbility实现…

Xcode 16 上传AppStore遇到第三方库 bitcode 的问题

Xcode 16 上传AppStore遇到第三方库 bitcode 的问题 最近两天更新了Xcode 16,然后正好要发布新版本的App,打包Adhoc没问题,但是上传AppStoreConnect或者TestFlight就不行解决方案参考资料 最近两天更新了Xcode 16,然后正好要发布新…

【裸机装机系列】15.kali(ubuntu)-重装linux步骤

推荐阅读: 1.kali(ubuntu)-为什么弃用ubuntu,而选择基于debian的kali操作系统 如果你想重装linux系统,因为装机时采用了LVM分区的方式,那就可以按照下面步骤来操作: 保留 /home分区,“/swap”可以不动&am…

修改Opcenter EXFN 页面超时时间(Adjust UI Session Extend Token)

如果你想修改Opcenter EXFN中页面Session的超时时间,你可以按照如下步骤修改SessionAge 这个参数: 管理员运行CMD执行以下命令 umconf -getconfig -file C:\temp\config.json如果第2步有报错,则执行步骤4;如果没有报错则执行第5步如果第2步…

权限维持——Linux

前提 已经提权到管理员权限 一、创建账户 1、创建一个自定义密码的账户 已知,Linux中所有的用户的信息 存储在/etc/passwd这个文件中 。可以利用管理员权限修改这个文件, 添加一个账户 。 利用linux中的密码的编码算法 生成对应密码 (不知…

2024年”3D Awards”优秀作品提名新鲜出炉

第九届渲染大赛落下帷幕, 有些小伙伴可能还没过瘾, 这不, 一年一度”3D Awards“优秀作品提名, 新鲜出炉! 效果图提名(排名不分先后) 作品设计:Korolyov Ilya,Studio N…

【笔记】1.3 塑性变形

一、塑性变形的方式 DDWs(Dislocation-Dipole Walls,位错偶极墙):指由两个位错构成的结构,它们以一种特定的方式排列在一起,形成一个稳定的结构单元。 DTs(Dislocation Tangles,位错…

市面第一款 C++ 版本的U盘装机软件(即将上线)

市面大部分U盘装机软件,都是采用Au3脚本开发,而且有各种捆绑,闲来无聊,采用Qt C制作一款CU盘装机软件,从此告别Au3脚本,各种炫酷界面随便换,敬请期待 另外两个界面暂时不公布,防止Au…

CKKS同态加密通用函数近似方法和openFHE实现

摘要 同态加密可以直接在密文上进行运算,尤其是CKKS,可以直接在实数的密文上进行运算。服务器可以利用强大的计算能力,在不泄露用户隐私的情况下,为用户提供便捷的外包运算服务。然而,CKKS只能进行算术运算&#xff0…

【第2章 开始学习C++】进入C++

文章目录 导语C语言输入和输出main( )函数作为接口的函数头C预处理器和iostream文件头文件名名称空间使用 cout 进行 C 输出控制符 endl 导语 首先介绍一个显示消息的简单C程序。 源代码中包含一些供读者阅读的注释, 这些注释都以 // 打头, 编译器将忽…

patroni高可用测试

pkill postgres 主库日志 2024-09-25 16:42:30,579 INFO: no action. I am (postgres-1a86e6d5-0-0), the leader with the lock 2024-09-25 16:42:40,577 INFO: no action. I am (postgres-1a86e6d5-0-0), the leader with the lock 2024-09-25 16:42:50,578 INFO: no action…

Linux基础之文件系统

一、磁盘结构的认识 首先我们能认识到的一点是:不是所有的文件都被打开的! 大部分文件都不是被打开的(当前并不需要被访问),都在磁盘中进行保存。那么没有被(进程)打开的文件,要不要…

Python 中什么是 Mock 对象?如何在测试中使用

Python 中什么是 Mock 对象?如何在测试中使用 在软件开发中,测试是确保代码质量的重要环节。尤其是在编写单元测试时,测试的准确性和可靠性至关重要。为了确保测试的有效性,开发者通常会使用 Mock 对象。本文将详细介绍 Mock 对象…

深度学习基础案例7--马铃薯病识别,对VGG16进行轻量级优化,计算量减少了99%,但是准确率下降4%

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 本来想继续优化的,但是我看论文和查阅一些资料,涉及到了知识蒸馏、量化的知识,这些知识我需要花一点时间去研究一下&…

4. 数据结构: 对象和数组

数字、布尔值和字符串是构建数据结构的原子。不过,许多类型的信息需要不止一个原子。对象允许我们对值(包括其他对象)进行分组,从而构建更复杂的结构。到目前为止,我们所构建的程序都受到限制,因为它们只能…

MyBatis 入门教程-搭建入门工程

Maven作为一个优秀的项目构建和管理工具,在日常的开发中被大多数开发者使用,后续的项目也是基于Maven来构建。 创建一个Maven项目 利用IDEA创建项目工具来创建一个Maven项目 添加MyBatis的依赖 这里可以从Maven仓库地址中进行查看, https://mvnrepository.com/ 从这里可…

SUB1G无线通信模块赋能对讲机无线联网

一、模组介绍: ANS TKM-220是一款专为LPWAN物联网应用而研制的SUB1G无线模组,使用全新的TurMassTM 技术,具有超大容量 、高速率 、广覆盖和低成本的特点,处于国际领先水平 。 二、模组特点: ◉ 采用独创的TurMass™…