【11.23直播回顾】京东商城的通用代码质量提升方案

飞马会2019-02-10 14:43:16

质量之于系统犹如健康之于生命,其重要性无需多言。对于大多数企业来说,企业业务的需求与增长情况是无法预料的,很难保证此时可以支撑5万用户量的代码,是否依然可以支撑50万甚至更多的用户量。因此,要保证代码是“长期”高质量是一个非常大的挑战。作为用户量数亿的电子商务平台,京东商城的代码质量提升方案值得众多企业学习参考。接下来,就让我们来看看来自京东测试与质量管理团队的熊志男老师都讲了些什么。


为什么要质量左移


熊老师告诉我们,最近几年,京东商城的业务程爆发增长趋势,但开发与测试工作人员数量并没有太多的增长。在这种业务增长量巨大而人员增长有限的情况下,在工作反馈总结会中,往往会出现这样的情况:


测试人员会有很多困惑:开发提交的版本无法测试、BUG总是反复出现、测试时间被压缩导致最终项目出现问题的话测试人员成为“背锅侠”等问题;看到这里,我们会认为测试团队人员很委屈,难道其他阶段的小伙伴是不是就不委屈了?


当然不是!而开发人员同样有很多吐槽:业务压力大、测试评估时间长、测试出现问题的话,开发人员是第一责任人等。


之所以会出现以上问题,究其原因,无非是来自业务的压力。那么,站在测试的立场,该如何去保障代码交付质量呢?


这时,我们就需要站在测试的立场上去理解开发小伙伴的吐槽,进而去努力解决这些问题,比如通过一些方法手段来减少测试时间等,将一些测试工作能提前做的话就提前完成,这就是我们所说的——质量左移。这样才能促使测试与开发更好地合作。


质量左移,即在开发阶段的系统质量,主要是提高开发阶段的代码质量。那么在开发阶段,测试人员会有哪些工作要做呢?熊老师表示,除了测试人员可以做一些代码审查工作之外,开发人员也可以进行一些自测。在此,熊老师重点为我们讲解了代码审查的工作。


据熊老师介绍,目前做的比较多的是在合并主干之前进行的代码审查:Master保持稳定,做到随时发布的状态,因此不能在主干上做开发,当有新需求的时候,会以分支(Branch)的状态进行开发,开发完成后再将其并入主干中。在分支往主干做合并的过程中,做代码审查可以保证主干代码不受污染。



代码扫描工具应用实践


根据人工代码审查出来的内容,我们发现有以下几类问题:代码风格、安全问题、潜在缺陷、代码规范等。审查出的许多问题是偏基础性、初级的问题。但是,人工审查具有不够及时、规则不统一、常有低级错误等缺点。有小伙伴会说,那就用自动代码扫描啊,比如SonarQube、Findbugs、Checkstyle、PMD等工具。尽管自动化代码扫描具有着自动执行、及时反馈的优点,但它不够智能,必须要给它定义一个统一的标准。


代码质量提升实践


什么样的代码是好代码呢?

熊老师告诉我们,好的代码拥有以下标准:功能正确、具有可读性、可维护性、简单、可测试性等。要怎样才能让工具按照这些标准去检测代码呢?熊老师以SonarQube为例,为我们介绍了将这些标准转换为工具标准都有:

熊老师表示,一次性放太多维度的话,不利于推进,会给开发造成压力。这时可以先从其中两个维度开始:潜在bug、代码规则开始。按照这个思路的话,就是从抓虫开始,去发现代码中的一些bug,将不符合的代码抓出来。


相信大多数测试人员都有这样一个同感:查出来的问题开发并不认!这时该怎么办呢?


熊老师告诉我们,之所以会出现这样的问题,是因为自动代码扫描工具规则过多。这时,就需要根据自身需求,进行精简规则。


通过规则裁剪可以形成一个基础的规则集,然后让大家进行挑选,主要包含逻辑判断、空指针、循环、多线程、资源未关闭、POM文件扫描等。这些规则集是开放和测试共同制定的规则集,大家都认可,这在以后的工作中可以减少一些阻力。


有了规则集就够了吗?答案当然是否定的,有一些自身业务的特殊性所特有的规则并不包含在规则集中,这时,就需要进行一些规则开发,将业务中常见的一些问题添加进来。在开发规则之后,进一步的就是自定义规则,通过自定义规则,可以实现将文本规范转化为可执行的规则集。


