Python实现性能自动化测试

一、思考❓❔

1.什么是性能自动化测试?

  • 性能
    • 系统负载能力
    • 超负荷运行下的稳定性
    • 系统瓶颈
  • 自动化测试
    • 使用程序代替手工
    • 提升测试效率
  • 性能自动化
    • 使用代码模拟大批量用户
    • 让用户并发请求
    • 多页面多用户并发请求
    • 采集参数,统计系统负载能力
    • 生成报告

2.Python中的性能自动化测试库? 

locust库

  • 使用Python
    • 使用代码来创建批量用户
  • 分布式
    • 可以在多台服务器上,进行分布式性能测试
    • 可伸缩性强
  • 稳定、应用广泛
    • 经得住各种场景下的考验
    • 基于web ui界面展示测试详情
    • 能测任何系统

 二、基础操作🔨🔨

 

1.安装locust

  • 使用官方pypi源来安装
    • pip install locustio
  • 使用豆瓣pypi源来安装(推荐)
    • pip install -i https://pypi.douban.com/simple locustio

安装成功之后,在cmd控制台将会新增一条命令,可输入如下命令查看:

locust --help

2.基本用法

在项目根目录下创建locustfile.py文件

 

from locust import Locust, TaskSet, task
 
 
class MyTasks(TaskSet):
    """
    创建测试任务类,需要继承TaskSet
    可以添加多个测试任务
    """
    # 每个测试任务,往往会以实例方法的形式来呈现
    # 同时需要使用task装饰器来装饰测试任务
    @task
    def one_task(self):
        print("执行一个伟大的测试任务!")
 
 
class RunTasks(Locust):
    """
    创建运行测试类,需要继承Locust父类
    """
    task_set = MyTasks   # 指定测试任务类,使用task_set覆盖父类的类属性
    min_wait = 2000      # 指定启动任务间隔的时间范围(单位毫秒):2~5秒之间
    max_wait = 5000	     # 使用min_wait、max_wait覆盖父类的类属性
 

执行性能测试

# 打开Pycharm Terminal控制台
# 运行如下命令:
locust
  • 运行之后,控制台会在本地监听一个端口

a. 程序文件要命名为 locustfile.py才行

b. 假如命名为one_example.py,则需要这样运行

locust -f one_example.py

  • 在浏览器打开UI设置界面

    • 默认使用localhost:8089打开

 

三、综合案例演练🔨🔨

1.编写自动化测试脚本

  • 在项目根目录下创建test_load.py文件
    from locust import HttpLocust, TaskSet, task
     
     
    class AdminLoadTest(TaskSet):
        """
        创建后台管理站点压测类,需要继承TaskSet
        可以添加多个测试任务
        """
        def login(self):
            """
            登录实例方法
            :return: 
            """
            self.client.post("http://localhost:8088/users/login/",
                             {"user_account": "admin", "password": "123456"})
     
        def logout(self):
            """
            登出实例方法
            :return:
            """
            self.client.get("http://localhost:8088/users/logout/")
     
        def on_start(self):
            """
            当任何一个task调度执行之前,
            on_start实例方法会被调用
            先登录
            :return:
            """
            self.login()
     
        def on_stop(self):
            """
            当任何一个task调度执行之后,
            on_stop实例方法会被调用
            后登出
            :return:
            """
            self.logout()
     
        @task
        def admin_index(self):
            """
            对后台主页进行压测
            :return:
            """
            self.client.get("http://localhost:8088/admin/")
     
     
    class RunLoadTests(HttpLocust):
        """
        创建运行压测类
        """
        task_set = AdminLoadTest
     

    2.使用命令行运行

  • 打开Pycharm Terminal控制台,运行如下命令:
  • 注意:--host参数指定http主机地址,-f参数指定压测程序文件名

 

3.打开web ui界面进行配置

设置并发用户数为10,每5秒创建一个用户

压测过程截图

美轮美奂的压测报告

 

压测失败详情

下载压测统计数据

下载的压测统计数据csv文件

四、总结💡💡

 

  • locust做压测功能极其强大
  • 支持分布式部署
  • 提供的接口简单
  • 压测代码非常容易编写
  • 提供UI界面来配置
  • 美观、详细的图表统计

 感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走: 

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/197587.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 装饰器与偏函数

目录 装饰器 概念 简单的装饰器 复杂点的装饰器 通用装饰器 定义通用装饰器 使用装饰器 偏函数 引入类库 应用 总结 装饰器 概念 装饰器就是个闭包;把一个函数当做参数,返回一个修改过功能的函数; 本质上是一个返回函数的函数。…

堆排序(详解)

在上篇文章中,我们说利用堆的插入和删除也可以排序数据,但排序的只是堆里面的数组;同时每次排序数据都要单独写一个堆的实现,很不方便,这次就来着重讲讲如何使用堆排序。 1.建堆 给了你数据,要利用堆对数据…

echarts修改tooltip默认的圆点图标为其他样式

业务需求,默认是圆点,需要把线的由圆点改为线 红色线是理论,点是历史理论,绿色线是实际, 点是历史实际,在series里的顺序也是这样排的。 打印出来的params里的marker就是圆点,改这段代码就可以了…

C#面向对象

过程类似函数只能执行没有返回值 函数不仅能执行,还可以返回结果 1、面向过程 a 把完成某一需求的所有步骤 从头到尾 逐步实现 b 根据开发需求,将某些 功能独立 的代码 封装 成一个又一个 函数 c 最后完成的代码就是顺序的调用不同的函数 特点 1、…

