贯穿项目生命周期利用自动化测试保证软件开发的质量

发表于:2009-1-05 16:35

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:申震杰    来源:IBM

分享:

  甘特图中的几个主要的任务包括:ClearQuest Eclipse GUI 原型开发和测试,CQ Core API 的开发以及 ClearQuest Eclipse GUI 和 CQ Core API 的整合。

  绿色的字体标记的任务即为各种自动化测试的开发和运行。

  红色的方框圈起来的部分可以视为一个迭代完成的任务,在图中列出的所有任务中,任务 1,8,10,13,19 及其各自的子任务即为 Agile 开发过程中的各个迭代(在后面的描述中我们将按照任务的 ID 来命名各个迭代过程,如,ID 为 1 的任务所对应的迭代为迭代 1。)每个迭代的过程中又包括不同的阶段,如,代码开发阶段,功能测试阶段等等。

  蓝色的方框圈起来的部分为源代码和它所对应的单元测试。

  上面给出的甘特图的 ClearQuest 的各种自动化测试中,由于各种自动化测试被应用在不同的编程语言开发的组件上或者应用在不同的功能部件上,并且也不是每一个迭代都包括所有部件的开发,所以不是所有的自动化测试都会被应用在每一个迭代中。但是一个迭代基本上会涉及到所有的开发阶段,所以针对开发过程中的不同阶段的自动化测试,在一个迭代中几乎都会被应用到。如,除了迭代 10 以外,其他所有的迭代中都引入了单元测试、功能测试和性能测试;迭代 1 中在代码开发阶段用到了 JUnit 单元测试,功能测试阶段应用了 CQ Eclipse GUI 自动化测试;在迭代 13 中,代码开发阶段用到了 Harness 单元测试,功能测试阶段用到了 ATE 测试。

  由于采用了 Agile 测试驱动开发,所以测试代码和源代码的开发基本上是同步进行的,如,迭代 1 中的任务 3、4、5,任务 3 为源代码的开发,任务 4 为单元测试代码的开发,任务 5 为功能测试代码的开发,在任务 2 的设计确定下来之后,这三个任务同时进行。单元测试本身也是源代码开发过程中用于进行代码调试的辅助工具,所以单元测试代码开发和执行的任务整体都是与源代码开发的任务同步进行的。功能测试则不同,只有其代码的开发是和源代码开发同步进行,而其运行就需要等到源代码开发完成之后才能执行。甘特图中将相应的源代码和 Harness Test/Junit 的开发和执行(包括 PurifyPlus 的执行)的任务用蓝色的方框标记出来,可以看到每一对任务都是同时并发完成的。例如,迭代 1,迭代 13 和迭代 18;而功能测试对应的任务,如,任务 5 和任务 6,其中任务 5 是功能测试代码的开发,任务 6 为功能测试的执行,任务 6 是在任务 5 完成之后才被执行的。另外,如任务 7、任务 18 和任务 23 对应的性能测试,任务 7 和任务 8,也就是部分性能测试,在整体功能尚未成型但是功能测试可以开始执行的时候,就被引入,以便提早发现性能上的问题,因为性能问题通常牵扯到软件本身的设计问题,所以及早引入可以避免后期由于设计引来的大规模返工;当整体功能基本成型的时候,任务 23 开始被引入,来进行更多更全面的性能测试。系统测试也是在功能基本成型的时候引入的。

  总结

  归结起来,在 ClearQuest 中对自动化测试应用有以下几点:

  ● 只要有源代码开发的环节,就会应用到自动化单元测试

  ● 每个迭代中源代码开发完毕的时候,引入新的功能测试

  ● 在开发过程中结合不同的自动化测试,做到测试的全面性

  ● 在开发的过程中需要定期利用各种自动化测试进行回归测试

  ● 自动化测试的代码与源代码的开发同步进行

  ● 及早引入性能测试,以避免设计上的问题被遗留到后期带来的问题

  总之,在较大规模产品的开发过程中,针对所开发的产品的不同的层次结构,以及产品开发中所采用的开发方法的特点,及时、合理地在开发的各个阶段应用各种不同的自动化测试,让自动化测试与开发过程紧密地结合起来,可以更为有效并且更为精确地发现产品中存在的问题,最大限度地将问题修正带来的花销降到最小。

  在 ClearQuest 的开发过程中,应用到了多种不同的自动化测试,这些不同的自动化测试贯穿了整个开发周期的始终,从软件的不同方面保证了重量级产品的成功开发。 ClearQuest 发展至今,其各种自动化测试脚本和框架已经成为了 ClearQuest 中不可缺少的一部分,集中了很多优秀工程师们的智慧和劳动。

  本篇的介绍主要集中地描述了自动化测试在 ClearQuest 的开发过程中是如何在各个阶段和场景被引入的,也就是自动化测试和 ClearQuest 开发过程的结合。在下一篇中,我们将较为详细地描述 ClearQuest 开发中自动化测试的具体应用方法,以及自动化测试是如何与 ClearQuest 开发的配置管理互相配合,使得产品开发的质量和效率达到最佳平衡的。

  注释

  ① Harness 测试

  该术语是泛称,代表我们为了检验软件的某部分而编写的测试代码以及用来运行这些测试代码的代码,它可以作为一个自动化测试的工具运行在一个系统或者程序的核心部分。在本文中,Harness 测试是一个专门为了测试 ClearQuest Core 的底层逻辑代码的自动化测试及其框架。

  ② BLUE Test Automation - Business Logic Utilities Environment Test Automation

  由 IBM Rational CRM Test Automation Team 开发的一套测试框架,目前主要应用于 ClearCase 和 ClearQuest 的开发中。

  BLUE Test Automation 包括:

  ● 支持一般的测试自动化开发的可复用类库

  ● 支持特定的 GUI 领域 Dojo 和 Eclipse 的可复用类库

  ● 基于业务逻辑的特定应用程序测试自动化的开发方法

  ● 便于利用 Java 为 GUI 和 API 应用程序构造自动化测试的框架

  ③ Agile(敏捷式开发)是一种迭代、循序渐进的开发方法。在 Agile 开发中,通过不断地获取用户的反馈信息和进行方向调整,来使得所开发的软件具有更高的质量和更高的实用性。用 Agile 开发过程,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。简言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并在每个迭代过程中分别完成,并且保证每个迭代过程的成果一直处于可使用状态

  ④ 测试驱动开发(Test Driven Development)不仅仅是一种测试方法,它是一种软件设计的方法,是 Agile 开发方法实践的核心。其工作的流程如下:

  ● 添加一个测试用例

  ● 运行所有的测试用例并确定新添加的测试用例运行失败

  ● 用最简单的代码来使得新加的测试用例由失败变为成功

  ● 运行所有的测试用例,并确定新添加的测试用例通过

  ● 细化代码

  ● 重复以上各个步骤

  测试驱动开发带来的优点如下:

  ● 提高代码质量。从测试做起可以让测试覆盖所有的代码。

  ● 测试是对整个系统功能的描述。通过阅读测试代码就可以清楚整个系统的功能。

  ● 让开发人员更有自信。当代码作性能调整的时候,可以很快发现问题。

  ● 尽早发现问题。

  ● 让软件模块化做的更好,更为灵活和具备更好的可扩充性。因为开发人员需要想尽方法让软件中的各个功能更为独立地进行测试并且更为容易地集成起来。

  ● 代码必须做到可测试,强制开发人员做好的设计

44/4<1234
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号