程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

测试开发干货分享:locust压测带你小试牛刀

balukai 2024-12-23 16:52:12 文章精选 31 ℃

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盘根目录下。

# -*- coding: utf-8 -*-
# @Time:2022/4/30 17:45
# @Author: xiaodong

from locust import HttpUser,task
import logging

class point(HttpUser):
  @task
  def login(self):
        logging.captureWarnings(True)
        palyed2 = {"email": "org589", "password": "Abc12345"}
        # https请求添加verify
        response=self.client.post(f'/api/auth/login/',json=palyed2,verify=False)

        # 断言
        if response==200:
            response.success()
        else:
            response.failure('Failed!')
        # 在5-15秒区间内随机取值
        wait_time = between(5, 15)

相关参数介绍如下:

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

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

更多详细参数可查阅:https://blog.csdn.net/Telfort/article/details/114686675

第二步:直接进入文件所在路径,以下有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个,如下图

--html:保存HTML格式报告

如果感觉不错的话麻烦点个关注,跪谢,欢迎关注我们的公众号:橙好测试开发!

最近发表
标签列表