IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Locust压测框架入门 -> 正文阅读

[开发测试]Locust压测框架入门

Locust是一个容易使用、分布式的压力测试工具。
它是用于网站压力测试(或其它系统)
并找出多少用户一个系统可以承载。
在测试过程中,策略就是一个Locust的蠕虫将会攻击你的网站。
每一个locust的行为(或你使用的测试用户)是你自己定义的,
并且蠕虫进程从一个网页视图中被实时监测。这样会帮助你来实现测试,
在真实用户使用前定义系统的瓶颈。
Locust是完全基于事件的,因此可以在单台机器中支持数以千计的用户在线。
和其它基于事件的程序相比较,它是不需要使用回调的。
相反,它通过gevent使用轻量级的进程。每一个locust测试你的网站时,
实际上是真实的在内部运行它自己的进程(或greenlet,准确的说)。
这样就允许你不使用复杂的回调方法,而是使用Python编写复杂的场景。

关于Locust:

1、locust作为一款性能测试工具,没有单独的ui界面,可以说是python下的一些库的集成

locust完全基于python作为编程语言,采用pure python描述测试脚本,其中的http请求也是完全基于Requests库,除了HTTP/HTTPS协议,locust也可以测其他协议的系统,只需要采用python调用对应的库进行请求描述即可,可以说python对应的库还是非常齐全的。

2、与jmeter相比较而言,locust更加的轻量化,采用的是不同于jmeter中进程和线程的处理机制(协程【微线程】),有效避免了系统的资源调度,由此可以大幅度的提高单击系统的并发能力

特点:
开源的性能测试框架
不需要单独安装软件,只需要安装导入python库
可以分布式操作,模拟大量用户
具体web界面,可以进行性能测试操作
需要一定的代码能力,开发对应的脚本
安装:
pip install locustio ==0.12.2
通过 Pycharm 进行安装
第一步,安装

依然是老伙伴pip工具(完美安装依赖)

pip install Locust

Locust有六个依赖的python模块

1.gevent:在Python中实现协程的第三方库。协程又叫微线程Corouine。使用gevent可以获取极高的并发能力;

2.flask:Python的一个web开发框架,和django相当;

3.requests:支持http/https访问的库;

4.msgpack-python:一种快速、紧凑的二进制序列化格式,使用与类似json的数据;

5.six:提供了一些简单的工具封装Python2和Python3 之间的差异;

6.pyzmq:安装这个第三方库,可以把Locust运行在多个进程或多个机器(分布式)

安装结束了之后我们就开启Locust之旅了。

?

编写测试脚本的步骤:

?定义任务:

#定义任务
#登录
def login(l):
    l.client.post("/login",data={"username": "admin", "password": "123456"})
#首页
def index(l):
    l.client.get("/index")
#获取用户信息
def profile(l):
    l.client.get("/profile")
#退出
def logout(l):
    l.client.post("/logout")
定义任务集(用户行为):
任务集:用户行为的集合

?

#定义任务集
class UserBehaiver(TaskSet):
    tasks = {index:4,profile:1}

    def on_start(self):
        login(self)

    def on_stop(self):
        logout(self)
定义 locust 类:
定义用户,关联用户行为集合,控制用户行为的执行

?

#定义用户类
class UserWebsite(HttpLocust):
    task_set = UserBehaiver
    min_wait = 1000
    max_wait = 1500
    host = "http://bms-test.itheima.net/bms"
    weight = 10

----------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------

from locust import TaskSet,HttpLocust
#定义任务
#登录
def login(l):
    l.client.post("/login",data={"username": "admin", "password": "123456"})
#首页
def index(l):
    l.client.get("/index")
#获取用户信息
def profile(l):
    l.client.get("/profile")
#退出
def logout(l):
    l.client.post("/logout")


#定义任务集
class UserBehaiver(TaskSet):
    tasks = {index:4,profile:1}

    def on_start(self):
        login(self)

    def on_stop(self):
        logout(self)

#定义用户类
class UserWebsite(HttpLocust):
    task_set = UserBehaiver
    min_wait = 1000
    max_wait = 1500
    host = "http://bms-test.itheima.net/bms"
    weight = 10
运行 Locust

在浏览器中输入:localhost:8089,回车,就可以看到界面(启动成功):?

?

启动压测执行:
填写对应的虚拟用户数,及用户的启动速度,点击开始测试

?

Locust执行测试时系统指标的监控—— 类似于Jmeter中的聚合报告

?

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:47:11  更:2021-12-24 18:47:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:36:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码