




高质量代码中往往缺陷更少!确保高的 Java 代码质量有两个步骤:尽早并经常地编写各个层次的测试用例,以及持续的监测质量状况。那么我们又该如何实践呢?本专题汇集了大量来自质量专家们的专业经验、最佳实践以及实用技巧,内容涵盖了单元测试测试理论、Bug 调试、静态代码分析、单元与集成测试、覆盖率、测试工具和自动化测试等方面,其丰富的文章、教程及系列专栏将为您的代码质量加油提速!
什么是软件质量?
软件质量(software quality)是与软件产品满足明确或隐含需求的能力有关的特征和特性的总和。高质量的软件通常具备了这样一些特性:
- 满足用户的需求。
- 合理进度、成本、功能关系。
- 具备扩展性和灵活性,能够适应一定程度的需求变化。
- 能够足够的强壮、足够的鲁棒,能够有效的处理例外的情况。
- 保持成本和性能的平衡。
- 能够可持续的发展。
关于软件质量的具体描述,请阅读由五个部分组成的系列文章:
软件质量之路
。
什么是软件测试?
软件测试是为了发现程序代码中的错误(Bug)而执行程序的过程,是软件质量保证的重要手段,属于软件工程领域。其目的是:
软件测试技术根据测试原理,又分为:
- 静态测试:不实际运行程序,而是通过代码检查的手段来发现错误并评估代码质量的软件测试技术;(参阅 如何静态测试 Java 代码?)
- 动态测试:实际运行程序,并通过观察程序运行的实际结果来发现错误的软件测试技术;
代码质量专家 Andrew Glover 在他的专栏
追求代码质量
中介绍了如何使用最新的测试工具来保证代码质量,他将重点阐述一些看上去有点神秘的东西。
什么是测试驱动开发(TDD)?
测试驱动开发(Test-Driven Development)起源于极限编程(XP)开发过程中提倡的测试先行实践。测试先行实践重视单元测试(Unit Testing),强调程序员除了编写代码,还应该编写单元测试代码。在开发的顺序上,它改变了以往先编写代码,再编写测试的过程,而采用先编写测试,再编写代码来满足测试的方法。这种方法在实际中能够起到非常好的效果,使得测试工作不仅仅是单纯的测试,而成为设计的一部分。(具体请参见后面的 如何实践测试驱动开发?)
正如好的编程技能涉及很多设计模式(您可以在不同的程序上下文中组合和应用这些模式)的知识一样,好的代码诊断和 Bug 调试技能也涉及对错误模式的一定了解。错误模式就是已发生的错误和程序中潜在的错误之间的重复出现的相互关系。这种概念对编程来说并不新鲜。医生们在诊断疾病时依靠相似类型的相互关系。他们在实习期间通过和资格较老的医生共同工作来学习这些。他们的教育就是集中在做这种诊断上的。相反,我们软件工程师的教育是集中在过程设计和算法分析上的。这些技能固然重要,但是人们对调试过程的教育却很少关注。相反,我们得自己去“拾起”这种技能。随着极端编程的出现和它对单元测试的注重,这种做法已经开始改变了。但是频繁的单元测试只是解决了问题的一部分。一旦发现错误,就必须诊断和纠正它们。幸运的是,很多错误都遵循我们可以识别的几种错误模式的其中一种。一旦您可以识别出这些错误模式,您就可以诊断出错误的原因并且更快地纠正它了。
错误模式与反模式有关,反模式是一次又一次被证明是失败的公共软件设计的模式。虽然反模式是设计模式,错误模式却是与编程错误相关的错误的程序行为的模式。这与设计根本没有关系,而是与编程和调试过程有关。
了解各种具体的错误模式以及如何诊断和纠正 Java 程序中反复出现的错误类型,请参阅 Eric Allen 的系列专栏:
此专栏中,Eric Allen 针对各种错误模式进行具体的讨论,如:
另外,他还讨论了许多其它主题:
Java™ 开发人员现在拥有很多通过代码度量、静态分析等方法来度量代码质量的工具。所有的这些新的工具使得确保代码质量比以前简单得多,不过您还需要知道如何使用它们。
代码度量
- “监视圈复杂度”展示如何使用简单的代码度量工具和基于 Java 的工具来监视代码复杂度。
- “软件架构的代码质量”解释了如何持续地监视并纠正会影响软件架构的长期生存能力的代码质量方面。
- “用代码度量进行重构”介绍如何使用相同的代码度量方法和提取方法模式进行有针对性的重构。
静态分析工具
静态分析工具承诺无需开发人员费劲就能找出代码中已有的缺陷。当然,如果有多年的编写经验,就会知道这些承诺并不是一定能兑现。尽管如此,好的静态分析工具仍然是工具箱中的无价之宝:
-
FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题:
-
PMD 是一个开源的静态分析工具,它分析 Java 源代码,并找出潜在的 bug:
- “用 PMD 铲除 bug”解释如何使用 PMD 内置的规则以及您自己定制的规则集来提高 Java 代码质量。
- “驯服复杂的冗长代码”展示了如何使用诸如 PMD 和 JavaNCSS 之类的工具,在您需要的时候获得更高的代码复杂度测试精度。
-
Eclipse 静态分析插件,能在构建代码前便发现代码中潜在的问题:
Rational 软件交付平台简介
面对 IT 开发日益增长的复杂性和越来越短的项目开发周期,您是否在寻找能统一企业开发团队的开发平台,和能全面管理您基于面向服务体系结构(SOA)资产的解决方案?Rational 软件交付平台(SDP)V7 产品正是您的最好选择!
Rational SDP V7 产品为您的 IT 开发带来了更多的灵活性,支持您实现全球跨地域分布开发团队的同步开发,更好地实现和管理软件交付及系统架构,并能显著改进 IT 资产的生命周期和产品质量的管理。当中的热门产品 Rational Software Architect V7.0 能帮助您更快更好地设计 SOA 解决方案,Rational Functional Tester V7.0 能帮助您全面测试软件产品的功能特性,而 Rational Unified Process V7.0 更是指导软件团队开发的经典软件过程。
Rational Java 测试解决方案
IBM Rational 质量管理解决方案通过自动化以及人工测试工具,可帮助测试人员最大化测试的成果并增加工作的有效性,这些测试工具同时保证了业务关键应用在功能性,可靠性以及性能方面的品质。Rational 工具通过在通用的框架上进行集成,支持广泛的开发环境,并且在紧密协作、以及在跨软件交付生命周期管理分布式测试资产和信息方面具有强大的能力。
IBM Rational Functional Tester 是专门为关注其 Java™、.NET® 以及基于 Web 的应用品质的质量保证(QA)团队而准备的自动化功能测试以及回归测试解决方案。
最新产品文档:
IBM Rational Robot是为需要对基于多种 C/S GUI 技术进行应用的功能,和性能自动化测试的质量保证(QA)团队准备的测试工具。现在 Rational 为此产品提供了固定期限的许可证。
IBM Rational Manual Tester 是专门的人工测试认证和执行工具,可促进测试步骤的重用,以减少软件变更对业务分析人员和测试人员的影响。新的和改进的功能特性包括:
最新产品文档:
IBM Rational Performance Tester 是专门的性能测试和压力测试工具,可帮助测试人员实现自动化的性能和压力测试。
最新产品文档:
Rational 软件需求变更与缺陷跟踪解决方案
Rational 提供集成的版本控制、版本和发布管理、缺陷和变更跟踪,以及工作流管理。利用这些功能可以进行团队合作、提高生产率、改善运营效率、降低成本,使企业应用程序开发、Web
内容和技术计划适应业务需求。
配置管理类别中的产品包括:
最新产品文档:
Rational 软件测试过程方法论
项目经理和规划管理经理将发现,开发基础设施工具和过程需要访问最新的项目状态信息、精确地估计所需的资源并作出综合而灵活的项目计划,以助于团队更加高效地协作。IBM 软件交付平台的核心是一个灵活的、已证实的、可配置的、同时针对大型和小型开发项目的过程。
Rational 统一过程(Rational Unified Process® )是业界公认的指导软件团队开发的经典软件过程。其中同软件质量保证相关的测试过程和方法论指导,是众多开发团队借鉴的软件测试框架和测试过程原型。
Rational 统一过程软件质量保证参考文档:
|