1. 背景
在业务开发完成,并且功能测试也正常,接下来就需要接口性能进行测试,也叫压力测试,即对接口进行极限施压,找到接口瓶颈。对于一般接口,需保证请求的耗时在
300ms
左右最后,但一些接口涉及的业务逻辑复杂,导致耗时严重,并且用户请求量也大,因此需要对该接口进行测试,对照测试的结果修改代码进行优化,比如加缓存等等。所以,如何去测试接口性能的好坏呢?接下来就使用
python
来搭建一个简单的压测脚本。
2. 环境搭建
环境包括:
Python 3.11
,
Locust
包
其中Python可以去官网下载安装:Python3.11,具体的安装步骤可以百度。
当
Python
安装好之后,需安装
Locust
包。以下是官网对于
Locust
的介绍。
简要地讲,Locust非常好用的压测工具。官网链接
输入如下命令,安装
Locust
安装好
Locust
后,编写压测的
python
脚本
3. 脚本文件
- 导入包
from locust importHttpUser, task
- 建立类对象,填入压测的接口
from locust import HttpUser, task
classLocustTest(HttpUser):
host ="http://localhost:8084"# hostdefon_start(self):print("start working")@task(1)deflocust_test(self):
header ={"Content-Type":"application/json"}
data ={}print("正在请求!!!")
self.client.post("/locust-test/print-log", data=data, headers=header)
- 以上就是一个基本的压测脚本,在脚本中包括: -
host
:服务地址-header
格式,data
格式-url:"/locust-test/print-log"
-on_start
: 包里自带方法,在脚本启动时执行。- 最重要的一点,要在方法上加上@task注解,括号里面的数据是一个权重,权重搞,压测的请求就分配的愈多,在对多个接口测试时有用,单个不起重要,毕竟就一个接口。 - 脚本运行的命令:
locust -f *.py(脚本的名字)
4. 压力测试demo
- 搭建后台服务,并启动
@Slf4j@RestController()@RequestMapping("/locust-test")publicclassLocustTestController{@PostMapping("/print-log")publicvoidlocustTest(){
log.info("locustTest....");// 接口访问后,打印一条日志。}}
- 启动脚本
- 浏览器输入地址:http://localhost:8089进入压测的监控界面 - 在界面填入,用户的总量、每秒增加的用户数,点
start swarming
即可进入监控界面
- 监控界面展示 - 目前共有
30
个并发,请求量每秒达到10447
- 后台服务日志打印
- 其他的监控数据
- 压测数据下载
5. 结尾
以上就是利用
Python
中
Locust
的包实现了接口的压力测试。搭建非常的方便,并发数量方便可控制、各项数据展示非常清晰。如果有时间,可以本地搭建,测试本机能承受的最高压力喔。
版权归原作者 CodeJames 所有, 如有侵权,请联系我们删除。