快捷搜索:

用自动化测试保证软件开发的质量

本文主要先容在 IBM Rational ClearQuest 的开拓历程中,若何在开拓的各个阶段利用各类不合的自动化测试包管开拓质量。

ClearQuest 中开拓项目的先容

IBM Rational ClearQuest 是 Rational 家族产品中的核心成员。它可以在全部利用法度榜样开拓生命周期中供给机动的缺陷和变化跟踪功能。

今朝,ClearQuest 产品还处于赓续进级和掩护中。如,对 ClearQuest 本地化的支持,向 Eclipse 平台的移植,ClearQuest Web 的进级,自身功能的进级,以及与 Jazz 的集成等等。

产品的质量和实用性抉择了其在客户眼中的职位地方,ClearQuest 也不例外,质量对付 ClearQuest 的开拓和进级至关紧张。ClearQuest 成长至今,其代码量险些可以用 G 来谋略;并且此中包括了各类各样的组件,如 ClearQuest 的核心部分、Windows 本地客户端部分,ClearQuest 支持的 Eclipse 平台以及 Web 等等。ClearQuest 的开拓团队和测试团队散播于美国的 Lexington、Raleigh、中国和印度。在这样超大年夜重量级的产品开拓中,加上遍布各地的宏大年夜的开拓团队,若何包管开拓质量成为了一个至关紧张的问题。

ClearQuest 开拓历程中的质量包管环节包括各类阶段交付内容(包括各类文档、设计、代码)的检察、优化的开拓流程的利用、各类测试(单元测试、功能测试、机能测试、系统测试等)的引入以及对开拓相关职员的培训等等;质量包管中利用到的对象包括软件设置设置设备摆设摆设治理对象 ClearCase,缺陷跟踪治理对象 ClearQuest(在 ClearQuest 的开拓历程中,ClearQuest 本身也作为质量包管对象来应用)、各类自动化测试对象及其框架等等。

本文主要先容在 ClearQuest 的开拓历程中,若何在开拓的各个阶段利用各类不合的自动化测试包管开拓质量。

自动化测试与测试驱动开拓

我们在开拓的历程中采纳了自动化测试技巧及测试驱动开拓的措施。运用这两项技巧,使得全部开拓团队能够在产品开拓历程中得到更高的效率,并更有效地包管了软件产品开拓的质量。自动化测试和测试驱动开拓贯穿 ClearQuest 开拓历程的始终,是全部开拓周期中弗成缺少的紧张环节。

自动化测试及其优点

一样平常我们谈到的自动化测试,着实是有两种说法,一种是 Test Automation,翻译过来叫测试自动化,偏重阐明将测试用自动化设计和实现的历程;别的一种是 Automated Testing/Test,翻译过来叫自动化测试,偏重阐明自动的测试软件,可所以自动测试软件的功能或者机能等。在本文中提到的自动化测试,是一个整体的观点,包括了以上两种。

跟着谋略机技巧的成长,自动化测试对象的广泛利用为开拓和测试职员供给了最优的质量资源。我们在软件开拓历程中利用自动化测试,也恰是在追求软件质量资源和收益间的最佳平衡点。

自动化测试的利用,必要开拓和测试职员进行很多前期的事情,如自动化测试框架的设计和实现,自动化测试用例的实现等,而且,今朝纵然是利用现成的自动化测试对象,也无法避免这些事情。在这种环境下,自动化测试又是若何能够包管质量资源和收益间的平衡呢?下面枚举出的自动化测试的优点很好地回答了这个问题。

● 快速履行。

谋略机在履行功能测试脚本的时刻比人快得多,是以在有限的光阴里能测试的更多,可以按时完成更多的工程

● 更好地使用资本。

自动测试可以在非事情光阴和节假日自动进行。

● 回归测试。

履行测试脚本,用自动化的对象对赓续变更的利用和情况做回归测试,要比手工测试轻易得多。

● 前进测试正确度并提早发明更多差错。

● 供给规范化的历程。

自动化测试鼓励测试团队规范化他们的历程,以获得更高的同等性和更好的文档记录。

● 前进测试的重用性。

测试一旦脚本化,开拓职员可以应用和重用这些脚本,没有需要为每个利用的相同功能而从新创建脚本。

● 办理测试与开拓之间的抵触。

开拓职员在等待测试职员测试出差错的时刻,平日必要很多光阴。事实上在迭代周期很短的开拓模式中,这种问题更为严重,但自动化测试可以办理此中的主要抵触。

