论新时代软件测试人员的工作之道--让Code Review常态化
作者:网络转载 发布时间:[ 2015/8/14 13:41:07 ] 推荐标签:软件测试
在百度,阿里等很多大型互联网公司,测试人员都会参与到code review中,我们团队也在去年开始开展起code review,为什么我们要这么做,首先老生常谈一下代码评审的诸多优点:
1. 通过大家一起改进代码的质量,可以在前期发现很多缺陷;
2. 彼此分享传递知识,让更多的人尤其是不太熟悉该业务的人也可以轻松的维护代码,甚至可以做好人员的back up,否则人少活儿多的团队,因为某个人的离开导致业务发展受到影响得不偿失;
3. 促进团队沟通,彼此取长补短;
4. 同时常态化的code review可以很好的提高团队凝聚力,在工作中彼此帮助,相互学习,团队中每个人会自动进化成长。
以上这些优点基本上都是说的开发团队成员间的code review,而对于测试人员来说,参与到code review中的好处又有哪些呢:
1. 可以更深入地理解开发实现,易于测试覆盖到一些非需求性的点;
2. 方便评估影响范围,有效提高测试效率,不会因为一个小改动而动全身,大范围的回归测试,实际上只是因为改了一行代码,只不过在多次被调用而已;
3. 对于一些不易于测试的代码可以很方便的静态检查,甚至可以直接编码进行调试验证,可以省去让开发人员额外编码满足易测试性要求的成本;
4. 增加了一种更加“程序猿化”的沟通方式,再也不会被开发人员瞧不起咱们不懂代码了,提出bug的时候直接甩出来哪个地方的问题,真是爽哉!
当然,一旦测试人员介入到code review的时候,特别是对于测试新人容易出现一种情况,大家都习惯于在IDE中反复敲击F3来跟代码,从一个入口方法一直这样一步步往下,心里还一边恍然大悟一样,soga,原来是这样实现的,如果你不保持自我的清醒意识,仿佛着了魔一样沉溺于code的海洋。打住!你要跳出来,以一个需求方甚至是终端用户的角色来看待代码都做了什么,毕竟我们要来审视开发人员的劳动成果是否满足需求,而不是以他们为标准来熟悉业务,这完全应该是两码事,不能跟着代码走!正确的做法是,在充分理解了需求,对需求每一点理解的都非常透彻的前提下,review代码是否按此实现了,如果没有尽早提出来,让开发修改,所以我觉得测试人员在进行code review的第一大任务应该是review业务逻辑是否被正确实现,然后才是去理解开发人员的实现方式以及找出代码中的其他问题。
在我们所做的review中,会关注以下内容:
1)需求里要求的业务处理逻辑是否有遗漏,是否有实现错误等;
2)判断的条件是否缺失, 判断的条件是否符合需求,特别是在对边界处理上,本应该大于等于的是否写成了大于,等等;
3)错误处理,是否正确处理了错误,错误是否应当被拦截,拦截后是如何处理的,需要打日志的时候是否打了,遇到非常重要的操作时如果失败的话是否添加了报警(包含但不限于邮件,短信等);
4)是否对入参进行了校验,校验是否涵盖全了;
5)SQL语句是否正确,比如创建和更新,应该分别是insert和update的语句实现的,不能搞错,还有很多页面显示的数据都是通过select查询语句实现的,如果where条件不正确一眼能看出来;
6)数组越界,以及空指针异常等;
7)同样,还可以检查出代码的结构是否合理,是否有冗余,比如经常有开发同学把同样一段代码在if和else两个分支里都实现了,是否可以直接拿到判断之外;
8)对于能力更强的测试同学,同样还可以找出设计模式上的问题,以及可能存在的安全及性能的风险。
目前我们的review工作基本集中在前7条,我相信在大家逐步熟练和进步了之后,会慢慢的发现一些代码架构,性能等深层次的缺陷的。
通过实施code review,测试同学更加熟悉开发实现,对自己所测试的系统的质量保障更加有底气,一个新需求到手,马上都能想到开发人员要改动哪里,现在我们的测试人员已经基本养成了及时svn up代码,打开IDE或者通过svn diff查看改动的代码内容,虽然在此之前我曾强制要求大家使用一个code review的工具来开展,但是强制所带来的效果,远没有让大家感受到其好处来的更佳,慢慢地,code review成了常态化。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11