手把手搭建一个压测脚本

1. 背景

        在业务开发完成,并且功能测试也正常,接下来就需要接口性能进行测试,也叫压力测试,即对接口进行极限施压,找到接口瓶颈。对于一般接口,需保证请求的耗时在300ms左右最后,但一些接口涉及的业务逻辑复杂,导致耗时严重,并且用户请求量也大,因此需要对该接口进行测试,对照测试的结果修改代码进行优化,比如加缓存等等。所以,如何去测试接口性能的好坏呢?接下来就使用python来搭建一个简单的压测脚本。

2. 环境搭建

        环境包括:Python 3.11Locust

        其中Python可以去官网下载安装:Python3.11,具体的安装步骤可以百度。

        当Python安装好之后,需安装Locust包。以下是官网对于Locust的介绍。

手把手搭建一个压测脚本_第1张图片

         简要地讲,Locust非常好用的压测工具。官网链接

        输入如下命令,安装Locust
在这里插入图片描述

        安装好Locust后,编写压测的python脚本

3. 脚本文件

  • 导入包
from locust import HttpUser, task
  • 建立类对象,填入压测的接口
from locust import HttpUser, task

class LocustTest(HttpUser):

    host = "http://localhost:8084"  # host

    def on_start(self):
        print("start working")

    @task(1)
    def locust_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")
public class LocustTestController {

    @PostMapping("/print-log")
    public void locustTest(){
        log.info("locustTest...."); // 接口访问后,打印一条日志。
    }
}
  • 启动脚本

在这里插入图片描述

  • 浏览器输入地址:http://localhost:8089进入压测的监控界面
    • 在界面填入,用户的总量、每秒增加的用户数,点start swarming即可进入监控界面

手把手搭建一个压测脚本_第2张图片

  • 监控界面展示
    • 目前共有30个并发,请求量每秒达到10447

在这里插入图片描述

  • 后台服务日志打印

手把手搭建一个压测脚本_第3张图片

  • 其他的监控数据
    手把手搭建一个压测脚本_第4张图片

  • 压测数据下载

手把手搭建一个压测脚本_第5张图片

5. 结尾

        以上就是利用PythonLocust的包实现了接口的压力测试。搭建非常的方便,并发数量方便可控制、各项数据展示非常清晰。如果有时间,可以本地搭建,测试本机能承受的最高压力喔。

你可能感兴趣的:(测试,python,开发语言,压力测试,Locust)