总之,自动化测试经由过程自动履行测试脚本,使得人们能够用最短的光阴完成更多的测试,并且可以用更高的频率履行测试,从而有效低落测试资源、前进测试效率。这便是自动化测试的优点和终纵目的。

自动化测试的类型

在软件开拓历程中,无论是 Agile 照样其它开拓模式,都邑在开拓的不合阶段引入响应的测试,如单元测试,功能测试,机能测试;并且针对软件的不合部分,也会有不合的措施进行测试,如 GUI 测试,底层 API 测试等等。

今朝,软件事情者们正在努力把这些不合类型的测试进行自动化,将自动化测试的优点利用在软件开拓历程中的各个阶段以及软件的必要测试的各个部分。

当前软件开拓中主要用到的自动化测试类型有以下几种:

● 单元测试

单元测试是开拓者编写的一小段代码,用于查验被测代码的一个很小的、很明确的功能是否精确。

● GUI 测试

用户界面测试,属于功能测试的一种。

● 功能测试

功能测试是从用户的角度编写的测试。这种测试确保系统履行用户期望它履行的事情。

● 机能测试

用来测试软件在集成系统中的运行机能。

在 ClearQuest 的开拓项目中,包括了上面提到的各类自动化测试。ClearQuest 中利用到的各类自动化测试如下:

● Harness① Test

ClearQuest Core 部分的单元测试以及一部分简单的功能测试

● ATE(Automation Test Environment)

针对 CQ Perl API 和 COM 的简单的功能测试

● Windows Client GUI 自动化测试

ClearQuest Windows Client 的用户界面测试

● JUnit Test

CQEclipse 和 CQWeb 的单元测试

● RFT(Rational Functional Tester)自动化功能测试(BLUE Test Automation②)

包括 CQEclipse GUI 和 CQWeb GUI 自动化测试

● PurifyPlus 自动内存反省

ClearQuest Core 顶用于检测内存透露。可以在运行 harness test 的时刻一路履行。

● RPT(Rational Performance Tester)自动化机能测试

今朝的 ClearQuest 开拓中使用 RPT 来做自动化机能测试,包括自动录制的脚本和手动开拓的测试用例。

不合的自动化测试被利用于不合的层次和组件上。那么,我们就必要从 ClearQuest 的布局启程来看一下这些不合的自动化测试的利用。按照测试所对应的编程说话来分类,Harness Test,PurifyPlus 和 Windows GUI 用于 C++ 代码,RFT 自动化测试和 JUnit 利用于 Java,ATE 利用于 CQ Perl API 和 COM。下面的图表可以赞助我们更清楚地舆解 ClearQuest 的架构层次以及各个部分所用到的自动化测试的种类。

图 1:ClearQuest 在 Windows 上安装的架构层次图

表 1:自动化测试与 ClearQuest 各个部分之间的对应关系

Windows Client

CQ Eclipse

CQ Web

CQ Core

CQ Perl API

COM

Harness Test

X

ATE

X

X

Windows Client GUI Automation Test

X

JUnit Test

X

X

RFT(BLUETA)

X

X

PurifyPlus Memory Check

X

在后面的章节中,我们将具体地先容 ClearQuest 的开拓历程是若何结合这些不合的自动化测试的。

在 Agile 开拓历程中采纳测试驱动开拓生发火为指示原则

ClearQuest 的开拓采纳了 Agile 开拓措施③。测试驱动开拓 (Test Driven Development)④ 是 Agile 开拓历程中的一个核心思惟,而自动化测试又是做到测试驱动开拓的一个基础前提。有了自动化测试的框架,才能包管测试代码和源代码同时开拓,做到测试驱动。

因为 Agile 开拓本身具有开拓迭代周期短,每个迭代的成果都是可应用的特征,这就要求做到如下几点:

● 包管所做的开拓事情没有偏离用户需求

● 在有限的光阴内,充分使用有效资本,包管代码质量

● 每个迭代中所提交的成果都是后期可用的,尽可能避免重复劳动

