一直听开发说用locust做压测很方便,也没实际用过。最近刚刚好在学httprunner,看官方文档的时候发现这个自动化框架可以支持结合locust做性能压测,那我们今天就一起来学习下如何使用Locust吧!
我一般学一个新东西,会先去看官方文档,知道这个到底是做什么的,有什么好处,然后再去了解如何使用。最后,百度搜索下案例,自己写一下练练手。
官网地址如下:https://docs.locust.io/en/latest/what-is-locust.html#
官方对Locust的解释是:
Locust是一个易使用的分布式用户负载测试工具,它可以用来对网站或其他系统进行负载测试,并且可以确定系统可以处理多少个并发用户。
Locust是基于python的一个性能测试工具,Locust的中文解释:蝗虫
一、安装
常规操作:pip install losuctio
这里说一下我下载的时候的坑:明明已经下载了visual 14.0还是报错。
解决方案:
下载vc++ 运行库集合,百度搜就行了。
控制台输入 locust --help 不报错就说明你安装成功了
二、基本用法
WebsiteUser继承HttpLocust继承locust 表示每一个HttpLocust就是一个测试用例
UserBehavior继承TaskSet 表示实际业务场景测试对应的任务集
on_start方法: 相当于初始化的操作,每次执行任务时都必须先执行on_start的方法。
on_stop方法:
每个任务执行完成之后,都会调用on_stop内的方法。
@Task用法:有task标记的表示一个任务,当任务的数值越大时,每次被虚拟用户执行的概率越高,数值越大,执行频率越大。不设置默认为1
min_wait: 执行事务之间用户最小等待时间
max_wait: 执行事务之间用户最大等待时间
执行命令:
locust -f 文件名 -- host='url地址'
运行结果:
打开浏览器,输入端口号
Number of total users to simulate:设置模拟用户数
Hatch rate:每秒产生(启动)的虚拟用户数。
点击 “Start swarming” 按钮,开始运行性能测试。
三、UI结果分析
和Jemeter查看聚合报告分析差不多
Type:请求的类型,例如GET/POST
Name: url路径地址 相对url
Request:当前请求的数量
Fails: 失败的请求
Median:中间值
90%ile:90%线程数
Average:平均值
Min:最小响应时间,单位为毫秒
Max:最大响应时间,单位为毫秒
Average size:平均数据量大小
四、总结
Locust和Jmeter不同的是,Locust可以通过写代码来实现性能测试,并且有对应的UI展示,而且Locust单机承受的并发量比jmeter大,1000+的单机用户并发Jmeter效率太低。此外,Locust需要手动添加代码来跑,对一些不会Jemter的开发同学很友好,测试同学也可以用来多练习代码。