工具:python 3.8.2 + locust 1.5.3
安装:pip3 install locust
前言:未接触locust前,针对服务端我一般有两种方式进行压测。
1.利用Jmeter,不用过于依赖编程,但是不易维护。
2.利用pytest + asyncio进行并发测试,代码可重用,但是并发的量不能过多,而且没有一个结果报表展示给测试人员,只能通过控制台打印的日志卡顿程度或者服务是否直接奔溃来做出性能判断。
相比之下locust显得非常方便,编写也简单,下面开始介绍locust,我会以我这两天的学习结果以及用最简单粗暴的方式分享给大家,让大家尽快上手。有问题的地方也请大家指出来,一起进步。
接口:https://api.yonyoucloud.com /apis/dst/ncov/spreadQuery
概念介绍:
Locust翻译成中文意思是“蝗虫”,但是我更喜欢把locust这个工具比喻成一个师或更多的军队,原因如下:
1.进行压力测试,我们首先要确定测试对象,也就是我们军队要攻占的地方。比如上述的接口域名:https://api.yonyoucloud.com
2.进攻方式(继承于TaskSet),该类下面的每一个使用了@task装饰器的方法都是一个独立的任务。@task(1),@task(5),括号内的数字是每个士兵接取到任务概率的比重。
3.进攻的频率要利用wait_time来进行控制。比如你要求士兵们每五秒发起一次进攻,那么wait_time = constant(5);指定时间范围wait_time = between(1,10),这个时候每个士兵每次进攻的时间就随机在1~10秒内了。wait_time = constant_pacing(5),任务执行时间超过5秒则放弃本次任务并开始执行新接取到的任务,反之任务执行时间少于5秒则等待剩余时间,然后执行接取的新任务。
4.HttpUser和User都是性能测试的模拟用户的模板。
一个例子:
from locust import User, task, between, constant, TaskSet