聊聊性能测试的左移右移

news2024/10/7 2:19:26

前面的文章中,分享过我对于测试左移右移的一些思考和实践方法。有同学在后台留言问我:常规的性能测试一般都是在测试阶段集成测试时候才开始介入,很容易测试时间不够,可不可以借鉴测试左移右移的思路,更早的介入和发现性能风险,然后在测试阶段更专注于分析优化?

借着这个问题,结合自己的实践经验,这篇文章,分享一些我对于性能测试左移右移的思考。

传统性能测试的桎梏
在传统的性能测试中,理论上都要求测试参与需求评审,评估是否存在可能的性能瓶颈场景。其次在技术方案设计阶段,和开发一起过方案,讨论方案的可测性和是否会导致性能问题。然后在研发阶段准备对应的测试环境,写压测方案,准备测试用例和数据,直到系统集成测试阶段,才开始介入真正的压测执行工作。

但在实际的工作场景中,很多性能测试同学遇到的往往是一句话需求,比如:这几个接口压测一下,出一份报告;或者线上出了性能问题,才火急火燎的找测试同学,对系统进行压测,再排查定位问题。这种情况其实反映了下列几点问题:

对性能测试不重视,属于可有可无的救火队员或者背锅侠;

对质量保障不重视,或者说对于测试人员的工作内容不重视;

整个的软件研发交付流程和管理层面问了问题,重实现而轻质量;

当然,也可能存在其他方面的因素,比如测试人员的角色定位,工作产出等方面。长此以往,性能测试的角色越发尴尬,没有足够时间去了解需求场景,性能测试做的不深,工作没产出没亮点。这也是市场上专职性能测试岗位越来越少,并且面试时要求功能测试同学掌握性能测试的原因。

其实在成熟的性能测试体系中,性能测试也有左移右移的方法和实践,甚至这些方法在日常的功能测试过程中大家也经常做,只不过被大家忽视了而已。

性能测试的左移实践
在我们所熟知的测试流程中,大家肯定都知道冒烟测试。即由测试提供核心功能和场景的测试用例,开发完成自测后再正式提测,这样做的好处是提前发现一些明显的存在阻塞的问题,便于后续测试活动的顺利开展。在性能测试中,也可以做类似开发自测的事情,这种左移的手段,总结下来主要有四点:

性能冒烟:可以理解为冒烟测试的通过率,即开发完成接口开发和功能实现后,先在本地执行测试提供的压测脚本,确认接口本身不存在明显的性能问题,再系统的提测,进行系统整体的性能测试。

性能基线:性能基线可以看作测试门禁,即只有性能测试结果通过性能基线标准后,才能认为该版本的系统性能满足上线要求。建立初始的基线后,后续的每次测试得到的数据都需要进行记录(存在差值),直到这些数据在统计区间内(一个大版本或一个季度)形成新的基线。

流程固化:这个其实很好理解,就是将上述的性能冒烟和性能基线动作,融入到研发测试交付的整个流程中,通过流程引导研发同学来配合做这件事。

平台赋能:如果只是提供性能测试脚本,那开发可能还要自己造数据看监控,费时费力,那性能冒烟会很容易胎死腹中。比较好的办法是由测试同学负责提供造数据的工具,同时将测试环境的日常运维工作接过来,并通过统一的平台对业务场景、测试脚本、测试数据和环境以及执行权限进行管控。开发同学在需要时只需要点一下执行,平台自动记录结果,判断是否通过,这也是流程固化的延伸实现。

性能测试的右移实践
很多同学在实践性能测试时,大多只关注测试环境的测试结果,结果领导问一句:本次上线要准备多少台服务器,要什么配置,就不知道了。要回答这个问题,就涉及到了容量规划。

什么是容量规划?你的测试结果要对线上服务的扩缩容提供直观有效的参考数据,便于更精准的管理线上服务的成本。在降本增效大行其道的当下,这也是性能测试值得深入实践和体现价值的一点。

要落地容量规划,就需要在测试时考虑被测服务的硬件配置、数据量级、业务模型、流量模型是否和线上保持一致,或者彼此之间有可换算的公式,否则容量规划很难落地,也无法对服务上线的配置产生直接有效的结论。

