高质量代码中往往缺陷更少!确保高的 Java 代码质量有两个步骤:尽早并经常地编写各个层次的测试用例,以及持续的监测质量状况。
本专题汇集了大量来自代码质量专家们的专业经验、最佳实践以及实用技巧,内容涵盖了软件测试理论、Bug 模式与代码诊断、代码静态分析、测试驱动、单元测试、覆盖率、测试工具和 IBM Rational 测试平台等方面,其丰富的文章、教程及系列专栏将为您的代码质量加油提速!
软件质量(software quality)是与软件产品满足明确或隐含需求的能力有关的特征和特性的总和。高质量的软件通常具备了这样一些特性:
- 满足用户的需求。
- 合理的进度、成本、功能关系。
- 具备扩展性和灵活性,能够适应一定程度的需求变化。
- 足够的强壮、足够的鲁棒,能够有效的处理例外的情况。
- 保持成本和性能的平衡。
- 能够可持续的发展。
关于软件质量的具体讲述,您可以请阅读这个由五个部分组成的系列文章:“ 软件质量之路 ”。
软件测试是为了发现程序代码中的错误(Bug)而执行程序的过程,是软件质量保证的重要手段,属于软件工程领域。其目的是:
- 为了寻找错误,并尽可能地为修正错误提供更多的信息;(参阅 如何诊断与调试 Java 代码中的 Bug? )
- 为了证明软件有错误,而不是证明软件没有错误;
软件测试技术根据测试原理,又分为:
- 静态测试:不实际运行程序,而是通过代码检查的手段来发现错误并评估代码质量的软件测试技术;(参阅 如何静态测试 Java 代码? )
- 动态测试:实际运行程序,并通过观察程序运行的实际结果来发现错误的软件测试技术;
代码质量专家 Andrew Glover 在他的专栏“ 追求代码质量 ”中介绍了如何使用最新的测试工具来保证代码质量,他重点阐述一些看上去比较神秘的东西。
测试驱动开发(Test-Driven Development)起源于极限编程(XP)开发过程中所提倡的测试先行实践。测试先行实践重视单元测试(Unit Testing),强调程序员除了编写代码之外,还应该编写单元测试代码。在开发的顺序上,它改变了以往先编写代码,再编写测试的过程,而采用先编写测 试,再编写代码来满足测试的方法。这种方法在实际中能够起到非常好的效果,使得测试工作不仅仅是单纯的测试,而成为设计的一部分。(具体请参见后面的 如何实践测试驱动开发? )