这些要求抉择了自动化测试在 Agile 开拓历程中的紧张职位地方。使用自动化测试,在测试框架成型和一个迭代中的设计接口已经确定的环境下,源码和测试代码的开拓可以同步进行,在充分使用有效资本的同时,假如开拓职员在开拓的历程中偏离了用户需求,在进行自动化测试的时刻还会发明并矫正这些问题;在重量级软件开拓和掩护中,手工测试很难每次覆盖所有功能(假如要覆盖所有功能,必要相称长的光阴,而且所需的光阴跟着功能的增多还会徐徐增添),而使用自动化测试,则可以经由过程测试用例的慢慢积累而使得全部测试框架涵盖所有功能(自动化脚本可以在夜间以及节假日运行,不必要消费人力),以是每次运行自动化测试都相称于运行所有功能的完备的测试,并且都能发明当前迭代中的开拓事情是否对曩昔所有其他的功能是否造成影响;Agile 开拓的迭代周期很短,这就要求所有的事情更为有效,自动化测试可以赞助开拓职员高效地完成测试事情,不必为每次都花费人力和光阴运行重复的人工测试而烦恼;并且自动化测试可以在非事情光阴运行,也便是说在测试代码开拓完毕之后,其测试事情可以不占用事情中的有效光阴。

由此看来,Agile 开拓历程中,无论从软件的实用性,质量包管照样开拓效率的角度,都离不开自动化测试。

ClearQuest 开拓历程若何结合各类不合自动化测试

ClearQuest 开拓历程中对各类自动化测试的利用,主要取决于两个身分:ClearQuest 本身的布局和开拓历程中的开拓阶段。本文 2.2 节中,从 ClearQuest 本身的布局启程描述了各类不合的自动化测试的利用。而本节将从 ClearQuest 开拓历程的角度启程,来描述各类不合的自动化测试的利用。

ClearQuest 开拓历程采纳了 Agile 开拓措施,在 Agile 的每一个迭代中,根据 ClearQuest 本身的布局和每个迭代开拓历程中的各类不合必要,利用了上一个章节中所枚举出的各类自动化测试。我们将结合 ClearQuest 的一个模拟开拓实例,描述各类不合的自动化测试在一个 Agile 的迭代历程中被引入的详细阶段和详细场景。

在 ClearQuest 的各个开拓阶段中,对各类不合的自动化测试,如单元测试、功能测试等,又会有不合的偏重。图 2 从整体上对 ClearQuest 开拓历程中对各类自动化测试的利用做了描述。

图 2:各类自动化测试在开拓历程中各个不合阶段利用的频率

在图中我们可以看到,单元测试从开拓历程的开始阶段就被引入,并且贯穿全部开拓历程的始终,由于只要有代码的更改就会有单元测试的发生,但跟着开拓历程进入后期,代码改动量徐徐变少,单元测试利用的频率也会徐徐低落。功能测试中包括的新的测试,在每个迭代停止的时刻发生,而之前在每个迭代中期,因为不绝地有代码改动,然则新的功能测试的用例还未开拓完毕,以是必要周期性地做回归测试,跟着后期代码改动徐徐削减,功能回归测试的频率也会随之低落。机能测试在功能测试开始的时刻就尽可能被引入以便发明一些设计上的问题,而在开拓历程的后期,因为全部功能已经集成起来,更多的机能测试的用例可以被履行,并发明更多的问题。

让我们以一个 CQ Eclipse 的新功能的开拓为例,来更形象地阐明这个问题。

该功能涉及以下两个部分:

● CQ Eclipse GUI 和响应事务逻辑

● 在 CQ Core 中实现新的 API,该 API 必要被利用于 perl 和 Java

早年面的表 1 可以看出来,这个案例中,除了 Windows Client GUI 自动化测试以外,其他的自动化测试将整个在此功能的开拓中有所利用。该功能的开拓总体计划模拟甘特图如下图。图中仅仅给出了开拓最初的 4-5 个月内的总体计划,但足以阐明各类自动化测试的感化。

图 3:模拟 ClearQuest 中一个新功能开拓计划的前期甘特图

甘特图中的几个主要的义务包括: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 开拓措施实践的核心。其事情的流程如下:

● 添加一个测试用例

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

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

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

● 细化代码

● 重复以上各个步骤

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

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

● 测试是对全部系统功能的描述。经由过程涉猎测试代码就可以清楚全部系统的功能。

● 闪开拓职员更有自大。现代码作机能调剂的时刻,可以很快发明问题。

● 尽早发明问题。

● 让软件模块化做的更好,更为机动和具备更好的可扩充性。由于开拓职员必要想尽措施让软件中的各个功能更为自力地进行测试并且更为轻易地集成起来。

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

您可能还会对下面的文章感兴趣: