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

软件测试君 软件测试君     2023-01-15     195

关键词:

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的高级特性和详细功能,敬请期待!

下面是测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

如何使用 Locust 进行 UI 性能测试?

】如何使用Locust进行UI性能测试?【英文标题】:HowtouseLocustforUIperformancetesting?【发布时间】:2019-12-0508:18:27【问题描述】:我想使用Locust进行UI性能测试。如何获取HTML元素(img、列表等)的加载时间?谢谢【问题讨论】:【参... 查看详情

性能测试工具locust和jmeter比较-及相关书籍下载

ApacheJMeter™和Locust都是是最受欢迎的性能测试工具。JMeter和Locust-简介JMeter是久经考验的性能框架之一,其第一个版本大约在20年前发布。它是用纯Java语言编写的。最初,JMeter开发用于执行Web和FTP应用程序的负载测试。但是,现... 查看详情

locust压测框架实战:http脚本编写(代码片段)

...触过Locust,请先阅读Locust系列的上一篇文章吧:性能测试利器-Locust框架解析##01使用Locust发送GET请求对于GET类型的HTTP请求,可以使用self.client.get()函数。比如请求这样一个GET接口:http://192.168.2.130:8080/pinter/com/getSku?... 查看详情

性能测试工具locust源码浅析(代码片段)

...:http://testqa.cn/article/detail/235近期由于有项目需要做性能评测,于是半道出家的我便从选择性能测试工具,开始了我的性能之旅。为什么要做工具评测作为性能测试的老司机们而言,要么对各大性能测试工具 查看详情

locust性能测试4-参数关联(代码片段)

前言前面【Locust性能测试2-先登录场景案例】讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点,需要先从页面上动态获取参数,作为登录接口的请求参数,如【学信网:https://account.chsi.com.cn/pas... 查看详情

基于locust的性能测试平台搭建

前段时间加入性能测试组,并参与搭建基于locust的性能测试平台,我分到的任务相对独立,开发locust的启动接口和停止运行接口,以下是locust运行的相关内容  查看详情

locust性能测试5-参数化登录

前言实现场景:所有并发虚拟用户共享同一份测试数据,并且保证虚拟用户使用的数据不重复。例如,模拟10用户并发注册账号,总共有100个手机号,要求注册账号不重复,注册完毕后结束测试准备数据虚拟用户locust1locust2locust3l... 查看详情

locust框架(初步安装使用)

...quests 安装完成后切换到《测试脚本》所在目录,启动性能测试:locust-fE:Automation_performance_locustload_test.py(脚本路径)--web-host=127.0.0.1 执行成功后,打开:127.0.0.1:8089 查看详情

性能测试工具jmeter和locust比较

前言ApacheJMeter和Locust都是是最受欢迎的性能测试工具。当你想做性能测试的时候,你会选择什么样的测试工具呢?是会选择jmeter?locust?今天,笔者将根据自己使用经验,针对jmeter、locust常用的性能测试工具进行简单介绍和对比... 查看详情

locust性能测试1-环境准备与基本使用(代码片段)

Locust简介Locust是一款易于使用的分布式用户负载测试工具。它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户。这个想法是,在测试期间,一群蝗虫(Locust)会攻击你的网站。您定义了每个蝗虫Locust... 查看详情

locust负载测试框架

Locust是一个简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试。以下是github上的仓库地址https://github.com/yileye/locust官网地址:http://locust.io/Locust特性使用Python编写模拟用户行为的代码,无需繁琐的配置分布式可... 查看详情

性能测试工具locust+httprunner问题汇总

【Locust】1.安装提示Nomodulenamedgevent安装VS版本,在pythonhttp://www.360doc.com/content/15/0414/13/12067640_463121220.shtmltoolskey=2.打印输出结果response.content内容[可通过写入txthtml文件校验结果]response.status_code状态码[各种状态码判定小 查看详情

性能测试使用locust进行接口的性能测试(一)(代码片段)

前置知识:《【性能测试】性能测试基础》《【接口测试实战(零)】接口测试简介》文章目录1)接口性能测试1.1常见指标:QPS(QueriesPerSecond,每秒查询率):*QPSVS.TPSRT(ReactionTime,响应时间ÿ... 查看详情

性能测试使用locust进行接口的性能测试(一)(代码片段)

前置知识:《【性能测试】性能测试基础》《【接口测试实战(零)】接口测试简介》文章目录1)接口性能测试1.1常见指标:QPS(QueriesPerSecond,每秒查询率):*QPSVS.TPSRT(ReactionTime,响应时间ÿ... 查看详情

locust性能测试简谈(代码片段)

例子:#-*-coding:utf-8-*-fromlocustimporttask,TaskSet,HttpLocustclassUserBehavior(TaskSet):#继承一个TaskSet类,定义用户行为@task(1)#@task()装饰该方法为一个任务,1表示一个Locust实例被挑选执行的权重,数值越大,执行频率越高defbaidu(self):self.client.g... 查看详情

性能测试之locust(代码片段)

最近接触了性能压测的一款工具Locust,分享下:一、首先说下压测工具对比:Jmeter:开源免费:JMeter是一款免费的开源软件,使用它不需要支付任何费用跨平台:java开发的开源软件小巧:相比LR的庞大(LoadRunner4GB左右),它非常小... 查看详情

张同乐-从零开始,打造高效可靠的locust性能测试

...以模拟成千上万的用户同时访问你的应用程序,以测试其性能和稳定性。这个工具具有易于使用、可扩展和高度可定制化等特点,因此被广泛应用于各种类型的应用程序的负载测试中。在本视频教程中,我们将为您介绍Locust的基... 查看详情

locust性能评测及优化详解(代码片段)

文章目录Locust性能评测及优化详解性能评测环境准备1、压测环境准备2、服务环境准备3、压测工具准备压测开始LocustJmeterabhttp_load压测说明性能优化Locust优化项测试Locust默认是否为keep-alive替换为urllib3实现client替换为socket实现clien... 查看详情