`
peizhiinfo
  • 浏览: 1417538 次
文章分类
社区版块
存档分类
最新评论

【郭林专刊】提高 Java 代码质量

 
阅读更多

使用软件测试技术改进 Java 代码质量!

高质量代码中往往缺陷更少!确保高的 Java 代码质量有两个步骤:尽早并经常地编写各个层次的测试用例,以及持续的监测质量状况。那么我们又该如何实践呢?本专题汇集了大量来自代码质量专家们的专业经验、最佳实践以及实用技巧,内容涵盖了软件测试理论、Bug 模式与代码诊断、代码静态分析、测试驱动、单元测试、覆盖率、测试工具和 IBM Rational 测试平台等方面,其丰富的文章、教程及系列专栏将为您的代码质量加油提速!

软件质量与软件测试

什么是软件质量?

软件质量(software quality)是与软件产品满足明确或隐含需求的能力有关的特征和特性的总和。高质量的软件通常具备了这样一些特性:

关于软件质量的具体讲述,您可以请阅读这个由五个部分组成的系列文章:“ 软件质量之路 ”。

什么是软件测试?

软件测试是为了发现程序代码中的错误(Bug)而执行程序的过程,是软件质量保证的重要手段,属于软件工程领域。其目的是:

软件测试技术根据测试原理,又分为:

代码质量专家 Andrew Glover 在他的专栏“ 追求代码质量 ”中介绍了如何使用最新的测试工具来保证代码质量,他重点阐述一些看上去比较神秘的东西。

什么是测试驱动开发(TDD)?

测试驱动开发(Test-Driven Development)起源于极限编程(XP)开发过程中所提倡的测试先行实践。测试先行实践重视单元测试(Unit Testing),强调程序员除了编写代码之外,还应该编写单元测试代码。在开发的顺序上,它改变了以往先编写代码,再编写测试的过程,而采用先编写测试,再编写代码来满足测试的方法。这种方法在实际中能够起到非常好的效果,使得测试工作不仅仅是单纯的测试,而成为设计的一部分。(具体请参见后面的 如何实践测试驱动开发?

如何诊断与调试 Java 代码中的 Bug?

BUG 模式与 Java 诊断

正如好的编程技能涉及很多设计模式(您可以在不同的程序上下文中组合和应用这些模式)的知识一样,好的代码诊断和 Bug 调试技能也涉及对错误模式的一定了解。错误模式就是已发生的错误和程序中潜在的错误之间的重复出现的相互关系。很多错误都遵循我们可以识别的几种错误模式的其中一种。一旦您可以识别出这些错误模式,您就可以诊断出错误的原因并且更快地纠正它。错误模式与反模式有关,反模式是一次又一次被证明是失败的公共软件设计的模式。虽然反模式是设计模式,错误模式却是与编程错误相关的错误的程序行为的模式。这与设计根本没有关系,而是与编程和调试过程有关。

了解各种具体的错误模式以及如何诊断和纠正 Java 程序中反复出现的错误类型,请参阅 Eric Allen 的系列专栏:

在此专栏中,Eric Allen 针对各种错误模式进行了一些具体的讨论:

另外,他还讨论了许多其它关于 Java 代码诊断的主题:

Java 调试

即使是最高级的开发人员所开发的最简单的应用程序也可能包含错误。如果要成为好的调试人员,不必象大侦探那样调查蛛丝马迹。您只需了解概念并熟悉正确的工具。

如何静态测试 Java 代码?

Java 开发人员现在拥有很多通过代码度量、静态分析等方法来度量代码质量的工具。所有的这些新的工具使得确保代码质量比以前简单得多,不过您还需要知道如何使用它们。

代码度量

静态分析工具

静态分析工具承诺无需开发人员费劲就能找出代码中已有的缺陷。当然,如果有多年的编写经验,就会知道这些承诺并不是一定能兑现。尽管如此,好的静态分析工具仍然是工具箱中的无价之宝:

如何实践测试驱动开发?

测试驱动开发

测试驱动开发是敏捷开发的最重要的部分。该方法主要是先根据客户的需求编写测试程序,然后再编码使其通过测试。在敏捷开发实施中,开发人员主要从两个方面去理解测试驱动开发。

更多请参见文章“使用模拟对象(Mock Object)技术进行测试驱动开发”。

单元测试

单元测试测的是独立的一个工作单元。在 Java 应用程序中,“独立的一个工作单元”常常指的是一个方法(但并不总是如此)。作为对比,集成测试和验收测试则检查多个组件如何交互。一个工作单元是一项任务,它不依赖与其他任何任务的完成。

相关技术文章:

测试覆盖率

测试改进了代码质量,但这也只是针对实际测试到的那部分代码而言的。您需要有一个工具告诉您程序的哪些部分没有测试到,这样就可以针对这些部分编写测试代码并找出更多 Bug。

软件测试自动化

软件的手动测试非常耗时,劳动强度高,并且很单调,而且还会引入一些人为的错误,因此测试自动化势在必行。通常自动化测试是通过一些测试自动化工具开发和执行测试脚本,达到评估软件质量的目的。自动化测试不仅能够大大减轻测试人员的工作量,并减少了测试过程中人为出现的错误。

更多的相关内容,请参见:“软件测试自动化专题”。

Java 开发测试与 IBM Rational 产品平台

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 统一过程软件质量保证参考文档:

分享到:
评论

相关推荐

    单分散性钴铁氧体纳米粒子的研究进展

    单分散性钴铁氧体纳米粒子的研究进展,王志成,郭林,钴铁氧体纳米磁性粒子具有良好的物理化学性能,因此其相关合成备受关注。本文总结了钴铁氧体纳米粒子的制备方法,如化学共沉淀法

    小尺寸、单分散Cd

    采用改进高温热分解法合成了Cd2+掺杂NaLuF4∶Yb, Er纳米晶体,研究了Cd2+对晶相形成和发光强度的影响,采用CASTEP计算不同掺杂浓度下β-NaLuF4∶Yb, Er的形成能。在掺杂浓度为6mol%时合成的纳米晶荧光强度最强,其相较...

    Android大屏幕适配demo

    Android大屏幕适配demo,这个是仿照郭林文章中的例子,他的例子是用eclipse写的,直接运行会不兼容最新的sdk,我改成了AndroidStudio...郭林此代码文章的连接 http://blog.csdn.net/guolin_blog/article/details/8744943

    学习见证消息推送时刻笔记

    学习郭林老师的见证消息推送时刻笔记,笔记未整理有点乱,有很多不足,希望大家指点,源代码随后上传

    Android photoWallDemo

    仿照郭林博客http://blog.csdn.net/guolin_blog/article/details/34093441写的demo,androidStudio版本,他下载的链接是eclipse的代码,在高版本的AndroidStudio运行会不方便

    VolleyDemo

    这个是参考网上的资料,结合google官方的文档写的一个volley的简单demo,并做了简单的封装,想更加系统的学习volley可以参考google官方文档以及郭林的博客

    论文研究-基于评论对象的新闻影响力预测算法 .pdf

    基于评论对象的新闻影响力预测算法,魏忠祥,郭林,近年来网络媒体对社会的影响力越来越大,能够定量地分析预测新闻事件的影响力显得尤为重要。目前一些研究都只是针对新闻的点击量

    温度应力下海底管线水平屈曲分析

    温度应力下海底管线水平屈曲分析,刘润,郭林坪,温度应力下海底管线的屈曲大变形是管线设计中所要考虑的关键问题之一。以某实际工程为背景,应用理想平直管线发生水平向屈曲的解

    Synthesis of Ni Net-like Nanomaterials and Their Magnetic Properties

    丝网状镍纳米材料的合成与磁学性质研究,周苇,郭林,以高聚物为软模板,利用温和的湿化学法合成了丝网状镍纳米材料。利用扫描电镜、高分辨透射电镜及X射线衍射仪对样品进行了表征分�

    论文研究-小波去噪的低信噪比直扩信号扩频码盲估计算法 .pdf

    小波去噪的低信噪比直扩信号扩频码盲估计算法,郭林,吕明,本文针对低信噪比直扩信号扩频码的盲估计问题,提出了利用小波降噪的方法对直扩信号进行预处理,然后再分别运用特征值分解算法、

    PVP高分子包覆的镍纳米材料的形态控制研究

    PVP高分子包覆的镍纳米材料的形态控制研究,周苇,郭林,本文报道了辅以PVP(聚乙烯吡咯烷酮)修饰水合肼还原二价镍盐制备镍的纳米材料。通过改变镍盐与PVP的摩尔浓度比、回流温度、盐的种

    Android布局ListView下拉刷新demo

    android中数据的更新需要用户很方便就能操作,其中下拉刷新就是很好的一种用户体验方式,这是郭林大神在网上的一个下拉刷新的demo,我做了一点小小的修改,然后加了一下注释,方便大家参考。

    八面体中空银纳米笼的高效合成及其表面增强拉曼性能研究

    八面体中空银纳米笼的高效合成及其表面增强拉曼性能研究,黄凤琴,郭林,以八面体Cu2O为模板,柠檬酸钠作为保护剂,NaBH4和AgNO3反应产生的银纳米颗粒在模板表面沉积形成银包覆氧化亚铜的核壳结构,最后用乙�

Global site tag (gtag.js) - Google Analytics