聊聊性能测试的左移右移

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

软件测试面试文档

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

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

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

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

相关文章

实战Leetcode(三)

Practice makes perfect! 实战一: 带环问题其实我们小学时就接触过,就比如在操场上比赛跑步的追击问题,这里也是一样,如果我们定义两个指针,一个快指针,一个慢指针,快指针走的快&…

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:

错误描述如下所示: 我们将错误拉到最下面如下所示为导致异常的原因: Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type com.example.reviewmybatisplus.Service.UserService available: expec…

基于Mahony互补滤波的IMU数据优化_学习笔记整理

这周自己被安排进行优化软件 IMU 姿态解算项目,之前自己只简单了解四元数,对IMU数据处理从未接触,通过这一周的学习感觉收获颇丰,在今天光棍节之际,,,用大半天的时间对这一周的收获进行整理&…

SwiftUI 如何保证 Text 中字符数量相等的字符串显示宽度一定相同?

0. 问题现象 在 SwiftUI 中我们往往需要将内容相似的字符串展列出来给用户比较,这些字符串内容各有不同但字符数量始终是相等的,我们希望它们的显示宽度始终保持一致: 如上图所示:即使是等宽字符组成的字符串在字符数量相等时它们的显示宽度仍然可能不一致。但演示中最底部…

迷雾系统-人物驱散迷雾

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

14 # 手写 debounce 防抖方法

什么是防抖 防抖: n 秒后再去执行该事件,若在 n 秒内被重复触发,则重新计时,这个效果跟英雄联盟里的回城技能差不多。 本质上是优化高频率执行代码的一种手段,目的就是降低回调执行频率、节省计算资源。 应用场景: …

灵活用工仿boss直聘招聘系统劳务系统源码

灵活用工仿boss直聘招聘系统劳务系统 开发语言: 后台:phpmysql,fastadmin框架 前端:vue,Uniapp 功能介绍: 1.登录 账号密码登录,微信手机号授权登录 2.首页:定位功能&#xf…

2023最新软件测试面试300问

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

《013.Springboot+vue之旅游信息推荐系统》【前后端分离有开发文档】

《013.Springbootvue之旅游信息推荐系统》【前后端分离&有开发文档】 项目简介 [1]本系统涉及到的技术主要如下: 推荐环境配置:idea jdk1.8 maven MySQL 前后端分离; 后台:SpringBootMybatisMySQL; 前台:Vue; [2]功能模块展…

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

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

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

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

order by的注入与Insert ,update和delete注入

order by的注入 Insert ,update和delete注入

告别龟速,从GitHub快速下载项目的技巧分享,简单又高效!

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推荐--…

Linux中的粘滞位

目录 粘滞位1、作用2、为什么添加粘滞位3、演示粘滞位的使用方法和效果 粘滞位 1、作用 为了多人协作写进行文件创作时,other用户没有办法将文件删除,只有超级管理员、该目录的所有者、该文件的所有者他们可以删除。 2、为什么添加粘滞位 你想在进行…

Leetcode-145 二叉树的后序遍历

递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this…

开源绘画krita中的笔刷压感开启技巧

一、问题描述 之前用过高漫的绘图板,在krita中没有效果, 原来是因为压感没有开启。方法如下。 二、解决方法 如下图点击笔刷设置按钮,打开 笔刷编辑器,之后如图顺序,从左栏点击笔刷控制属性“大小”,之…

Python学习笔记--自定义类型的枚举

三、自定义类型的枚举 但有些时候我们需要控制枚举的类型,那么我们可以 Enum 派生出自定义类来满足这种需要。通过修改上面的例子: #!/usr/bin/env python3 # -*- coding: UTF-8 -*- from enum import Enum, uniqueEnum(Month, (Jan, Feb, Mar, Apr, M…

7-Zip的介绍和【阿里云盘】的使用

7zip从入门到入坑 前言一、7-zip的介绍和安装1、基本介绍1)7-Zip 主要特征2)支持格式3)基础功能4)安装环境需求 2、基本操作(1)简便的界面(2)发生的问题 二、阿里云盘的使用1、“exe…

Tcl语言:基础入门(二)

相关阅读 Tcl语言https://blog.csdn.net/weixin_45791458/category_12488978.html?spm1001.2014.3001.5482 变量 set命令用来给一个变量赋值。它接受两个参数,第一个参数是变量的名字,第二个参数是一个值。变量的名字可以是任意长度的,且区…

【Shell脚本9】Shell test 命令

Shell test 命令 Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 数值测试 num1100 num2100 if test $[num1] -eq $[num2] thenecho 两个数相等! elseecho 两个数不相等! fi输出结果&#xff1a…