• 测试开发日记:locust压测带你小试牛刀


     

    locust简介

    locust是一个基于python的开源的性能测试框架,一个易于使用的基于事件的分布式用户负载工具。

    优点是并发高,即一个locust节点也可以在一个进程中支持数千并发用户,资源占用小,不使用回调,通过gevent使用轻量级过程。缺点是报告简陋,如果想得到详细的报告内容则需要使用人员进行定制的二次开发,不支持资源监控。

    Python通过yield提供了对协程的基本支持,但是不完全。而第三方的gevent为Python提供了比较完善的协程支持。gevent是第三方库,通过greenlet实现协程,其基本思想是:

    当一个greenlet遇到IO操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。由于IO操作非常耗时,经常使程序处于等待状态,有了gevent为我们自动切换协程,就保证总有greenlet在运行,而不是等待IO。

    注意:使用gevent,可以获得极高的并发性能,但gevent只能在Unix/Linux下运行,在Windows下不保证正常安装和运行。

    locust与jmeter3的区别

    工具区别
    jmeter需要在UI界面上通过选择组件来“编写”脚本,模拟的负载是线程绑定的,意味着模拟的每个用户,都需要一个单独的线程。单台负载机可模拟的负载数有限
    locust通过编写简单易读的代码完成测试脚本,基于事件,同样配置下,单台负载机可模拟的负载数远超jmeter

    安装locust

    前提:已经搭建安装好python环境,查看是否安装命令:python --version

    1.1 安装locust,直接pip安装,打开终端输入:pip install locust

    1.2 安装完毕后,验证是否安装成功的命令:locust --version

    操作步骤

    第一步:以下创建一个简单的demo程序进行测试,此处我将该程序命名为:locust file.py,并且放在D盘根目录下。 ​

    1. from locust import HttpUser,task
    2. import logging
    3. class point(HttpUser):
    4.  @task
    5.  def login(self):
    6.        logging.captureWarnings(True)
    7.        palyed2 = {"email": "org589", "password": "Abc12345"}
    8.        # https请求添加verify
    9.        response=self.client.post(f'/api/auth/login/',json=palyed2,verify=False)
    10. # 断言
    11. if response==200:
    12.            response.success()
    13.   else:
    14.     response.failure('Failed!')
    15.        # 在5-15秒区间内随机取值
    16.        wait_time = between(5, 15)

    相关参数介绍如下:

    ①@task:是添加一个task的最简单的方式,相当于jmeter中的http sampler。如果使用的是@task(n),n代表的是weight,用于指定task执行的比率,也即权重。

    ②wait_time:User类中包含一个可选项wait_time,用于设置在每个task运行之后的等待时间,如果不设置wait_time,会马上执行下一个task。

    更多详细参数可查阅:Locust使用方法_白布鸟的博客-CSDN博客_locust使用

    第二步:直接进入文件所在路径,以下有3种方式进入该路径:

    (1)windows打开cmd窗口,命令为:cd D:\locust file.py

    (2)linux打开terminal

    (3)pycharm等编码工具打开terminal,也即控制台

    第三步:在terminal中输入以下命令,启动Locust服务。

    (1)打开GUI界面

    locust -f locustfile.py
    ​
    locust -f locustfile.py --host=https://xxx.com

    --host:被测试的url

    通过浏览器访问localhost:8089,即可通过简易的web界面输入一些目标测试参数,并执行测试,实时展示相关测试结果。

     

    执行测试完毕后,结果展示如下:

     

     

    (2)无GUI界面

    locust -f locustfile.py --headless -u 100 -r 10 -t 10s  --csv=result --html=report.html

    --headless 表示不启动界面

    -u [数量] 设置虚拟用户数

    -r [时间] 每秒钟启动虚拟用户数

    -t [时间] 设置测试多长时间

    ----秒,数字后面加上 s ,例如 10s

    ----分钟,数字后面加上 m,例如 1m

    ----小时,数字后面加上 h,例如 1h

    --csv:保存csv报告,默认会保存4个,如下图

    img

    --html:保存HTML格式报告

  • 相关阅读:
    Docker-Compose安装Gitlab
    函数绘图仪 MathGrafix 12.1 Crack
    递归关系的渐进时间复杂度推导
    【Nginx】Nginx双机热备
    React中为啥key不可以使用索引值index?(超详细版本)
    C++项目——集群聊天服务器项目(六)MySQL模块
    STM32 cubemx hal库huart串口接收不到第一帧数据或数据全为0的问题
    极客日报:王者荣耀道歉:因新游海报擅用原神素材;Facebook改名为Meta;Node.js v16.13.0发布
    Spring Boot 实现字段唯一校验
    Python+Selenium自动化测试项目实战
  • 原文地址:https://blog.csdn.net/rainshine1190/article/details/127812568