写点什么

聊聊性能测试的左移右移

作者:老张
  • 2023-11-01
    上海
  • 本文字数:2017 字

    阅读完需:约 7 分钟

聊聊性能测试的左移右移

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

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


传统性能测试的桎梏

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

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

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

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

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

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

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


性能测试的左移实践

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

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

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

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

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


性能测试的右移实践

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

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

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

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

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

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

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

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

发布于: 刚刚阅读数: 6
用户头像

老张

关注

读书、思辨、审慎。 2019-12-02 加入

公众号:老张的求知思考世界 博客园:https://www.cnblogs.com/imyalost/ 专注于质量保障体系建设、DevOps实践、稳定性保障领域

评论

发布
暂无评论
聊聊性能测试的左移右移_性能测试_老张_InfoQ写作社区