性能自动化测试?

一、思考❓❔

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, taskclass MyTasks(TaskSet):"""创建测试任务类,需要继承TaskSet可以添加多个测试任务"""# 每个测试任务,往往会以实例方法的形式来呈现# 同时需要使用task装饰器来装饰测试任务@taskdef 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覆盖父类的类属性

执行性能测试

  1. # 打开Pycharm Terminal控制台

  2. # 运行如下命令:

  3. 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, taskclass 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()@taskdef 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界面来配置
  • 美观、详细的图表统计

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

短线买入卖出有哪些交易技巧?

前面两节课,我们认识了短线交易,知道了短线交易常见的买入卖出时机,这节课,我们来讲解一下短线买入卖出的一些交易技巧。话不多时,直接进入重点! 一、短线交易要果断 短线波动快,在出现买卖信号…

根文件系统构建-对busybox进行配置

一. 简介 本文来学习 根文件系统的制作中,关于 busybox的配置。 本文继上一篇 busybox中文支持的设置,地址如下: 根文件系统构建-busybox中文支持-CSDN博客 二. 根文件系统构建-busybox配置 1. 配置 busybox 与我们编译 Uboot 、 Lin…

Kubernetes技术与架构-策略

Kubernetes集群提供系统支持的策略,也提供开放接口给第三方定义的策略,这些策略用于可定义的配置文件或者Kubernetes集群的运行时环境,其中包括进程ID数量的申请与限制策略,服务器节点Node内的进程ID的数量限制策略,Po…

【U8+】用友U8删除固定资产卡片,提示:当前卡片不是本月录入的卡片,不能删除。

【问题描述】 用友U8软件,参照已有账套新建账套的时候,选择结转期初余额。 例如:参照已有账套的2022年新建2023年的账套。 结转期初的时候勾选了固定资产模块, 建立成功后登录23年新的账套后,删除固定资产卡片&#xf…

Kafka生产者发送消息的流程

Kafka 生产者发送消息的流程涉及多个步骤,从消息的创建到成功存储在 Kafka 集群中。以下是 Kafka 生产者发送消息的主要步骤: 1. 创建消息 生产者首先创建一个消息,消息通常包含一个键(可选)和一个值,以及…

2023年亚太杯数学建模A题解题思路(*基于OpenCV的复杂背景下苹果目标的识别定位方法研究)

摘要 由于要求较高的时效性和劳力投入,果实采摘环节成为苹果生产作业中十分重要的一部分。而对于自然环境下生长的苹果,光照影响、枝叶遮挡和果实重叠等情况普遍存在,这严重影响了果实的准确识别以及采摘点的精确定位。针对在复杂背景下苹果的…

C#,数值计算——插值和外推,三次样条插值(Spline_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 三次样条插值 /// Cubic Spline Interpolation /// Cubic spline interpolation object. Construct with x and y vectors, and /// (optionally) values of the first…

jenkins使用nexus插件

nexus介绍 Nexus 是一个强大的仓库管理工具&#xff0c;用于管理和分发 Maven、npm、Docker 等软件包。它提供了一个集中的存储库&#xff0c;用于存储和管理软件包&#xff0c;并提供了版本控制、访问控制、构建和部署等功能。 Nexus 可以帮助开发团队提高软件包管理的效率和…

vue3中自定义hook函数

使用Vue3的组合API封装的可复用的功能函数 自定义hook的作用类似于vue2中的mixin技术 自定义Hook的优势: 很清楚复用功能代码的来源, 更清楚易懂 案例: 收集用户鼠标点击的页面坐标 hooks/useMousePosition.ts文件代码&#xff1a; import { ref, onMounted, onUnmounted …

Programming Contest 2023(AtCoder Beginner Contest 331)D题 Tile Pattern --- 题解

目录 D - Tile Pattern 题目大意&#xff1a; 思路&#xff1a; 代码&#xff1a; D - Tile Pattern D - Tile Pattern (atcoder.jp) 题目大意&#xff1a; 给你一个n和q&#xff0c;n为局部棋盘大小(n*n) 并且给出局部棋盘中黑白子位置的放置情况&#xff0c;q为查询次数…

.NET6 开发一个检查某些状态持续多长时间的类

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !序言 在代码的世界里,时常碰撞…

Linux:动态查看服务器磁盘IO使用情况(IOTOP)

一、安装 yum install -y iotop二、使用 iotop可以看到&#xff0c;每个用户对应的磁盘读写速率以及相应的进程。

159.库存管理(TOPk问题!)

思路&#xff1a;也是tok的问题&#xff0c;与上篇博客思路一样&#xff0c;只不过是求前k个小的元素&#xff01; 基于快排分块思路的代码如下&#xff1a; class Solution { public:int getkey(vector<int>&nums,int left,int right){int rrand();return nums[r%…

logback-spring.xml详解

《springboot使用logback日志框架超详细教程》文中&#xff0c;filter中最重要的两个过滤器LevelFilter&#xff08;日志级别精确匹配&#xff09;、ThresholdFilter&#xff08;阈值过滤&#xff09; 的描述非常准确&#xff1a; springboot使用logback日志框架超详细教程_sp…

接口测试 —— Requests库介绍

1、Requests库 Requests库是用Python语言编写&#xff0c;基于urllib3模块&#xff0c;采用Apache2 Licensed开源协议的 HTTP 库。 虽然Python的标准库中urllib3模块已经包含了平常我们使用的大多数功能&#xff0c;但是它的 API使用起来让人感觉不太友好。而Requests库使用的…

自定义类型:结构体(自引用、内存对齐、位段(位域))

目录 一. 结构体类型的声明和定义 1.1结构体相关概念 1.11结构的声明 1.12成员列表 1.2定义结构体类型变量的方法 1.21先声明结构体类型再定义变量名 ​​​​1.22在声明类型的同时定义变量 1.23直接定义结构类型变量 二、结构体变量的创建、初始化​和访问 2.1结构体…

医疗器械设备模组的具体应用

直线模组是一种高精度、高速度的精密传动元件&#xff0c;目前被广泛应用在各种工业自动化领域&#xff1b;尤其是在激光加工、电子制造、医疗设备、物流设备和机器人等行业中&#xff0c;都发挥着重要作用&#xff0c;接下来我们看看医疗器械设备模组的具体应用吧&#xff01;…

avue-crud中时间范围选择默认应该是0点却变成了12点

文章目录 一、问题二、解决三、最后 一、问题 在avue-crud中时间范围选择&#xff0c;正常默认应该是0点&#xff0c;但是不知道怎么的了&#xff0c;选完之后就是一直是12点。具体问题如下动图所示&#xff1a; <template><avue-crud :option"option" /&g…

Elasticsearch 的使用

一、简介 1.Shard&#xff08;分片&#xff09; 数据分散集群的架构模式&#xff0c;Elasticsearch 将一个 Index&#xff08;索引&#xff09;中的数据切为多个 Shard&#xff08;分片&#xff09;&#xff0c;分布在不同服务器节点上。 默认每个索引会分配5个主分片和1个副本…