vue项目多个不同的服务器请求地址管理

vue项目多个不同的服务器请求地址管理 在vue项目开发过程中,获取不同的数据可能会出现需要请求多个不同服务器地址的域名,这个时候需要对不同域名的请求地址进行管理以及跨域的代理。 一、单服务器域名地址的跨域代理和请求配置: 跨域配置: 在vue项目的vue.config.js文件…

MYSQL 8.X Linux-Generic 通用版本安装

下载对应版本MySQL :: Download MySQL Community Server (Archived Versions) 这里我选择的是Linux - Generic (glibc 2.12) (x86, 64-bit), TAR 解压到服务器 只需要里面的mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz 在目录下创建需要的文件夹 这里我改名为mysql-8.0.24…

贪心算法(新坑)

贪心入门 概述: 贪心算法是一种在每一步选择中都采取当前最优解的策略,希望最终能够得到全局最优解的算法。简单来说,它会不断地做出局部最优的选择,相信通过这种选择最终能够达到全局最优。 举个例子来说明。假设你要从一个迷…

智能优化算法应用:基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.回溯搜索算法4.实验参数设定5.算法结果6.参考…

fiddler测试弱网别再去深山老林测了,这样做就能达到弱网效果了!

弱网测试 概念:弱网看字面意思就是网络比较弱,我们通称为信号差,网速慢。 意义:模拟在地铁、隧道、电梯和车库等场景下使用APP ,网络会出现延时、中断和超时等情况。 添加图片注释,不超过 140 字&#xf…

【双指针】三数之和

三数之和 在做这道题之前,建议建议先将两数之和做完再做,提升更大~ 文章目录 三数之和题目描述算法原理解法一解法二思路如下:处理细节问题: 代码编写Java代码编写C代码编写 15. 三数之和 - 力扣(LeetCode&#xff0…

AIGC文生图及工具产品简介

AIGC,全称是人工智能生成内容(Artificial Intelligence Generated Content)是继UGC(用户生成内容),PGC(平台生成内容)后,利用人工智能技术,自动生成内容的生产…

C++初阶--String类的使用

string类 在C语言中,我们总是用char* 的类型来创建一个变量,存储一个字符串;当我们想对它进行修改或者读写时,需要自我创建空间和使用string.h的库函数来进行操作它; 而在C中,C专门提供了一个头文件 stri…

Vue2问题:如何全局使用less和sass变量?

前端功能问题系列文章,点击上方合集↑ 序言 大家好,我是大澈! 本文约2400字,整篇阅读大约需要4分钟。 本文主要内容分三部分,如果您只需要解决问题,请阅读第一、二部分即可。如果您有更多时间&#xff…

KernelSHAP vs TreeSHAP

Kernel SHAP和Tree SHAP都用于近似Shapley值。Tree SHAP要快得多。缺点是它只能用于基于树的算法,如随机森林和xgboost。另一方面,Kernel SHAP是模型不可知的(model agnostic),这意味着它可以与任何机器学习算法一起使用。我们将比较这两种近…

基于图像识别的垃圾分类

基于机器学习的垃圾分类 摘要:2019年垃圾分类由上海开始实施,继而向全国推行,主要将垃圾种类进行划分,其分类包括可回收、厨余、有害和其他。本文以垃圾分类为核心展开系列探究,使用机器学习对垃圾进行分类&#xff0…

java中IO知识点概念

这里写自定义目录标题 内存中的数据以电子信号的形式表示,而磁盘中的数据是以磁场的方向表示。1.流的分类2.File类3.流的API 关键4.理解缓冲的作用-一次性多拿些读写文件的时候为什么要有缓冲流 -意义是什么缓冲流的使用 5.路径问题6.文件的创建7.内存和磁盘存储本质…

QT中的 容器(container)-大全

一、介绍 Qt库提供了一套通用的基于模板的容器类&#xff0c;可以用这些类存储指定类型的项。比如&#xff0c;你需要一个大小可变的QString的数组&#xff0c;则使用QVector<QString>。 这些容器类比STL&#xff08;C标准模板库&#xff09;容器设计得更轻量、更安全并…

i已学赋能智慧教育时代的幼儿教育

伴随“教育数字化战略行动”的深入开展,智慧教育正式成为国家战略。智慧教育延伸至家校社教育的每个阶段。当前,为适应智慧教育发展趋势,我国制定了《中国教育现代化2035》《教育部关于加强“三个课堂”应用的指导意见》《教育信息化2.0行动计划》等文件。幼儿作为智慧教育、智…

Blazor Select 实现点击一次选项触发一次后台事件

Blazor的官方案例中&#xff0c;Select组件只有两个事件 1、OnSelectedItemChanged 每次选项的时候改变触发&#xff0c;如果你点击同一个选项是不会触发后台的方法的 2、OnBeforeSelectedItemChange 我们可以用这个事件实现每次点击同一个选项都可以触发后台事件 需要注意下最…

OCR文字识别工具 Cisdem OCRWizard激活最新 for Mac

为了提高内容识别的准确性&#xff0c;Cisdem OCRWizard提供供您选择两种模式&#xff1a;文件或名片。此外&#xff0c;它会自动分析的内容&#xff0c;标志着不同颜色的页面上几个区域根据给定部分的性质&#xff1a;文本&#xff08;绿色标记&#xff09;&#xff0c;图像&a…