“我就优化了下,影响不大的”

简介: “我就优化了下,影响不大的”

“我就优化了下,影响不大的”,开发如是说。相信大部分测试人员听到这话,恨不得跳起来骂人。在正常的情况下,只有通过充分地测试,才能保障软件的质量和稳定性,如果开发人员可能会出于个人的需求,私自将代码上线,这对软件的稳定性会带来很大的风险。

 

真的是这样吗?软件系统真的就这么脆弱吗?

 

最近有小伙伴找我吐槽了这件事,系统地思考了下解决方案,仅供参考。

01

对于研发不论是有心还是无心的“夹带私货”,从风险的角度来看,主要有以下几点风险:


流程规范:这种形式一定是违反了既定的流程规范,如果多次出现,流程将流于形式,不再具有约束力,引发更大的风险;

 

测试遗漏:由于开发没有告知测试,测试人员不会做针对性的测试及影响范围评估,容易导致测试遗漏,引发不可控的风险;

 

爆发半径不可控:没有评估风险,容易给生产环境埋雷,不知道什么时候发爆发问题,影响范围有多大,行为不可控,风险不可控;

 

02

清楚了这种行为带来的危害,那就需要通过一定的手段来避免。最简单的方式就是加强流程的卡控,不让这种事情发生,把风险规避在源头。常见的方案有以下几种:

 

代码提交规范:在提交代码的时候,需要描述清楚提交代码的作用。借助于提交匹配规则,让代码提交注释不再随意。在团队的实践中,会要求按照 “Type: Description  < Issue-ID>” 的格式来描述,Type包含常见的类型,例如feat、fix、merge、revert、test等,Description为描述字段,不超过50个字,Issue-ID为平台对应的StoryID,非必填,方便跟踪。


 

版本信息管理根据结构化的Commit信息,提取当前版本的版本内容,让测试人员可以快速评估发布范围,同时,这个日志也可以作为制品的一个基础信息,用于溯源。

 

代码评审:基于前面两项,结合人为的代码评审,在代码合并到测试分支前,进行充分的审计,避免不明用意的代码被提交。

 

通过流程规范,可以有效地避免“夹带私货”情况产生。如果发生类似的问题,测试人员通也会要求开发加强约束,遵守流程规范。好像也没有其他更好的办法了。

 

真的吗?

03

测试人员如果只是这么被动地解决的问题,就很难产生价值,而且人为的操作本身就具备太多的不可控性。从质量保障体系的角度出发,笔者认为还有其他几件事可以做。

 

必要的自动化测试:从重构的角度上看,我们应该鼓励开发进行适当的优化和重构,减少代码债务,只要风险可控即可。所以,引入一定的自动化测试,保障核心及主干流程,就可以做到风险可控。在团队的实践中,会要求测试环境、UAT环境、生产环境的流水线中一定要集成自动化测试,保障核心功能不受影响,避免重大风险。

 

 

一次编译,多次部署:在正常提交测试的时候,开发一般都会告知影响范围,测试也会进行回归测试验证,最怕的是在临上线前做优化。那么践行一次编译,多次部署理论,就可以有效地避免这个问题,即测试的制品,就一定是发布的制品,除了配置不一样,其他完成一样,这样也是可以控制风险的。


 以上是从测试遗漏,风险控制的思路上来思考。

04

从风险评估中,还有一项是爆发半径不可控的风险,对于这个风险,可以从测试右移的思路来控制风险爆发半径,有以下几种做法:

 

测试右移:由于测试环境的局限性,我们需要针对生产环境做一定的回归测试(对于只读操作和可隔离特性的测试),针对核心功能进行一定频次的拨测,确认功能的稳定性。

 

告警机制:通过蓝绿发布、灰度发布、监控预警,建立分级告警机制等手段,可以有效地控制风险爆发半径,减少损失。

05

