腾讯TMQ在线沙龙|Code Review也有潜规则

Code Review也有潜规则

活动时间:2017年3月30日 QQ群视频交流

活动介绍:TMQ在线沙龙第十八期分享

本次分享的主题是:Code Review也有潜规则

共有114位测试小伙伴报名参加活动,在线观看视频人数 47人!

想知道活动分享了啥吗,

往下看吧!

活动嘉宾

嘉宾简介

张艳,腾讯高级测试工程师,在腾讯电脑管家测试团队负管家PC办公相关项目的测试工作,包括桌面搜索、跨度传输、健康小助手等项目的CR、功能、性能的测试工作,在CR方面有一定的实践经验。

分享主题

1、什么是Code Review 2、怎么做Code Review 3、Code Review之“潜规则”

问答环节

(1)CR代码是耗时吗?感觉要考虑的地方还比较多。如果是多个开发对应一个测试的话,如何进行处理呢?

答:多对一的情况,建议:

1、推动开发间相互CR,这也是促进开发自测和保证提测质量的手段之一;

2、找到核心模块,按照优先级挑重点review,不用刻意追求所有模块所有行都review

前期经验不足的时候确实比较耗时,但是随着你的经验越来越丰富,CR的时间会越来越短。

(2)一般Codeeview在开发或测试的什么阶段开始展开?一般会花多少时间?

答:一般在开发编码阶段就可以开始CR了。时间视情况(经验以及代码量)而定。

(3)CR过的代码部分还会执行其他测试吗,如功能测试、自动化测试等?怎么划分哪些代码需要进行CR,哪些不需要?

答:目前我们这边还是会执行功能测试、自动化测试的。

至于如何选择,取决于产品的业务特点,例如界面层的,轻量CR或者不做;核心逻辑层的,可以重点CR。

(4)静态代码检查用的是什么工具?

答:我们这边使用的是cppcheck和klockwork。

ppt所讲的风险代码扫描工具是组内同学自行开发的工具,目前为非开源工具。

(5)CR的自动化是加入到静态代码检查工具中 还是单独做的?

答:ppt所讲的风险代码扫描工具是组内同学自行开发的工具,没有加入到业界的静态代码检查工具中。

(6)CR零积累的时候,团队里的人不懂代码,这个培养周期是很长的,所以一开始你们是招聘懂代码的人来做吗,或者就是内部花了较多时间去培养这样一群人?

答:一般在招测试人员的时候会考虑代码能力,所以都是有基础的。有些能力强的同学,不用培养直接可以CR。

(7)每个版本迭代很快,做这个事情的时间一般从哪里挤出来?

答:1、提高效率,避免无效测试,适当做减法;

2、不断丰富CR经验。

(8)风险代码查询工具是腾讯自己做的还是,其基本原理是什么?

答:对,风险代码查询工具是内部同事开发的。

原理大致是先抽象CR发现问题的过程,定义规则,然后映射成关键字以及处理好他们的逻辑关系,最后扫描开发代码,一旦触发规则则报警。

(9)CR中debug代码发现问题,请举例说明一下?

答:例如不是很明显的资源泄漏问题,表面上调用释放了,但实际没有走到,可以在怀疑有问题的地方加断点,调试,观察释放前后,对象的值,看有没有真正被释放。

(10)上面提到的checklist 大多都是基于C++语言特性的么,有没其他一些语言的checklist呢,需求相关的除外?

答:对,是C++的。目前我这资料里没有其他语言的,但有些规则的思路是可以复用的哦。

(11)有没有通过cr发现安全问题?

答:例如缓冲区溢出,没有防注入等等

(12)什么情况需要做进一步的动态分析?

答:在CR发现一些布确定问题的时候可以进一步动态执行,例如通过调试去验证是否是问题

(13)有没有可能应用机器学习方法改进cr效率?

答:这个,理想是光明的。这需要大量的样本,训练模型,以及结果有效性的验证。

(14)扫描代码是基于什么原理实现?请问刚才说的cr扫描工具提供外部使用吗?

答:目前没有给外部使用,可以帮你联系下作者

(15)您好,请问你们代码审查自动化的工具只是腾讯内部在使用吗?

答:是的,目前为非开源。

(16) 请问刚才说的cr扫描工具提供外部使用吗?

答:目前没有提供给外部使用呢

(18)哈喽,有个问题,刚才讲cr的时候,说cr可以补足代码覆盖率不足100%的情况。这个不应该硬性的追求100%吧。你们的代码覆盖率标准是怎么制定的?

