质量安全管控如何实现事前预防?

陈哥聊测试
• 阅读 30

大家好,我是陈哥。

我前几天看了FortiGuard Labs发布的 《2025年全球威胁趋势报告》,里面写道:全球范围内利用系统漏洞发起的攻击已累计超970亿次。其中,亚太地区占比达到42%,依旧是全球网络安全风险最高的区域。

过去,代码安全防护总要等到开发快收尾时才介入。那时候开发周期长,这种模式还行得通。但现在项目的迭代速度大大加快,完成周期短到以周甚至天来计算,传统模式早就跟不上趟了。

在这样的背景下,“安全左移” 的理念慢慢兴起。而这一理念的落地,离不开对代码质量安全管控逻辑的重新梳理。

质量安全管控的核心目标,在于通过系统性措施规避风险,而非单纯应对已发生的问题。实现事前预防,需要从流程优化、技术应用等多维度构建防控体系,形成全链条的风险拦截机制。

质量安全管控如何实现事前预防?

一、明确的编码规范

在我之前写过的文章 《老板:你来弄个团队代码提交规范》中详细写了禅道的编码规范、测试规范以及提交规范。

如果大家感兴趣的话,可以直接去看,这里就不赘述了。

一旦这些规范形成落地的文档,就能从根上减少因为习惯不一样带来的质量安全问题。更重要的是,规范一明确,新人上手也能少走不少弯路,团队协作效率也上来。在遇到问题需要回溯的时候,排查起来也比较省事。

二、技术工具的深度应用

尝试在开发阶段嵌入自动化检测工具,可实现风险的实时拦截。

举个例子, 禅道DevOps平台扫描功能的扫描计划整合了关联代码库、扫描分支、扫描范围、扫描方案以及触发器等要素,能按照预设策略对代码进行扫描。

通过扫描计划,我们就可以针对不同项目特性定制扫描任务,及时发现代码中的缺陷、安全隐患等问题,保障代码质量,降低项目风险,确保项目在开发、维护等各阶段的代码都符合质量要求。

质量安全管控如何实现事前预防?

此外,静态代码分析工具也应该与开发环境集成,在开发者编写代码时提供实时反馈,如 IDE 插件可在输入违规代码时及时标红并提示修正方案。

这些工具的应用突破了人工检查的局限性,实现了风险识别的常态化和高效化。

三、刚性的研发流程规范

很多流程规范停留在倡导层面,并没有落地到执行层面。一旦流程变成了表面功夫,就形同虚设。我们团队前段时间刚刚开始实行研发流程规范3.0版,根据一些真实的研发问题重新调整的规范。

想和大家简单分享一下技术设计这个问题。

不少团队出问题,往往是技术设计太随意。很多团队都是将技术设计交给开发,让开发在迭代时顺带着做了,结果大多是敷衍了事,给后续开发、测试和系统优化埋了不少雷。

禅道所采取的办法就是:把技术设计从迭代里单独拎出来,硬性要求提前做。

迭代启动前,专门留三天给技术团队做设计。当然,这三天并不是额外加的,是我们在研发流程调整出来的。

我们要注意:我们得找些老员工当设计牵头人,免得责任不清、没人担事;设计方案不能一个人说了算,必须进行集体评审。《禅道研发流程规范 3.0》里也写清了各部门的设计和评审负责人,谁的事谁扛。

这么一套操作下来,技术设计就从模糊的、靠自觉的活儿,变成了有明确时间、有负责人、有评审、有宣讲的事情,从根上保证了方案质量,这就给整个迭代打了好基础。

质量安全管控如何实现事前预防?

再说一下计划会的变化。

传统定义的计划会一般都是产品经理一个人说,信息可能出现传不透的问题。

现在,禅道计划会采取了验证的方式,确保信息能够传递并实现闭环:

第一步,技术设计讲解。就像前面说的,牵头人先把方案讲清楚,让团队对“怎么干”有共识。

第二步,开发反讲需求。需求分到人后,不急着动手,先让开发自己讲讲对需求的理解,确保没跑偏。

第三步,测试把核心用例落地。开发讲完后就轮到测试了,得把需求落到具体测试点上,比如要测什么、任务怎么拆。

这样,单向的需求灌输变成了开发、测试、产品之间的多轮互动确认,大大减少了因为理解偏差导致的后期返工。

看似前期多花了点时间,其实给整个迭代省了不少事。


代码质量安全的事前预防,本质上是通过标准化、工具化、流程化的管理,将风险控制在开发过程的早期阶段。

它需要技术工具与人工管控相结合,规则约束与能力提升相呼应,最终形成“预防为主、全程拦截”的管控模式。

只有将事前预防的理念贯穿于编码、测试、评审的每个环节,才能从根本上提升代码质量安全水平,为系统稳定运行提供坚实保障。

希望我的分享可以帮助到你,也欢迎给我留言与我讨论。

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
PPDB:今晚老齐直播
【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
3年前
Chapter 2 全程测试:闪光的思想
软件质量其实是在软件开发生命周期中慢慢形成的,或者说,软件质量是内建的(Qualityisbuiltin),而不是测试测出来的。贯穿于软件开发全过程的测试,不仅可以在第一时间内发现缺陷,降低缺陷带来的成本(劣质成本),而且能有效的预防缺陷的产生,构建更好的软件产品质量。2.1测试的左移和右移测试左移:将测试计划与设计提前进行,以及开展需求
codigger codigger
1年前
从混乱到有序:Codigger 软件项目体检助力软件项目管理
Codigger的软件项目体检(SoftwareProjectHealthCheck)工具,致力于协助团队在整个软件开发生命周期内保持高标准的代码质量,降低技术债务,提升开发效率,保障软件产品的稳定性与安全性。
陈哥聊测试
陈哥聊测试
Lv1
资深敏捷测试顾问,致力于测试自动化和DevOps等的实践和研究。
文章
79
粉丝
0
获赞
2