上次翻译了一篇文章—— Bug分析:为bug预防奠定基础, 强调软件缺陷的预防。软件质量是构建起来的,由软件开发的整个过程质量所决定的,软件质量肯定不是通过测试测出来的。所以软件缺陷的预防自始至终是重要的。除了缺陷分析,另外一个很重要的实践就是:代码复审(code review)和测试用例的复审(Test Case review)。
1.Code review
在IBM、微软等很多公司都有一个很好的实践,那就是Code review - 代码复审。这种代码审查的过程,不是将代码发给某一个人或某几个人去看,而是强调程序员自己定期走上台,向其他人讲解自己源程序的活动。因为要向大家讲解自己的程序,show code to other guys, 程序员会极其重视自己的工作进度、代码质量,在写代码时,就时刻想着——可能随时会被选中去做code review, 所以非常认真对待每一行代码。这种Code review 方式还有其它好处:
可以互相学习程序设计思想、方法和技巧,共同提高;
可以及时发现代码的问题,包括代码的Dependency的问题;
更多的人明白他人写的代码,今后代码的维护也变得容易。
所以这种Code review 方式,被证明是一种行之有效的方法。
2.Test Case review
与Code review对应的,在测试/QA这边进行Case review. 每一个QA工程师,都有机会被选中,通过投影机做Presentation,向大家讲清楚他/她是如何设计测试用例(Test Case)的, 包括产品新特性的理解、对测试范围的分析,考虑了哪些因素、哪些user scenario, 用例设计的思路是怎样的?测试的覆盖率如何?把主要的测试用例从头到尾Show 一遍,等等。
每个人都有且必须有机会,这是关键。其次,Case review时,被选中的QA Engineer必须讲解他/她如何写Test case.
通过这样的实践和活动,可以更早地发现test case中的问题,相互启发,相互学习test case design的技巧和方法,交流经验。也督促每个人把测试用例设计好。好处也一样多:
设计Test case之前,就会好好考虑各种因素、想清楚设计思路——覆盖率提高。
认真写好每一个Test case——单个case质量提高
更早地发现Test case的问题,包括相互影响的区域。
相互学习
Test case维护更容易
Code review和Test Case review同样蕴含了“缺陷预防”的思想。要提高质量,就如克劳士比所说,第一次就要把事情做对!如果系统分析员、架构设计师、设计人员、编程人员等所有人员都在第一次就要把事情做对,测试人员也许就不需要了。有一个例证,几千人的印度软件公司,只有5-6个真正的QA人员,但没有一个测试人员,软件产品质量依旧很好,再一次验证了“质量是写出来的,不是测出来的”。