答:不是纯粹为了追求覆盖率。关注覆盖率一方面可以辅助我们补充测试分析,另一方面可以看下哪些未覆盖,是否有风险和bug。

目前还没有制定特别严格的代码覆盖率标准。

(19)静态扫描工具的实现,相对 Sonar 这种成熟的工具有何独特优势?

答:组内开发的工具,可以说是一种灵活自定义规则的缺陷规则代码扫描工具,规则来源于Code Review、crash分析、用户反馈分析等。缺陷规则代码扫描专注于静态扫描存在误报的规则以及只有在特定运行时态会Crash的代码规则,可以说补齐了静态代码扫描(cppcheck,klockwork)的短板并实现了一定程度的CR自动化。

至于Sonar,它是用于管理Java源代码质量的。很抱歉,因为研究不多,所以暂时无法比较。

(20)code review一般来讲是静态分析的手段,能具体讲些例子吗, 说明什么时候需要由静态分析沿伸到动态分析?

答:ppt里介绍的那几个规则都是来源于实践的例子,不过不方便截图代码,举个简单的例子,当你发现new了一个对象,在这个对象的生命周期内,没有delete,那就是个资源泄漏问题。

当你在静态分析的时候不确定它是否问题,那这个时候可以动态调试的形式,例如不是很明显的资源泄漏问题,表面上调用释放了,但实际没有走到,可以在怀疑有问题的地方加断点,调试,观察释放前后,对象的值,看有没有真正被释放。

(21)现在有些论文在讲用静态分析的方法发现安全问题,也有coverity这样的商业工具,想知道tmq这边有没有这方面的实践经验?

答:我们组内目前使用的代码扫描工具就是业界的cppcheck,klockwork,以及ppt里介绍的风险代码扫描工具。

获奖名单

ID:101140583 942667145

恭喜以上两位同学获得TMQ本次沙龙活动听众奖;

本次奖品是由TMQ 官方出品《移动APP性能评测与优化》新书哦

原文发布于微信公众号 - 腾讯移动品质中心TMQ(gh_2052d3e8c27d)

原文发表时间:2017-04-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构师学习

浅析常用软件架构的三种架构模型

常用的软件架构模型可以归类为三种架构模型:3/N层架构、“框架+插件”架构、地域分布式架构。 一.三种架构模型 1.3/N层架构 这是经典的多层架构模型,对于稍...

50970
来自专栏技术博文

你应该了解Nginx的7个原因

Nginx ("engine x")是一个高性能的HTTP和反向代理服务器,也是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服...

34390
来自专栏Java架构沉思录

亿级用户下的新浪微博平台架构

  新浪微博在2014年3月公布的月活跃用户(MAU)已经达到1.43亿,2014年新年第一分钟发送的微博达808298条,如此巨大的用户规模和业务量,需要高可...

38420
来自专栏云计算D1net

私有云架构建设, 你做好准备了吗?

私有云基础架构的构成要素 随着越来越多的企业设定了构建内部云服务的目标,规划和构建企业内部云服务平台就成为IT部门的职责。每个企业都有自己特有的环境和具体的目标...

48460
来自专栏企鹅号快讯

高可用性的前生今世

题记:今天是2018年1月1日,这是一个特殊的日子,民间称为“三头”,意思是周头、月头、年头;我把它称为“3A”,指Kerberos协议的3A。无独有偶的是今年...

23470
来自专栏IT大咖说

React Native 在卖菜公司的落地之路

内容来源:2018 年 3 月 31 日,宋小菜资深前端工程师陈锦辉在“React 技术专场交流活动”进行《RN 在卖菜公司的落地之路》演讲分享。IT 大咖说(...

12550
来自专栏大前端开发

从编程小白到全栈开发:理解前后端

上一篇文章中让你安装的软件安装好了没?那些操作都尝试做了一遍没?没有的话,赶紧回头去再看一遍文章,动起手来吧。学编程,如果说有捷径的话,实操就是最好的捷径!

23840
来自专栏京东技术

京东物流性能测试理论梳理 ——性能测试的正确打开方式

京东全球年中购物节火热进行中,2018年6月1日0点到6月18日24点累计下单金额达1592亿元,出库订单金额同比增长超过37%!618期间,90%以上自营订单...

21820
来自专栏FreeBuf

HTTP/2性能更好,但是安全性又如何呢?

根据W3Techs的调查数据显示,目前大约有11%的网站使用了新型的互联网通信协议–HTTP/2,而在一年之前,其占比只有2.3%。 没错,这个新的协议的确可以...

228100
来自专栏子勰随笔

SDK之关于SDK的一些想法

298160

扫码关注云+社区

领取腾讯云代金券