系统可能很脆弱,会因为开发的一段代码导致整个系统不可用。作为测试,从流程上规范研发操作只是提升系统反脆弱的一种方法,而且是一种非常被动的操作。我们应该建立起一套完善的质量保障体系,在风险可控的情况下,让开发有重构和优化的空间,为他们的行为保驾护航,提升系统的反脆弱性。

 

业内其实有很多这类的实践,比如混沌测试。虽然我们的代码经不起混沌测试的折腾,但也不应该因为小部分的重构和优化,让系统出现不可控的风险。


 

共勉。


相关文章
|
6月前
|
存储 编译器
深入解析i++和++i的区别及性能影响
在我们编写代码时,经常需要对变量进行自增操作。这种情况下,我们通常会用到两种常见的操作符:i++和++i。最近在阅读博客时,我偶然看到了有关i++和++i性能的讨论。之前我一直在使用它们,但从未从性能的角度考虑过,这让我突然产生了兴趣。尽管它们看起来相似,但它们之间存在微妙而重要的区别。在本文中,我们将详细解释i++和++i之间的区别,以及它们对代码性能的影响。
237 1
深入解析i++和++i的区别及性能影响
|
7月前
|
监控 物联网 云计算
优化服务配置:提升效率与用户体验的关键
随着科技的迅猛发展,服务配置已经成为企业和个人生活中不可或缺的一部分。无论是云计算、移动应用、还是物联网设备,都需要良好的服务配置来确保顺畅的运行和卓越的用户体验。本文将探讨服务配置的重要性,以及如何优化配置以提高效率和用户满意度。
|
算法 数据挖掘 数据库
priori 算法的影响因素分析| 学习笔记
快速学习 priori 算法的影响因素分析。
466 0
priori 算法的影响因素分析| 学习笔记
|
8天前
|
缓存 算法 测试技术
优化 C#编程性能的策略
【4月更文挑战第20天】优化C#性能策略包括:选择合适算法和数据结构,避免频繁对象创建,缓存常用数据,减少内存分配,使用异步编程,优化数据库操作(如合理查询和使用索引),利用多线程并行处理,精简代码,使用性能分析工具,硬件升级,以及进行性能测试。综合应用这些策略可提升程序性能和响应性。
|
2月前
|
设计模式 算法
我确实遇到过优化代码却导致过度设计的状况
我确实遇到过优化代码却导致过度设计的状况
22 10
|
8月前
|
搜索推荐 UED SEO
如何知道自己网站是否存在着过度优化?这几种措施帮助你查找出来
近些年,越来越多的企业开始重视SEO优化工作,认为这是改善企业网站落后面貌的重要途径。当然对于其他的各种类型网站,同样离不开SEO优化。做网站SEO优化的目的除了能够提升网站在百度中的排名之外,还有一个重要的作用就是能够增强网站的品牌度,能够为用户提供更好的服务。
|
9月前
|
Serverless
函数计算减少冷启动对性能的影响
函数计算减少冷启动对性能的影响
314 1
|
搜索推荐 SEO
出现这些情况说明是网站过度优化
出现这些情况说明是网站过度优化
66 0
|
传感器 自动驾驶 安全
5G将如何影响我们的生活?
5G可能会彻底改变我们生活的许多方面,为我们提供新的旅行方式,新的娱乐方式,以及医生拯救我们生命的新方式。如果5G实现了它所宣扬的好处,它可以为我们生活的许多方面带来显著的效率和成本节约。
664 0
5G将如何影响我们的生活?
|
测试技术
如何衡量和提高测试效率
对于如何衡量测试效率,如何提高测试效率      如何衡量测试效率? 个人认为可以从软件测试的活动中的以下指标综合考评,去评估衡量测试效率,每项指标都高,自然能够说明一些问题: 1.发现缺陷的质量: 同一个项目组内,我们一般运用测试管理工具TD, 按优先级和严重等级,把每个人的缺陷做成柱状图和饼图,放到一个文档中,邮件发给大家,让组内成员了解自己的工作情况和其他人的工作情况。
3642 0