除了功能层面的措施之外,也需要做一些安全层面的规则插件,从安全文件的扫描做起,去扫描出来一些文件存在的安全风险,并逐渐向代码层面扩展。熊老师强调,尽管规则是非常重要的,但在实际应用中,是需要与实际的研发流程结合起来的。


以下是熊老师与网友们的Q&A:

Q:check的规则研发知道么?知道的话,会不会人为利用规则刻意规避扫描啊?

A:目前这种情况不多。因为确实有违规的话,是可以修改,如果是误报,是可以修改规则的。


Q:只做代码规则扫描对提高软件功能实现方面的质量有帮助吗?必要的人工审查是否也应穿插进行?

A:人工审查是肯定要做的。因为自动审查可以为人工审查提供更多的数据参考。目前的自动化程度,有些业务方面或者设计方面的问题,自动化审查是审查不出来的,因此人工审查是必须要做的。


Q:主线是要保证随时可发布的,那京东的提测是在合并到主线之前还是在合并到主线之后呢?

A:每个阶段都需要做测试,合并前是分支测试,发现bug主要也是在分支阶段,合并后主要是跨模块的链条测试和回归测试,包括上线发布前也会有发布前的功能测试和发布后的功能验证。

如果11月23日当天你错过了老师的直播,想看直播回放的,可以关注服务号:【FMI飞马网】在底部菜单栏进入【飞马直播】进行回听!

关注公众账号

FMI飞马网


主办方:光环国际


FMI飞马网(www.fmi.com.cn)致力于成为“人工智能 (AI)时代的人才入口”,在AI时代,提供最佳的AI社区平台与技术提升方案。是AI、大数据、技术管理等人员学习交流园地,牛人们在这里分享实践经验、真实案例 和技术问答,传播行业技术的最佳实践。站在AI、大数据、技术管理及产品运营的交汇点上,飞马网已经拥有10万+会员……


迄今已经组织了200多期线上/下活动,主题涵盖AI、 大数据、云计算、技术管理及产品运营等领域。遍布 北京、上海、广州、深圳、杭州、天津、沈阳等城市,惠及行业精英数万人!


往期福利

关注飞马会公众号,回复对应关键词打包下载学习资料;回复“入群”,加入飞马网AI、大数据、项目经理学习群,和优秀的人一起成长!

回复 数字“1”下载从入门到研究,人工智能领域最值得一读的10本资料(附下载)

回复 数字“2”机器学习 & 数据科学必读的经典书籍,内附资料包!

回复 数字“3”走进AI & ML:从基本的统计学到机器学习书单(附PDF下载)

回复 数字“4”了解人工智能,30份书单不容错过(附电子版PDF下载)

回复 数字“5”大数据学习资料下载,新手攻略,数据分析工具、软件使用教程

回复 数字“6”AI人工智能:54份行业重磅报告汇总(附下载)

回复 数字“7”TensorFlow介绍、安装教程、图像识别应用(附安装包/指南)

回复 数字“8”大数据资料全解析(352个案例+大数据交易白皮书+国内外政策汇篇)

回复 数字“9”干货 | 荐读10本大数据书籍(初级/中级/高级)成为大数据专家!

回复 数字“10”麦肯锡160页报告:2030年全球将可能8亿人要被机器抢饭碗

回复 数字“11”50本书籍大礼包:AI人工智能/大数据/Database/Linear Algebra/Python/机器学习/Hadoop

回复 人工智能下载《FMI人工智能与大数据峰会嘉宾演讲PPT》

回复 AI  江湖下载《十大AI江湖领域》

回复 ML实践下载《机器学习实践经验指导(英文版)》

回复 DL论文下载《深度学习100篇以上论文资料》

回复 算法     下载《数据挖掘十大经典算法》

回复 6.10     下载《6.10饿了么&飞马网项目管理实践PPT》


近期讲座

(详情及报名请点击下面链接)

查看 12月19日【线上直播】大数据生态与转型

查看 12月24日【上海线下】FMI2017人工智能系列沙龙



点击“阅读原文”报名12月21日【【线上直播】测试工具领域应对海量数据的解决方案

Copyright © 日本跟团价格联盟@2017