很多项目团队的去除软件缺陷的手段,都是依赖于软件测试,都是在软件开发完成之后,将程序交由专业的测试人员进行测试。这样的操作常常会由于前期遗留太多的bug,使得测试周期被拉长,测试的代价非常高昂。
实际上测试并不是去除软件缺陷的唯一手段。在《软件工程最佳实践》中,给出了不同缺陷的最佳发现方法:
需求缺陷:正规的需求审查
设计缺陷:正规的设计审查
代码缺陷:静态分析、代码审查、测试
文档缺陷:文档编辑、文档审查
不良缺陷:修复后的重新审查、修复后的静态分析、回归测试
测试用例缺陷:测试用例审查
通常我们所说的软件缺陷并不只是单纯的代码缺陷。前期的需求缺陷和设计缺陷,最终都会反映到代码缺陷中。这些缺陷如果能够在早期发现修复的代价很小,只需要需修改技术文档,再通过联合评审就可以完成;而如果这些缺陷直到后期测试的时候才发现,就需要进行需求跟踪,修改技术文档,制定修复方案,修改代码调整测试计划和测试用例,进行回归测试,变更控制等诸多操作才可以完成,代价会变得非常之高。有数据表明后期发现缺陷的修复成本是早期的十倍!
当前对发现需求缺陷和设计缺陷的最有效的方法是审查技术。
审查就是由一些专家组成的审查组,对技术文档在逐页进行审查,对代码逐行进行审查,以使代码和文档满足相应的技术准则和规范,并且与用户需求保持一致。
当然对于代码来说,在进行审查之前,最好应先进行静态分析,由此可以先行消除一些语法错误以及在边界条件、调用和链接方面的问题。静态分析可以发现87%的常规编码缺陷。这样就会使得代码审查的内容更多地集中到工具不能完美取代的、必须由人来完成的逻辑问题的发现上。
审查所以有效,是因为人的大脑具有分析和处理归纳逻辑和演绎逻辑的能力。正因为如此,审查技术可以适用于任何软件构件的缺陷去除上面。所以我们应当在整个软件开发生命周期中,都应该使用审查技术。这样才有可能使交付软件的缺陷去除效率能够达到90%以上。
最后,经验数据表明在软件缺陷去除效率的方法上,多数测试方法的效率低于35%,而审查的效率可以超过65%(当审查的范围介于50%到80%),大约是多数测试方法的两倍。
大多数组织都是能够以评审的方式进行需求和设计规范的审查,但有些代码的审查常常会由于资源的关系而没有执行。鉴于审查技术具有超高的缺陷去除效率,所以我们应当注重需求和设计的评审绩效,重视代码审查工作,以追求更高的软件缺陷去除效率。
联系客服