高并发Locust高并发接口测试框架介绍

目录

谢春花的歌

https://link.jscdn.cn/sharepoint/aHR0cHM6Ly9oa3VzdGNvbm5lY3QtbXkuc2hhcmVwb2ludC5jb20vOnU6L2cvcGVyc29uYWwvamNoZW5mbF9jb25uZWN0X3VzdF9oay9FVThfNm53Y1ZSQkVtc1FCdzY1WDJnNEJmcnhjaXBrSDdKZHZvWWg2R1Z0ekR3P2U9QUh6cWhP.mp3

什么是locust

locust是一个简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试。locust使用python语言开发,测试资源消耗远远小于java语言开发的jmeter。且其支持分布式部署测试,能够轻松模拟百万级用户并发测试。

什么是性能测试

性能测试目的主要是解决三个问题:

  • 系统及服务能承受的最大负载是多少 ?
  • 有没有性能平瓶颈 ?
  • 如果有性能瓶颈,瓶颈在哪里?

这三个问题需要从测试的结果中分析得出,其中最重要的性能指标有三点:

(1)响应时间

(2)吞吐量

(3)成功率

传统的性能测试工具有很多, 比如 **Apache Bench、JMeter、LoadRunner **等等,它们都能用来持续增加压力。

不过,Apache Bench 之类的专用工具用来做简单的 HTTP 接口测试还行,如果需要做业务接口的串联测试就力有未逮了。

**JMeter **当然功能强大,也有一定的扩展性,但在这节课我并不想用 JMeter , 原因有两点,一是因为 JMeter 是资源消耗黑洞, 每个任务 / 用户都要使用一个线程,二是因为 JMeter 是基于配置的。

相比之下,新一代的性能测试工具 ** Locust** (蝗虫)是基于编程来实现测试用例的性能测试工具,它更加灵活。而且,它使用 Python 代码来定义用户行为,用写 Python 代码的方式来写测试脚本,远离了复杂的配置脚本和图形界面,利用强大而丰富的 Python 类库可以轻松支持各种协议,简单易用,扩展方便。

locust优缺点

优点:

1.不同与wrk和jmeter使用线程数提高并发量,locust借助于协程实现对用户的模拟,相同物理资源(机器cpu、内存等)配置下locust能支持的并发用户数相比jmeter可以提升一个数量级 2.相比wrk对复杂场景测试的捉襟见肘和jmeter需要界面点击录制复杂场景的麻烦,locust只需用户使用python编写用户场景完成测试 3.不同与jmeter复杂的用户使用界面,locust的界面干净整洁,可以实时显示测试的相关细节(如发送请求数、失败数和当前发送请求速度等) 4.locust虽然是面向web应用测试的,但是它可以用来测试几乎所有系统。给locust编写一个客户端,可以满足你所有的测试要求

缺点:

1.同wrk一样,locust测试结果输出不如jmeter的测试结果展示类型多

运行

运行脚本如下:

from config.config_read import read_yml_file, read_test_data
from locust import HttpUser, task

headers = read_yml_file('./config/config.yml')['headers']
params = read_test_data('./config/test_data_process.yml', 'findByPidAndStatusActive')[0]



class Quickstart(HttpUser):
    min_wait = 100  # 最小等待时间(ms),模拟用户在执行每个任务之间等待的最小时间
    max_wait = 500  # 最大等待时长(ms),模拟用户在执行每个任务之间等待的最大时长
    host = read_yml_file('./config/config.yml')['baseurl'] # 访问的域名

    def on_start(self):
        #开始任务
        print("start working")

    # 任务target,用@task标记
    @task
    def mytask(self):
        self.client.get('/process/findByPidAndStatusActive', headers=headers, params=params)
  1. 运行脚本方法:
 locust -f ***.py

-f 指定脚本文件路径

  1. 访问locust UI界面

Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces)

  1. 模拟用户访问

    指定模拟的用户数(Number of users),以及孵化率(Spawn rate,每秒增加的用户数), 以及所要测试的服务器地址(Host)。 20230322172524

  2. 查看结果 RPS(Request Per Second): 每秒请求数的变化,它反映了吞吐量 Number of Users, 用户并发数量的变化, 它反映了系统能承受的并发请求吞吐量 Response Time 响应时间的变化

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