性能测试的移,可以从以下几点来开展:

完善监控:对于线上服务来说,无法保证永远不出问题,但可以尽量做到少出问题,或者出了问题可以更快发现修复。而完善的监控体系,最大的作用就是让发现问题和定位排查的效率更高。测试在其中可以做的事情其实不少,比如基于P0场景和业务的监控,比如线上的性能巡检。

应急机制:线上出现问题,除了完善的监控来快速发现,还需要技术同学快速响应,及时的处理问题,这就需要一套线上的应急响应机制,而测试同学很适合来推动这件事。相比于运维,测试更熟悉业务,且测试对于每版本迭代出现的bug以及迭代交付的范围更清楚,还可以在后续组织复盘,跟进改进落地的进度和效果。

数据沉淀:上面讲到了落地容量规划的几个前置条件,数据沉淀中最重要的就是三个模型:数据量级、业务模型、流量模型。

生产全链路压测:关于生产全链路压测,前面写过太多相关的文章了,大家感兴趣自行查阅即可。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 822269834,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作

 视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方进群即可自行领取。    

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

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

相关文章

CKA认证模块②-K8S企业运维和落地实战

CKA认证模块②-K8S企业运维和落地实战 Pod高级实战-Pod生命周期-启动钩子,停止钩子 Pod生命周期完整流程介绍 容器钩子; 容器探测; Pod重启策略; Pod的终止过程; Init容器; 初始化容器最佳实践 初始化容器与主容器区别是? init容器没有readinessProbe… [rootk8s-mast…

经典的测试开发面试题

1、你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决? 首先,将问题提交到缺陷管理库进行备案。 然后,要获取判断的依据和标准: 根绝需求说明书,产品说明、设计文档等&…

迷雾系统-人物驱散迷雾

使用linerRender,将人物移动数据动态添加进去,同样是特殊层级让FogCamera渲染 EndCapVertices的数量越多,矩形就变为一个椭圆形的形状,更适合圆形视野探索 当拐点的两个点距离太近,LineRender会发生扭曲,解决方案是在…

Redis五种数据类型及命令操作(一)

🎈个人公众号:🎈 :✨✨✨ 可为编程✨ 🍟🍟 🔑个人信条:🔑 知足知不足 有为有不为 为与不为皆为可为🌵 🍉本篇简介:🍉 本篇记录Redis五种数据类型及命令操作,如…

Java基础-面向对象进阶-多态, 包, final, 权限修饰符,代码块

Java基础-面向对象进阶-多态, 包, final, 权限修饰符,代码块 多态多态的概述多态中调用成员的特点多态的优势和弊端多态练习 包final权限修饰符代码块来源Gitee地址 多态 多态的概述 多态: 对象的多种形态多态的前提 有继承/实现关系有父类引用指向子类对象有方法的重写 多态…

Netty--NIO(Non-blocking IO)基础--三大组件

NIO(Non-blocking IO)是一种非阻塞的IO模型,它通过引入Channel和Selector的概念,使得一个线程能够管理多个通道,从而提高了IO操作的效率。本文将介绍NIO的三大组件:Channel、Buffer、以及Selector&#xff…

【C++对象模型】构造函数II

构造函数语意学 》》构造函数语意学I—默认构造函数的构造操作《《 》》构造函数语意学II—拷贝构造函数的构造操作《《 》》构造函数语意学III—程序转化语意学《《 拷贝构造函数的构造操作 有三种情况,会以一个object的内容作为另一个class object的初值。 1.…

跨镜头目标融合__追踪之目标重识别研究(跨镜头目标追踪)

文章目录 标题:跨镜头目标融合;目标重识别;跨镜头目标追踪; 1 目的:2 实现方法/策略:2.1 目标类型位置匹配(或考虑结合目标轨迹)2.2 目标重识别2.3 目标类型位置匹配(轨迹)目标重识别…

Linux centos系统中添加磁盘

为了学习与训练文件系统或磁盘的分区、格式化和挂载/卸载,我们需要为虚拟机添加磁盘。根据需要,可以添加多块不同大小的磁盘。具体操作讨论如下,供参考。 一、添加 1.开机前 有两个地方,可选择打开添加硬盘对话框 (1)双击左侧…

暖手宝+充电宝设计方案 可实现快速升温和充电 低成本充电电流可选

充电暖手宝因为它的便携性,既能供暖又能当充电宝使用而备受人们喜爱。是冬天暖手供暖的必备神器。 目前,市场常见的暖手宝大致有三个类型,分别是加热水的热水袋、通过化学反应放热的铁粉袋子和锂电供电的智能暖手宝。与常见的暖手宝不同&…

计算机网络期末复习-Part3

1、rdt1.0,rdt2.0,rdt3.0的底层信道模型 RDT 1.0: 完全可靠的底层信道,没有比特差错,也没有分组丢失。 RDT 2.0: 具有比特差错的底层信道,有比特差错,但没有分组丢失。 RDT 3.0: 具有差错和丢包的底层信道…

如何将BMP图片批量转为PNG透明图片,并去掉BMP黑色背景

将BMP图片批量转为PNG透明图片,并去掉BMP黑色背景,这里推荐一款软件bmp2png,关键是免费的。截图如下: 这个小软件不仅可以将bmp图片批量转为png图片,而且还增加了压缩功能,导出png图片时压缩导出图片&#…

jbase引入连接池

网站主题和代码生成器完事之后,ORM成为主要工作,之前只是搭了ORM的大体结构,没有详细优化和实现。这次引入连接池、把连接串信息从配置取、调整抛出异常。 连接池包选择c3p0,因为他稳定,用的多,下载引入c3…

Maven打包引入本地依赖包

Maven打包引入本地依赖包 SpringBoot 工程,Maven 在构建项目时,如何引入本地 Jar 包? 适合场景: 引用的依赖不在 Maven 仓库第三方公司提供的 SDK 包Maven 内网离线开发引入被定制改动过的 Jar 包 解决方法: 在 I…

nature日报:为什么印度德里现在的空气污染如此严重?

为什么印度德里现在的空气污染如此严重? 后季风季节为印度大城市的空气污染积累创造了理想的条件。 本文整理扩展自2023年11月10日nature杂志的NEWS EXPLAINER——Why is Delhi’s air pollution so bad right now? (nature.com) Highlights 季风期间&#xff0…

卡码网语言基础课 | 11. 句子缩写

目录 一、 字符串大小的比较 二、 ASCII码值 三、 基本框架代码 四、 解题思路 4.1 首字母问题 4.2 判定小写字母 4.3 小写字母转换为大写字母 五、空格判断 六、 代码模块化 6.1 满足的条件 6.2 代码完善 七、 题目解答 7.1 原始代码 7.2 改进代码 八、 拓展与…

Java_继承和多态

文章目录 前言继承继承语法继承总结super指定访问父级子类构造方法super和this再谈初始化(执行顺序)protected 关键字继承方式final 关键字继承与组合 多态动态绑定与静态绑定多态实现条件重写 前言 适合复习看 继承 继承语法 修饰符 class 子类 extends 父类 { // ... }子类…

[BJDCTF2020]Easy MD5 1

题目环境: 尝试了SQL注入、命令执行等都不行 点击提交并burp进行抓包Repeater进行重放这里看到了内置的SQL语句select * from admin where passwordmd5($pass,true) 发现传进去的值会进行md5加密 这里看了大佬们的解释 ffifdyop绕过,绕过原理是&#xff…

2023最新软件测试面试300问

一、Linux系统应用和环境配置 1、Linux系统的操作命令给我说10个,一般用什么工具远程连接Linux服务器? 2、Linux中的日志存储在哪里?怎么查看日志内容? 3、Linux中top和ps命令的区别? 4、Linux命令运行的结果如何写…

配置cuda和cudnn出现 libcudnn.so.8 is not a symbolic link问题

cuda版本为11.2 问题如图所示: 解决办法: sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 sudo ln -sf /usr/local/cuda-11.2/targ…