性能测试利器 - Locust框架解析
Posted 软件测试君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能测试利器 - Locust框架解析相关的知识,希望对你有一定的参考价值。
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(里面有各种软件测试资源和技术讨论)
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
好文推荐
转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!
以上是关于性能测试利器 - Locust框架解析的主要内容,如果未能解决你的问题,请参考以下文章