首页 > 其他分享 >聊聊性能测试的左移右移

聊聊性能测试的左移右移

时间:2023-11-01 11:34:19浏览次数:42  
标签:右移 聊聊 压测 性能 左移 基线 测试

前面的文章《测试左移右移,到底是什么》中,分享过我对于测试左移右移的一些思考和实践方法。有同学在后台留言问我:

常规的性能测试一般都是在测试阶段集成测试时候才开始介入,很容易测试时间不够,可不可以借鉴测试左移右移的思路,更早的介入和发现性能风险,然后在测试阶段更专注于分析优化?

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

 

传统性能测试的桎梏

在传统的性能测试中,理论上都要求测试参与需求评审,评估是否存在可能的性能瓶颈场景。其次在技术方案设计阶段,和开发一起过方案,讨论方案的可测性和是否会导致性能问题。

然后在研发阶段准备对应的测试环境,写压测方案,准备测试用例和数据,直到系统集成测试阶段,才开始介入真正的压测执行工作。

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

  • 对性能测试不重视,属于可有可无的救火队员或者背锅侠;
  • 对质量保障不重视,或者说对于测试人员的工作内容不重视;
  • 整个的软件研发交付流程和管理层面问了问题,重实现而轻质量;

当然,也可能存在其他方面的因素,比如测试人员的角色定位,工作产出等方面。长此以往,性能测试的角色越发尴尬,没有足够时间去了解需求场景,性能测试做的不深,工作没产出没亮点。

这也是市场上专职性能测试岗位越来越少,并且面试时要求功能测试同学掌握性能测试的原因。

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

 

性能测试的左移实践

在我们所熟知的测试流程中,大家肯定都知道冒烟测试。即由测试提供核心功能和场景的测试用例,开发完成自测后再正式提测,这样做的好处是提前发现一些明显的存在阻塞的问题,便于后续测试活动的顺利开展。

在性能测试中,也可以做类似开发自测的事情,这种左移的手段,总结下来主要有四点:

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

性能基线性能基线可以看作测试门禁,即只有性能测试结果通过性能基线标准后,才能认为该版本的系统性能满足上线要求

建立初始的基线后,后续的每次测试得到的数据都需要进行记录(存在差值),直到这些数据在统计区间内(一个大版本或一个季度)形成新的基线。关于性能基线,可以参考我前面的文章:《建立性能基线的实践方法》。

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

平台赋能:如果只是提供性能测试脚本,那开发可能还要自己造数据看监控,费时费力,那性能冒烟会很容易胎死腹中。

比较好的办法是由测试同学负责提供造数据的工具,同时将测试环境的日常运维工作接过来,并通过统一的平台对业务场景、测试脚本、测试数据和环境以及执行权限进行管控。开发同学在需要时只需要点一下执行,平台自动记录结果,判断是否通过,这也是流程固化的延伸实现。

 

性能测试的右移实践

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

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

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

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

完善监控:对于线上服务来说,无法保证永远不出问题,但可以尽量做到少出问题,或者出了问题可以更快的发现修复。

而完善的监控体系,最大的作用就是让发现问题和定位排查的效率更高。测试在其中可以做的事情其实不少,比如基于P0场景和业务的监控,比如线上的性能巡检。

应急机制:线上出现问题,除了完善的监控来快速发现,还需要技术同学快速响应,及时的处理问题,这就需要一套线上的应急响应机制,而测试同学很适合来推动这件事。

相比于运维,测试更熟悉业务,且测试对于每版本迭代出现的bug以及迭代交付的范围更清楚,还可以在后续组织复盘,跟进改进落地的进度和效果。

数据沉淀:上面讲到了落地容量规划的几个前置条件,数据沉淀中最重要的就是三个模型:数据量级、业务模型、流量模型。关于三大模型,可以参考我前面的文章:《构建三大模型》。

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

 

标签:右移,聊聊,压测,性能,左移,基线,测试
From: https://www.cnblogs.com/imyalost/p/17802647.html

