性能自动化测试?

一、思考❓❔

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.mzph.cn/news/178500.shtml

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

相关文章

RabbitMQ工作模式2 整合springboot 和MQ高级特性

RabbitMQ工作模式 1.路由模式 创建交换机 , 连接队列 (生产者) public class MyTestExDirect {Testpublic void bbb() throws IOException, TimeoutException {ConnectionFactory connectionFactory new ConnectionFactory();//连接mqconnectionFactory.setUsername("…

可信区块链运行监测服务平台(TBM)发展研讨会在北京召开

2023年11月23日,由中国信息通信研究院、中国移动通信集团设计院有限公司、区块链服务网络(BSN)发展联盟共同主办的“可信区块链运行监测服务平台(TBM)发展研讨会”在北京成功举行。会议围绕区块链的监测与治理&#xf…

vatee万腾的科技征途:Vatee数字化力量的新视野

在科技的浪潮中,Vatee万腾正展开一场引人注目的科技征途,以其独特的数字化力量描绘出一片新的视野。这不仅是一次技术的升级,更是一场对未来的全新探索,为我们带来了前所未有的数字化时代。 Vatee万腾以其卓越的技术实力和前瞻性的…

springboot实现数据脱敏

springboot实现数据脱敏 怎么说呢,写着写着发觉 ”这写的什么玩意“ 。 总的来说就是,这篇文章并不能解决数据脱敏问题,但以下链接可以。 SpringBoot中利用自定义注解优雅地实现隐私数据脱敏 然后回到本文,本来是想基于AOP代理&am…

PHP众筹系统源码+支持报名众筹+商品众筹+无偿众筹+市面上所有的众筹模式 附带完整的搭建教程

大家好啊,罗峰今天来给大家分好用的源码系统了。今天要给大家分享的是一款PHP众筹系统源码。众筹作为一种新型的融资方式,逐渐在市场上占据了重要的地位。从公益众筹到商品众筹,再到股权众筹,各种众筹模式层出不穷。然而&#xff…

ELK日志系统

(一)ELK 1、elk:是一套完整的日志集中处理方案,由三个开源的软件简称组成 2、E:ElasticSearch(ES),是一个开源的,分布式的存储检索引擎(索引型的非关系型数…

后端整合Swagger+Knife4j接口文档

后端整合SwaggerKnife4j接口文档 接口文档介绍 什么是接口文档:写接口信息的文档,条接口包括: 请求参数响应参数 错误码 接口地址接口名称请求类型请求格式备注 为什么需要接口文档 who用?后端提供,前后端都需要使用…

ESXi 添加虚拟闪存 无可选设备问题排查

虚拟内存是计算机系统中的一种技术,它可以将计算机硬盘的一部分空间作为临时存储器来使用。当计算机的物理内存(RAM)不足时,操作系统可以将部分数据从内存移至硬盘的虚拟内存空间中,以释放内存供其他程序使用。虚拟内存…

uniapp基础-教程之HBuilderX配置篇-01

uniapp教程之HBuilderX配置篇-01 为什么要做这个教程的梳理,主要用于自己学习和总结,利于增加自己的积累和记忆。首先下载HBuilderX,并保证你的软件在C盘进行运行,最好使用英文或者拼音,这个操作是为了保证软件的稳定…

羊大师提示,别让坏习惯影响生活

羊大师提示,别让坏习惯影响生活 拖延是人们常常会遇到的一种坏习惯,它不仅浪费时间,还会对生活、工作和学习造成负面影响。为了改变这种坏习惯,我们需要采取一系列的措施,从根本上改变自己的生活方式。下面小编羊大师…

bat脚本执行py文件

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

你知道如何使用队列实现栈吗?(C语言)

这时一道非常经典的题型,因为栈和队列的性质是相反的,队列的数据是先入先出,栈的数据是后入先出,那么怎样使用两个队列实现栈呢? 225. 用队列实现栈https://leetcode.cn/problems/implement-stack-using-queues/ 这是…

安卓开发学习---kotlin版---笔记(一)

Hello word 前言:上次学习安卓,学了Java开发,简单的搭了几个安卓界面。这次要学习Kotlin语言,然后开发安卓,趁着还年轻,学点新东西,坚持~ 未来的你会感谢现在努力的你~ 主要学习资料&#xff1a…

leetcode算法之字符串

目录 1.最长公共前缀2.最长回文子串3.二进制求和4.字符串相乘 1.最长公共前缀 最长公共前缀 class Solution { public:string longestCommonPrefix(vector<string>& strs) {//法一&#xff1a;两两比较string ret strs[0];for(int i1;i<strs.size();i){ret f…

NocoBase企业级低代码开发平台有什么优势?

企业级低代码开发平台&#xff0c;作为一种新兴的技术解决方案&#xff0c;正逐渐在企业中受到越来越多的关注和青睐。它以其高效、灵活的特性&#xff0c;为企业的创新提供了更快速、更可持续的支持和推动。 低代码开发平台是一种以图形化界面为基础&#xff0c;结合拖拽式编…

Qt右键菜单+动作+qss案例

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//设置界面颜色样式this->setStyleSheet("background-color:rgb(54,54,54)");//创建文件菜单QMenu *fileMenuItems new QMenu;//菜单添加iconfileMenuItems->se…

如何根据接口文档,轻松快速的模拟接口服务?

什么是WireMock? WireMock 是一个Http 模拟服务,其核心也是一个web服务,WireMock主要是为特定请求提供固定的返回值。 WireMock可以作为单独进程启动,模拟一个WEB服务器,提供一些API访问,并返回特定的返回值。也可以作为第三方库在项目中使用。 如何使用 standalone方…

2161根据数字划分数组

给你一个下标从 0 开始的整数数组 nums 和一个整数 pivot 。请你将 nums 重新排列&#xff0c;使得以下条件均成立&#xff1a; 所有小于 pivot 的元素都出现在所有大于 pivot 的元素 之前 。所有等于 pivot 的元素都出现在小于和大于 pivot 的元素 中间 。小于 pivot 的元素之…

allure修改logo 自定义

无论pytest还是httprunner都适用allure生成报告。那我们就有必要对allure报告进行一些定制。我们先修改logo&#xff1a; 1、给allure.yml插件custom-logo-plugin 找到allure安装的位置&#xff0c;在config文件夹下有一个allure.yml的配置文件。打开它&#xff0c;在最后添加…

Python接口自动化测试 ---Allure报告使用详解

这一节主要是记录allure的内容以及用法&#xff0c;怎么让他生成一个完整的想要的报告。 allure生成的报告和其他五花八门的报告对比了一下&#xff0c;它的可读性是最好、最直观的。这不仅仅是我想要的效果&#xff0c;也是很多小伙伴想要的结果&#xff0c;毕竟这是给领导看…