相关文章

  • 聊聊多层嵌套的json的值如何解析/替换
    前言前阵子承接了2个需求,一个数据脱敏,一个是低代码国际化多语言需求,这两个需求有个共同特点,都是以json形式返回给前端,而且都存在多层嵌套,其中数据脱敏的数据格式是比较固定,而低代码json的格式存在结构固定和不固定2种格式。最后不管是数据脱敏或者是多语言,业务抽象后,都存在需要......
  • 聊聊昨日ChatGPT全球宕机事件,带给我们的警示
    作者|卖萌酱,王二狗昨日,ChatGPT崩了!许多人发现无论是ChatGPT或是ChatGPTPLUS都不能正常工作了。还连带了全球数以万计的依赖ChatGPTAPI的热门AI应用也纷纷崩溃。有Twitter网友调侃到,昨日受ChatGPT宕机的影响,全球的生产力下降了50%,打工人一片哀嚎。更有网友上传了一段视频,真......
  • 聊聊RNN&LSTM
    RNN用于解决输入数据为,序列到序列(时间序列)数据,不能在传统的前馈神经网络(FNN)很好应用的问题。时间序列数据是指在不同时间点上收集到的数据,这类数据反映了某一事物、现象等随时间的变化状态或程度,即输入内容的上下文关联性强。整体结构x、o为向量,分别表示输入层、输出层的值......
  • PAT_B1008 数组元素循环右移问题
    一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0​A1​⋯AN−1​)变换为(AN−M​⋯AN−1​A0​A1​⋯AN−M−1​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每......
  • 聊聊多个节点实例数据同步如何触发
    前言之前写过一篇文章聊聊在集群环境中本地缓存如何进行同步,今天聊的话题看着和那篇文章有点雷同,不过我们今天重点会放在方法论上,也不会拘泥于具体实现。在聊这个话题之前,大家可以思考一下,如果要实现多个实例数据同步触发,大家会怎么做?脑海里,是会浮现,我可以用消息队列或者定时器来......
  • 毕业三年,月薪30K,我想跟你聊聊!
    大家好,我是冰河~~很多读者私信问我,自己工作三年多了,随着工作年限的不断增长,感觉自己的技术水平与自己的工作年限严重不符。想跳槽出去换个新环境吧,又感觉自己的能力达不到心仪公司的标准,即使投了简历也没人来通知自己面试。就这样在原来的公司一天天的混日子,时间久了,感觉自己废了......
  • 架构师日记-聊聊开发必掌握的那些实践技能 | 京东云技术团队
    一引言尽管软件开发一直致力于追求高效、可读性强、易于维护的特性,但这些特性却像是一个不可能三角,相互交织,此消彼长。就像底层语言(如汇编和C语言)能够保持高效的运行性能,但在可读性和维护性方面却存在短板和劣势;而高级语言(如Java和Python)在可读性和可维护性方面表现出色,但在执行......
  • 无涯教程-NumPy - 右移运算符函数
    numpy.right_shift()函数将数组元素的二进制表示形式向右移动指定的位置,并在左侧添加相等数量的0。importnumpyasnpprint'Rightshift40bytwopositions:'printnp.right_shift(40,2)print'\n'print'Binaryrepresentationof40:'printnp.binary_repr(......
  • 无涯教程-NumPy - 左移运算符函数
    numpy.left_shift()函数将数组元素的二进制向左移动指定位置,从右边追加等号0。importnumpyasnpprint'Leftshiftof10bytwopositions:'printnp.left_shift(10,2)print'\n'print'Binaryrepresentationof10:'printnp.binary_repr(10,width=......
  • 聊聊基于Alink库的特征工程方法
    示例代码及相关内容来源于《Alink权威指南(Java版)》独热编码OneHotEncoder是用于将类别型特征转换为独热编码的类。独热编码是一种常用的特征编码方式,特别适用于处理类别型特征,将其转换为数值型特征。对于每个类别型特征,OneHotEncoder将其编码成一个长度为类别数量的向量。......