软件测试方法技术的研究与对比-毕业论文

软件测试方法技术的研究与对比

作 者

学科、

指 导

完 成姓 名: 专业 : 号 : 教 师: 日 期:

XX大学

XXXX University

软件测试方法技术的研究与对比

总计: 毕业论文 64 页

表 格 14 表

插 图 22 幅

指导教师:

评 阅 人:

完成日期:

摘 要

软件测试是保证软件质量的重要手段。随着计算机硬件性能的不断提高,软件的功能也越来越强大,软件结构越来越复杂,软件质量越来越难以控制。对于比较大型的软件系统集成测试来说,单纯的手工测试不但效率低下,而且很多测试仅靠手工测试无法完成。为减少测试开销,在有限的时间内执行更多地测试,并且降低人为引起的错误,自动化测试是非常必要的。

一个完整地自动化软件测试工具,应该包括测试管理工具、功能测试工具、性能测试工具三个部分。论文阐述了软件自动化测试相关概念和理论,概括和比较了其适用范围和组织结构。MI公司、Rational公司、Compuware公司开发的产品是当今市场上三种主流的测试工具,本文从测试步骤、对象识别等方面对上述三个公司的功能测试产品;从测试项目管理、人员管理、测试计划等方面对其测试管理工具产品作了详细的分析和比较,为自动化测试研究提供参考。

关键词:软件测试,自动化测试,测试管理工具

Abstract

Software testing is important to ensure software quality. With the enhancement of the computer hardware and the increasing complexity of software functionality and structure, software quality control is more and more challenge. For integration testing on large software, manual testing is usually effort consuming while insufficient to achieve certain testing objectives such as stress testing. Therefore, automatic testing is necessary.

Functional testing, performance testing and test management are three key characters of testing tools. The concept and theory related to software automated testing are expounded. The scope of application and the archichecture of software automated testing is summed up and compared. Testing tools delivered by MI, Rational and Compuware occupy most of the testing market. This thesis analyzes and compares function testing tools from、testing procedure、object recognization, etc. And it analyzes and compares test management tools from testing project management、people management、testing plan, etc. This survey provides basis for the research on automatic testing technique.

Keywords:Software Testing , Automated Testing , Software Testing Management Tools

目 录

1.绪论 ............................................................. 1

1.1论文的研究背景及意义 ........................................ 1

1.2论文的主要研究工作及成果 .................................... 1

1.3论文的组织结构 .............................................. 2

2.软件测试技术的概论 ............................................... 3

2.1软件测试的定义与目的 ........................................ 3

2.2软件测试的过程 .............................................. 3

2.3软件测试的分类及主要方法 .................................... 4

2.3.1按测试过程划分 ...................................... 4

2.3.2按工作状态划分 ...................................... 5

2.3.3按测试用例设计方法划分 .............................. 6

2.3.4按测试目的划分 ...................................... 8

3.自动化测试技术基础 .............................................. 9

3.1自动化测试概念 .............................................. 9

3.1.1自动化测试 .......................................... 9

3.1.2自动化测试的优点 .................................... 9

3.1.3自动化测试的局限性 ................................. 11

3.2自动化测试的适用范围 ....................................... 12

4.主流自动化测试工具简介 .......................................... 15

4.1 MI(Mercury Interactive)公司的测试软件 ................... 15

4.1.1管理工具 ........................................... 16

4.1.2测试工具 ........................................... 16

4.2 Rational公司的测试软件 .................................... 17

4.2.1管理工具 ........................................... 17

4.2.2测试工具 ........................................... 19

4.3 Compuware公司的测试软件 ................................... 20

4.3.1管理工具 ........................................... 21

4.3.2测试工具 ........................................... 22

5.自动化功能测试工具的分析比较与总结 .............................. 23

5.1测试环境和对象 ............................................. 23

5.2工具功能模块详细划分 ....................................... 25

5.3测试步骤 ................................................... 28

5.4 GUI对象识别 ............................................... 29

5.5脚本执行与被测程序响应的同步问题 ........................... 32

5.6测试信息收集 ............................................... 33

5.7结合测试管理工具 ........................................... 33

5.8比较总结 ................................................... 34

6.测试管理工具的分析与比较 ........................................ 35

6.1工具特点 ................................................... 35

6.2测试项目 ................................................... 37

6.3测试人员管理 ............................................... 38

6.4测试计划 ................................................... 39

6.5比较总结 ................................................... 42

7.总结语 .......................................................... 44

参考文献 ........................................................ 45

附录1外文译文 .................................................... 47

附录2外文原文 .................................................... 54

致 谢 ............................................................. 63

软件测试技术方法的比较与分析

1.绪论

1.1论文的研究背景及意义

近几年,随着软件规模不断扩大,软件复杂度不断增加,客户要求不断提高,如何保证软件质量,提高软件可靠性也越来越受到各研究机构、相关企业的普遍关注,同时成为软件开发机构特别关注的方向。目前,许多能有效提高软件质量的质量保证技术相继问世,例如,几乎所有的大型软件开发机构都结合自身软件开发实际和经验制定了相关的质量标准来规范企业内部的软件开发过程,有些机构在这两年陆续成立了与软件开发相独立的软件测试中心来保证开发出来的软件可用,在开发过程中增加了许多环节(如软件配置管理、阶段性测试和评审)用来保证开发出来的软件具有高可靠性。软件测试技术作为保障软件质量最直接、最有效的手段之一也成为重要的研究热点,但是由于软件本身的复杂性和不确定性,软件测试技术始终具有极大的难度。深入研究软件测试技术方法,提高软件可靠性,已经成为国内外软件行业和相关机构重要的研究方向[1]。

正确选择和有效地运用各种测试方法、技术和工具,对提高软件工程的应用水平和提高软件产品的质量与可靠性至关重要。而在软件测试中使用优秀的测试管理工具不但可以大大减少测试过程中出现错误的可能性,还可以极大的提高测试的效率,加快测试进程。

1.2论文的主要研究工作及成果

论文主要对软件测试、测试技术(工具、方法)、自动化测试以及测试管理技术(工具、方法)进行理论阐述和综合论述;然后进行综合分析、比较、总结。

通过查阅文献资料和对主流工具软件和相关技术的深入学习可完成软件测试技术方法的比较与分析研究内容。在这个论文研究过程中,可以学会正确选择和有效地运用各种测试方法、技术和工

软件测试技术方法的比较与分析

具。

1.3论文的组织结构

论文的组织结构如图1.1所示:

图1.1 论文的组织结构

软件测试技术方法的比较与分析

2.软件测试技术的概论

2.1软件测试的定义与目的

软件测试就是使用人工或者自动的手段来运行或测定某个软件产品系统的过程,其目的是在于检验软件产品是否满足规定的需求[2]。简单地说,软件测试过程就是制造条件,促使错误发生的过程。

软件测试的目的是[3]:

(1)测试的最终目的是为了避免错误的发生,确保应用程序能够正常高效的运行;

(2)好的测试用例在于发现至今未发现的错误;

(3)成功的测试是发现了至今未发现的错误的测试;

(4)好的测试工程师应该做到不仅发现问题,还能够帮助开发人员分析问题。

2.2软件测试的过程

软件测试是一个贯穿整个软件生命周期的活动,那种等待整个系统开发完毕,再对其进行测试的想法是错误的,把测试放到软件开发的最后是很危险的,因为它很容易导致整个软件系统无法集成。另外,对软件的测试并不仅限于软件程序的本身,因为错误并不一定是代码引起的。很有可能是软件需求、软件系统的详细设计等阶段引起的。错误在初期也许只是范围很小的隐藏问题,但由于软件开发的各阶段的连续性,会使错误逐步扩展,如果早期的开发中出现的错误不能排除,将带到设计、编码、测试等各阶段,影响逐步扩大。所以对软件的测试还应该包括与软件有关的所有的文档。一个典型的软件测试过程如下图:

软件测试技术方法的比较与分析

图2.1 典型的软件测试过程

一个软件的测试过程是一个不断回归的过程。旧的错误的修改可能会引起新的错误的出现,所以每修改一个新的错误,都要针对系统再作一次测试,直到没有新的错误出现为止,这是一个很繁琐的过程。

2.3软件测试的分类及主要方法

针对不同规模、不同类型的软件,以及软件开发的不同阶段,所用的测试方法各异,下面我们就主要针对上面的几种情况对软件测试做一个简单的分类。

2.3.1按测试过程划分

我们知道对于软件开发商来说,比较大的软件系统都是由许多人协作开发的,一般都是把一个大的软件系统分割成不同的功能模块,然后再将这些模块分给开发团中的每个人去完成,在开发的过程中针对每个模块的完成情况,边开发、边测试、边集成,然后各个模块集成的完整的系统还要进行测试,当系统交付用户使用后,还要对系统进行维护、升级,这里面也伴随着测试。根据上面的过程,我们按软件开发过程的可以将软件测试划分为下面五个步骤,它们的关系如图2.2:

图2.2 软件测试步骤

软件测试技术方法的比较与分析

单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。一个软件单元的正确性是相对于该单元的规约而言的。因此,单元测试以被测试单位的规约为基准。单元测试的主要方法有控制流测试、数据流测试、排错测试、分域测试等等[3-5]。

集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。集成测试的策略主要有自顶向下和自底向上两种[3-5]。

系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。软件系统测试方法很多,主要有功能测试、性能测试、随机测试等等[3-5]。

验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。这是软件在投入使用之前的最后测试。

回归测试是在软件维护阶段对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。这里修改的正确性有两重含义:一是所作的修改达到了预定目的,如错误得到改正,能够适应新的运行环境等等;二是不影响软件的其他功能的正确性[1]。

2.3.2按工作状态划分

软件测试是一个对测试经验、测试计划、测试环境和测试工具依赖性非常强的工作,按工作状态分为静态测试和动态测试两个阶段[6]。

软件测试技术方法的比较与分析

静态测试主要是针对所有文档资料、编程规范、数据定义、控制和数据使用、代码与需求的一致性、代码与设计的一致性等方面的分析,其对测试经验和测试计划的依赖性极强。

静态测试是在不需运行软件系统的情况下,对系统进行的测

试。其采用的方法主要有[6]:

(1)文档资料浏览,达到正确的理解,并对任何改变具有统一的认知;

(2)讨论决定,对文档资料进行讨论,并作出决定,如:做什么、不做什么、如何做等;

(3)检查,根据规范和定义,找出可能存在的问题,如:市场和商业策略、系统需求和系统设计、程序代码、测试计划、测试设计、测试案例、测试结果、用户手册、培训教材等;

(4)利用工具对程序代码进行静态分析,如:程序复杂度、系统结构、控制流程、数据流程等。

动态测试是被测系统在运行当中,根据其动态的行为进行的测试。根据测试规模,可分为:单元测试、集成测试、系统测试及应用测试等几个阶段。

2.3.3按测试用例设计方法划分

软件测试的方法和技术是多种多样的,按测试用例设计方法,可分为黑盒测试和白盒测试,并且黑盒测试和白盒测试还是目前通用的测试技术 [2,7-8]。

黑盒测试着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行的测试。

黑盒测试也称功能测试、数据驱动测试或基于规格说明的测

试,它在已知产品应具有的功能的条件下,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信

软件测试技术方法的比较与分析

息,并且保持外部信息(如数据库或文件)的完整性。

黑盒测试是以用户的观点,从输入数据与输出数据的对应关系出发进行测试的,它不涉及到程序的内部结构。黑盒测试注重于测试软件的功能需求,主要试图发现软件中的功能错误、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止错误等。

白盒测试是基于代码的测试,测试人员通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件的质量。

白盒测试也称结构测试、逻辑驱动测试或基于程序本身的测

试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不涉及它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

白盒测试需要全面了解程序内部逻辑结构、对所有逻辑路径进行测试。白盒测试是穷举路径测试,在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

黑盒测试与白盒测试的比较如下表2.1。

表2.1 黑盒测试与白盒测试的比较

软件测试技术方法的比较与分析

2.3.4按测试目的划分

对于一个软件系统,衡量它的好坏有两个最重要的指标,一是它的功能是否符合要求,二是它的性能是否符合要求。那么针对这两个指标,我们可以将软件测试分为:功能测试和性能测试两个部分[2]。

功能测试:针对软件的功能测试,目的是为了验证软件的功能是否符合软件需求规格说明的要求,找出软件不符合用户需求的地方。功能测试要尽量测试到软件的每一个功能单元,找出软件中的缺陷,确保软件的每一个部分都能正常、正确的工作。

性能测试:就是用来测试软件在系统中的运行性能的。性能测试可以发生在各个测试阶段中,即使是在单元层,一个单独模块的性能也可以使用白盒测试来进行评估,然而,只有当整个系统的所有成分都集成到一起之后,才能检查一个系统的真正性能。性能测试经常和压力测试一起进行,而且常常需要硬件和软件测试设备,这就是说,常常有必要的在一种苛刻的环境中衡量资源的使用(比如,处理器周期)。外部的测试设备可以监测测试执行,当出现情况(如中断)时记录下来。通过对系统的检测,测试者可以发现导致效率降低和系统故障的原因。

软件测试技术方法的比较与分析

3.自动化测试技术基础

3.1自动化测试概念

随着软件系统的规模越来越大,整个系统的复杂性也越来越大,那么单纯的手工测试已经不适合这种大系统的测试了。首先手工测试的效率低下,其次有些测试是手工测试所无法完成的。为了解决手工测试效率低下和手工测试不能解决的一些测试等问题,自动化测试就应运而生了。

软件自动化测试就是执行某种程序设计语言编制的自动测试程序,控制被测软件的执行,模拟手动测试步骤,完成全自动或半自动测试。其目的在于缩短测试周期,增强对软件性能方面的测试能力等,从而达到保证软件质量并使软件能够提前上线[9]。

3.1.1自动化测试

自动化测试就是希望能够通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的测试,目的是减轻手工测试的劳动量,从而达到提高软件质量的目的。自动化测试的目的在于发现老缺陷;而手工测试的目的在于发现新缺陷。测试自动化涉及到测试流程、测试体系、自动化化编译、持续集成、自动发布测试系统以及自动化测试等方面整合。也就是说要让测试能够自动化,不仅是技术、工具的问题,更是一个公司和组织的文化问题。首先公司从资金、管理上支持您,其次要有专门的测试团队去建立适合自动化测试的测试流程、测试体系;其次就是把原代码从受控库中取出、编译、集成、发布可运行系统、进行自动化的单元测试和自动化的功能测试的过程[9]。

3.1.2自动化测试的优点

当正确实施软件自动化测试并严格遵守制定的测试过程时,自动化测试可带来若干好处。假定对于给定的企业需求,测试工程师

软件测试技术方法的比较与分析

必须评估潜在的好处是否符合所要求的改进标准,在项目实施自动化测试是否仍然是合适的[10-11]。

(1)提高测试效率

一般来说,软件产品的发布周期很短,而在测试期间是每天都可能要发布一个版本供测试人员测试,一个系统的功能点有几千个上万个,手工测试是一个劳动密集型的工作,并且容易出错。引入自动化测试能够用更有效、可重复的自动化测试环境代替繁琐的手工测试活动,而且能在更少的时间内完成更多的测试工作,从而提高了测试工程师的工作效率。

(2)令软件新版本进行回归测试的开销最小

产品发现错误以后的改动,代码变了,但要求的功能并没有变,所以测试用例也不必改变,自动化测试就可以很方便地进行回归测试,另外,对于产品型的软件,每次发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试,从而可以让测试达到测试每个特征的需求。

(3)可以完成一些手工测试不能或难以完成的测试

对于一些非功能性方面的测试,如:压力测试、并发测试、大数据量测试、崩溃性测试等,这些测试用手工测试是很难,甚至是不可能完成的。但自动化测试则能方便地执行这些测试,比如并发测试,使用自动化测试工具就可以模拟来自多方的并发操作了。

(4)具有一致性和可重复性

由于每次自动化测试运行的脚本是相同的,所以可以进行重复的测试,使得每次执行的测试具有一致性,手工测试则很难做到这点。

(5)更好地利用资源

将繁琐的测试任务自动化,可以使测试人员解脱出来,将精力更多地投入到测试案例的设计和必要的手工测试当中。并且,理想的自动化测试能够按计划完全自动地运行,使得完全可以利用周末和晚上的时间执行自动测试。

软件测试技术方法的比较与分析

(6)解决测试与开发之间的矛盾

通常在开发的末期,进入集成测试阶段,由于每发布一个版本的初期,测试系统的错误比较少,这时开发人员有等待测试人员测出错误的时间。事实上在迭代周期很短的开发模式中,存在更多的矛盾,但自动化测试可以解决其中的主要矛盾。

(7)增加软件信任度

每一个测试人员都有自己特殊的经历和技术背景,有自己的一些操作习惯和先入为主的观念,这就导致不是所有的测试都是可信的,而且有时测试会把一些新的错误带入软件产品之中。自动化测试则会在很大程度上避免这些问题。一旦得知软件通过强有力的自动测试后,软件发布时对其的信任度也高(假设已做过很好的测试)。

总而言之,测试自动化的优点在于通过较少的开销就可以获得更彻底的测试能力,以及提高产品的质量。

3.1.3自动化测试的局限性

当然,软件自动化测试也并非万能,人们对软件自动化测试的理解也存在许多误区,认为自动化测试能完成一切工作,从测试计划到测试执行,都不需要人工干预。其实软件自动化测试所完成的测试功能也是有限的。以下几点是自动化测试的不足所在[10-11]:

(1)不能完全取代手工测试。软件自动化测试不可能也没必要取代手工测试来完成所有的测试任务。因为有些测试使用手工测试比自动化测试要简单,这时将测试自动化的开销就比较大了。如以下一些情况:

①测试很少运行。对于很少运行的测试任务,例如一年只需测试一次,对测试自动化则是一种浪费。

②软件不稳定。如果在某段时间内软件的界面和功能更新频繁,那么修改相应的自动化测试点开销较大,因此只有当软件达到相对的稳定,没有界面性严重错误和中断错误才适合开始自动化测试。

软件测试技术方法的比较与分析

③涉及感观方面的测试。例如界面的美观、声音的体验、易用性的测试等,这类测试很容易通过人来验证,自动化测试反而难以执行。

④涉及物理交互的测试。自动化测试很难完成与物理设备的交互,比如刷卡的测试等。

(2)手工测试比软件自动化测试发现的缺陷更多

自动化测试的最大特点在于适合重复测试。一般情况下,以前运行过的测试再次用来检查软件的新版本往往暴露的缺陷要少得多。测试专家 JamesBach总结出,85%的缺陷靠手工发现,而自动化测试只能发现15%的缺陷。自动化测试能够很好的发现老缺陷。

(3)软件自动化测试不能提高有效性

自动化测试并不会比手工运行相同测试更有效,它可以提高测试效率,但也可能对测试的进展起反作用。

(4)软件自动化测试可能会制约软件开发

应用软件的变化对自动化测试的影响要比手工测试更大一些,软件的部分改变有可能使自动化测试软件崩溃。而设计和实施自动化测试要比手工测试开销大,并需要维护,所以对自动化测试影响较大的软件修改可能受到限制。

(5)软件自动化测试本身没有想象力

自动化测试是通过软件进行,测试程序只是按照运行机制执行。手工测试时可以直接判断结果的正确性,而自动测试许多情况下测试结果还需要人工干预判断。手工测试可以处理意外事件网络连接中断,此时必须重新建立连接。手工测试时可以及时处理该意外,而自动化测试时该意外事件一般会导致测试的中止。

总的说来,软件自动化测试的优点和收益是显而易见的,但它同时也并非万能,只有对其进行合理的设计和顺利的实施才能从中获益。

3.2自动化测试的适用范围

Peer给出了对各类型测试进行自动化的参考

[12]。

软件测试技术方法的比较与分析

可见重复性比较高的回归测试,以及手工测试难以完成的性能

软件测试技术方法的比较与分析

测试是自动化测试最有潜力应用和最能体现价值的地方,而早期的单元测试中如果引入自动化,也将大大提高开发出的代码质量。

当决定在一个产品的测试过程中实现自动化测试的时候,必须将自动化测试手工测试结合起来使用。目的就是用较少的开销,获得彻底的测试,并提高商品的质量。

下表对何时使用自动化测试和何时使用手工测试进行了一个概要的总结。

表3.2 何时使用自动化测试和手工测试

软件测试技术方法的比较与分析

4.主流自动化测试工具简介

自动化测试需要不同类型的自动化测试工具进行支持。目前,软件市场上已经有很多优秀的自动化测试工具,它们功能强大,有针对功能的,也有针对性能的,有执行白盒测试的测试工具也有执行黑盒的测试工具。主流的商业化的自动化测试工具软件开发公司是:Mercury Interactive公司、IBM Rational公司和Compuware公司。三个公司都开发了一整套自动化测试工具,这些自动化测试工具都经过无数的实际运用,都是非常优秀的自动化测试工具。

一个完整地自动化软件测试工具,应该包括测试管理工具、功能测试工具、性能测试工具三个部分。下面就目前Windows操作系统下的主流的自动化测试工具作一个整体的介绍。

4.1 MI(Mercury Interactive)公司的测试软件

Mercury Interactive公司是商业技术优化的业界领导者。它成立于1989年,目前,和全球超过35个国家都有贸易往来。全球100强公司中有将近90%的公司依靠MI公司的软件和服务来实施他们的商业技术优化策略。这使得MI公司成为世界上最大的、成长最快的企业级软件公司。该公司开发的自动化测试工具以其功能强大、完善的售后服务和支持,使其成为了自动化测试软件开发领域的领先者。MI主要测试软件的构成如下图

[13]

图4.1 MI主要测试软件的构成

下面对上图的工具作一个概括的介绍。

软件测试技术方法的比较与分析

4.1.1管理工具

TestDirector是MI自动化测试工具集中的测试管理工具,它是业界第一个基于WEB的测试管理系统。使用TD及其配套的功能和性能等测试工具,可以组织全球范围的测试。TestDirector通过在一个整体的应用系统中提供并且集成了测试需求管理、测试计划、测试日程控制及测试执行和错误跟踪等功能,通过使用这些功能可以使测试专业化,提高测试的效率,加速测试的过程。

TestDirector主要有三大功能模块构成: (1)Site Administrator

该模块的主要功能是:创建测试域,创建和维护测试项目,管理测试人员,查看测试项目的访问情况,配置注册码。

(2)Customer

在该功能模块中,TD用户(即测试人员或其他与测试相关的人员)可以订制和修改用户的一些信息。包括:修改用户信息、创建新的用户类型和用户组类型,订制模块的访问权限,订制项目实体和列表,配置邮件,调整工作流等。

(3)TestManager

这个模块是TestDirector的主要功能的所在。它主要集成了需求指定、建立测试计划、执行测试、缺陷跟踪四个功能模块。 4.1.2测试工具

MI的测试工具主要有功能测试工具WinRunner和性能测试工具LoadRunner,下面对这两个工具作一个概括的介绍。

(1)WinRunner

针对Windows应用程序的一个企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。它通过自动录制、检测和回放用户的应用操作,来发现程序中的错误。可以有效地帮助测试人员对复杂的企业级应用软件的不同发布版本进行测试,提高测试人员的工作效率和质量。确保跨平台的、复杂的企业

软件测试技术方法的比较与分析

级应用软件无故障发布和长期稳定的运行。

(2)LoadRunner 黑盒性能测试工具。

4.2 Rational公司的测试软件

Rational公司是软件业中领先的应用开发工具供应商,提供基于业界开放标准的工具、最佳方案和服务,用于开发商业应用和构建软件产品和系统。2002年Rational公司被IBM公司收购。对于Rational公司的产品,我们比较熟悉的是它的建模工具,它的测试工具同它的建模工具一样优秀。Rational的测试工具Rational Suite TestStudio的构成如下图[14]:

图4.2 Rational Suite TestStudio的构成

4.2.1管理工具

Rational Suite TestStudio测试工具集中的管理工具主要有五个子工具组成,它们结合起来,完成一个完整的测试管理工具的功能。下面就上面各个管理工具的功能作一个概括的介绍。

(1)Rational TestManager

TestManager 处于测试管理工具的核心位置。它是一个开放的可扩展的架构,将其它的工具和测试数据联合为一个整体。在TestManager中主要可以完成建立测试计划、安排测试、执行测试、查看测试结果和分析测试结果等工作。

软件测试技术方法的比较与分析

(2)Rational Administrator

Rational Administrator集中了测试项目的管理功能,可以创建测试项目,管理相关的人员,包括测试人员和有关的开发人员。它的详细功能如下:

①创建一个Rational测试项目,配置项目的有关信息。 ②连接某个测试项目。

③通过网络操作远程的测试项目。 ④删除一个测试项目。

⑤创建和管理测试人员和用户组。

⑥创建和管理包含RequisitePro项目和Rose项目的测试项目。

⑦控制一个Rational测试项目的测试数据的安全权限。 (3)Rational RequisitePro

Rational RequisitePro是一个需求管理的工具,它可帮助项目团队控制开发的进度。它通过将Microsoft Word和一个需求仓库连接来组织测试需求,它还提供了跟踪功能,并且在整个项目的生命周期内可以随时改变需求。

利用RequisitePro你可以完成如下工作: ①定制需求数据库和管理多种不同类型的测试。 ②指定优先级,排序和安排需求。 ③控制特征变形,确保软件质量。

④跟踪产生的变化,包括这些改变是谁做出的、什么时候、为什么。

(4)Rational ClearQuest

在ClearQuest中进行缺陷的跟踪和管理。通过ClearQuest可以将测试中发现的缺陷直接发送给相应的测试人员,集中管理某个测试项目的缺陷,并跟踪缺陷的修复情况。

(5)Rational SoDA

文档生成工具,测试需求、测试结果、缺陷报告等测试信息可以通过SoDA这个工具生成详细的报表。

软件测试技术方法的比较与分析

4.2.2测试工具

Rational Suite TestStudio测试工具集中的测试工具比较全面,既有功能和性能的测试工具,也有代码级的黑盒和白盒测试工具。

(1)Rational Robot

Rational Robot集成了功能测试和性能测试两种功能。使用Robot可以创建两种类型的测试脚本:基于GUI对象的功能测试脚本和用于性能测试的脚本。功能测试脚本可以在Robot中直接运行,而性能测试的脚本要在TestManager中运行。

(2)Rational Quantify

Rational Quantify提供了一个完整的、精确的针对被测应用程序和相关组件的一个性能测试数据集合,同过图表等易于理解和观察的方式显示出来,可以很容易看出被测程序那个地方耗费了较多时间,然后优化修改耗费时间较多的代码,提高程序执行效率。

Rational Quantify主要适用的应用程序的对象是:Visual C/C++开发的.exe,.dlls,OLE/ActiveX控件以及COM对象组件;Visual Basic开发的应用程序;Java语言开发的应用程序;C#语言开发的应用程序等。

(3)Rational Purify

检测内存泄露的白盒测试工具。 (4)Rational PureCoverage 测试代码覆盖率的白盒测试工具。 (5)Rational TestFactory

它是一个基于组件的测试工具,主要功能如下: ①根据程序的导航结构自动生成TestFactory脚本。 ②自动创建和维护一个被测软件的详细map。

③不用记录,自动生成提供扩展代码覆盖率的脚本和发现缺陷的脚本。

④追踪运行过的或未运行过的源代码,并且报告它的详细的发现。

软件测试技术方法的比较与分析

⑤通过最大限度的缩短花费在书写导航代码上的时间来缩短产品的测试周期。

⑥在TestFactory中可以回放Robot功能测试脚本一观察扩展代码覆盖率的信息以创建回归测试集;在Robot中也可以回放TestFactory脚本用以调试脚本。

(6)Rational SiteCheck

网页测试工具,利用Rational SiteCheck 可以检查企业内部互联网的结构完整性以及网页错误。可以帮助查看、跟踪和维护迅速变化的页面。

利用SiteCheck具体可以做如下事情: ①显示网页的结构以及各页面间的关系。

②识别和分析带有动态内容的Web页面,如:forms, Java, JavaScript, ActiveX, VBScript。

③过滤信息,以利于你观察制定的文件类型和缺陷,包括断开的连接。

④检查和编辑任意网页的源代码。 ⑤利用集成的编辑器更新或修复文件。

⑥对安全网页执行全面的测试。SiteCheck提供了Secure Scoket Layer(SSL)支持,代理服务器配置以及多密码域。

(7)Rational TeamTest 团队合作测试工具。

4.3 Compuware公司的测试软件

Compuware公司是世界上最大的软件和专业服务供应商之一。Compuware开发的QACenter测试工具集的主要构成如下图

[15]

软件测试技术方法的比较与分析

图4.3 QACenter测试工具集

4.3.1管理工具

(1)QADirector

QADirector处于QACenter管理工具的核心位置,它协调整个测试过程,并提供了一下功能:

① 计划和组织测试需求。

② 调用相应的自动测试工具执行测试。 ③ 测试过程允许使用手动测试。 ④ 观察和分析测试结果。

⑤ 方便的将测试结果信息加载到测试缺陷跟踪系统。 ⑥ 针对需求验证测试。

⑦ 将分析过程和测试过程结合。 (2)Reconcile

需求管理工具,组织和管理测试需求。 (3)TrackRecord

TrackRecord是一个高级的需求变更和缺陷管理工具,可以帮助组织建立一个系统方法来协调软件开发、调试、测试和实现。可进行自动化的软件缺陷的跟踪管理。

软件测试技术方法的比较与分析

4.3.2测试工具

(1)QARun

QARun可以提供C/S系统、电子商务系统和企业资源计划应用提供企业级的功能测试。同WinRunner和Rational Robot能提供的功能一样,可以执行自动化的功能测试。

(2)QALoad

QALoad是C/S系统、企业资源计划(ERP)和电子商务应用的自动化负载测试工具。它是QACenter测试工具集性能版的一部分。它通过可重复使用的、真实的测试能够彻底的度量应用程序的可扩展性和性能。它可以模拟成百上千的用户并发执行关键的业务完成对应用程的性能测试,并针对所发现的问题对系统性能进行优化,确保软件的成功部署。

(3)WebCheck

全面的站点分析和测试工具。

软件测试技术方法的比较与分析

5.自动化功能测试工具的分析比较与总结

WinRunner、Rational Robot和QARun这三个工具都是自动化的功能测试工具,它们针对的测试对象都是使用IDEs(如:支持Java、C/C++、VB、HTML等语言的集成开发环境)开发的带有GUI对象的应用程序,都能够大大降低重复性的测试所耗费的时间,将测试人员从复杂好事的测试工作中解脱出来。

我们目前所分析比较WinRunner、Rational Robot、QARun这个三个自动化功能测试工具,都是比较新的版本,并不是最新的版本。但这些不同版本的测试工具首先从功能、原理上都是一样的,而且整体的架构和细节的功能也不会有太大的变化。所以针对下面三个较新版本的工具进行分析和比较,对新版本的工具选择同样具有参考价值。

分析和比较的工具对象的版本及软件平台情况如下表:

表5.1 工具对象的版本及软件平台

下面,将从测试步骤、测试结果等方面对这三种工具先作一个详细的分析和介绍,然后根据分析在对这三个工具进行横向的详细比较。

5.1测试环境和对象

(1)WinRunner

我们使用的WinRunner版本是WinRunner7.50。是MI测试软件中比较新的版本。基本上可以完成Windows操作系统下的不同类型软件的自动化功能测试。下表是对WinRunner7.50所支持的环境和被测软件对象的一个总结[16-17]

软件测试技术方法的比较与分析

(2)Rational Robot

表5.3 Rational Robot所支持的环境和被测软件对象

软件测试技术方法的比较与分析

(3)QARun

5.2工具功能模块详细划分

虽然三个工具都是自动化的功能测试工具,从大的方面来说,它们的功能都是一样的,但有许多细节的功能还是有很大区别的。所以,为了更清楚、更详细的认识和比较这三个工具,将这个工具按它的功能模块进行划分,然后针对每个细节的功能进

行分析和比较,最后从整体上把握,是最好的方法。

(1)WinRunner

WinRunner为了支持完整的功能测试,简化测试难度,使测试人员能够轻松正确的执行测试,内置了许多强大的功能。下图是结合WinRunner的实际使用情况,对它从主要功能上的一个详细的划分[13]。

图5.1 WinRunner功能划分

软件测试技术方法的比较与分析

从上面的功能模块划分图我们可以看出,WinRunner主要13个主功能模块,每个功能模块还有一些更具体的功能。这些功能模块集成到到一起,达到了WinRunner执行完整的自动化功能测试的功能。

(2)Rational Robot

Rational Robot兼具功能测试的完整功能和性能测试脚本生成的功能,所以从整体上Robot可以分为两大模块:功能测试模块和性能测试模块。对于性能测试来说,Robot只是负责性能测试脚本的生成,所以性能测试模块的功能相对比较单一,而功能测试模块相对的就比较复杂[18]。对Robot的主要功能的详细划分如下图:

图5.2 Robot功能划分

(3)QARun

同WinRunner一样,QARun可以执行完整的功能测试,它的所有的功能模块都是为了能够正确、方便的进行功能测试而存在的。QARun的主要功能模块的详细划分如下

[15]:

图5.3 QARun功能划分

软件测试技术方法的比较与分析

(4)比较

对于功能测试,从整体上来看的话三个工具区别不是太大。都有脚本的录制、回放;检查点;一些与脚本的录制和回放有关的选项设置

WinRunner与其两个工具主要有如下几个不同的地方:Font Expert功能模块,脚本的执行模块,GUI Map模块。Font Expert是为了WinRunner能够识别不同的字体而加入的一个具有字体学习功能的模块;脚本执行模块提供了三种模式下的脚本回放,这三种模式下面会详细分析;GUI Map是为了简化脚本,识别GUI对象和提高脚本的可维护性而设立的一个功能模块,这个模块和QARun中的Map模块的功能是一样的。

Robot区别于其它两个工具的一个显著的特点,就是Robot可以执行部分性能测试的功能,即性能测试脚本的生成。而其它两个公司将性能测试工具和功能测试工具分的很清楚,MI公司的性能测试工具就是LoadRunner,LoadRunner负责从脚本的生成、执行到测试结果的查看等全部与性能测试有关的工作。和MI公司的分法一样,Compuware公司将性能测试功能完全交由QALoad完成。像Rational公司这种将功能测试和部分性能测试集成到一个工具中的做法,虽然对功能测试没有什么影响,但总让人感觉工具划分不清楚,特别是性能测试,脚本生成在Robot中,而执行要在TestManager中,显得有点麻烦。而其它两个公司的工具划分就感觉很好,功能测试、性能测试和管理工具都是相互独立的,学习和使用起来比较方便。

另外一个特点就是Robot虽然能够执行功能测试,但是测试结果要在测试管理工具TestManager中查看,所以Robot对管理工具的依赖性比较强,从而显得其独立性比较差。

QARun比较特殊的地方是有一个Events的模块和一个Dialog模块,Events模块和WinRunner中的同步点模块的功能是相近的,是为了使脚本执行和被测应用程序响应更好的同步而设立的。Dialog模块是为了增强脚本功能而设立的,下面会详细介绍。

软件测试技术方法的比较与分析

5.3测试步骤

(1)WinRunner

使用WinRunner进行自动化功能测试,主要有下面六个步骤:

图5.4 WinRunner进行功能测试步骤

其中Create GUI Map、Debug Tests这两个步骤不是必须的。

(2)Rational Robot

使用Robot进行功能测试有如下八个步骤:

图5.5 Robot进行功能测试步骤

其中Debug Tests、Compile Tests(Run Tests步骤中会先进行脚本的编译)这两个步骤不是必须的。

(3)QARun

使用QARun进行功能测试主要有下面九个步骤:

图5.6 QARun进行功能测试步骤

其中Create Map、Debug Tests、Compile Tests(Run Tests步骤中会先进行脚本的编译)这三个步骤不是必须的。

(4)比较

从上面三个工具的测试步骤图,可以看出,三者都要有创建测试、调试测试、运行测试、查看测试结果、报告缺陷这些步骤。Robot比其它两个工具少了创建对象映射这个步骤(不是说Robot中没有对象映射,而是Robot中对象映射只可以查看和捕获,不能手工修改某个对象的映射)。WinRunner比其它两个工具少了创建测试项

软件测试技术方法的比较与分析

目、登录项目、编译测试这三个步骤。从测试步骤上我们也可以看出,WinRunner的独立性比Robot和QARun要强,Robot、QARun与测试管理工具的结合更紧密[19-22]。

5.4 GUI对象识别

三种工具都是基于捕捉/回放的测试原理,既然要回放用户的操作,那么用户操作的对象的识别就是一个很重要的要解决的问题。在这三种工具中都采用了一种叫做对象映射的技术,就是一个实际的窗口对象用一个逻辑名来标示,而这个逻辑名对应的是这个对象的实际物理描述。这种技术的第一个好处就是即使某个对象在窗口中的位置变了,该对象仍可以被正确的识别,这就大大增强了脚本的生命力;另外一个好处就是如果一个对象的物理描述变了,不必去修改脚本,只需要修改该对象的映射即可,当然前提是在工具中提供这种对象映射修改的功能。在WinRunner和QARun里面这些对象映射是可以编辑的,Robot中不可以编辑。所以就这一点来说Robot的脚本的可维护性不如另外两个工具。

下面让我们详细看一下三个工具都为GUI对象识别提供了那些功能[19,21-22]:

(1)WinRunner

GUI Map是WinRunner 在Context Sensitive模式下录制的脚本回放时识别被测软件GUI对象的依据。在WinRunner中提供了两种GUI Map File模式,一种是Global GUI Map File;一种是GUI Map File per Test。前一种模式下所有的测试都使用的都是同一个GUI Map文件;后一种模式下,每一个测试都有一个单独的GUI Map文件。有三种方式创建GUI Map:

①RapidTest Script向导

通过该向导你可以轻松的将被测试软件所包含的所有GUI对象加入到GUI Map中。

②GUI Map Editor

下图是GUI Map Editor的窗口:

软件测试技术方法的比较与分析

图5.7 GUI Map Editor的窗口

通过这个编辑器可以将一个GUI对象或一个窗口中的所有对象加入GUI Map中。另外如果一个GUI对象的名称或物理描述信息改变了的话,可以在该编辑器中打开相应得GUI Map文件,修改相应的信息。该编辑器还提供了两个不同GUI Map文件间GUI对象映射相互拷贝的功能。

③自动录制脚本过程由WinRunner自动将遇到的每一个GUI对象加入GUI Map中。

WinRunner能够识别标准的GUI对象,但也有一些非标准的对象无法在WinRunner内置的对象类型中找到匹配。为了解决这个问题,WinRunner提供了虚拟的对象映射,将一个未知类型的对象映射到一个与其相近的类型。WinRunner还提供了脚本拼接的功能,可以将两个或多个比较小的GUI Map文件拼接成比较大的GUI Map文件。

(2)Rational Robot

虽然Robot也是采用了对象映射技术来识别GUI对象,但是它提供的关于这方面的功能比较弱,而且很多功能都对用户隐藏了。它不支持GUI Map的编辑,所以如果一个GUI对象的物理描述改变了,为了使用先前的脚本,只有去修改脚本,如果是一两个脚本,还好修改,如果成百上千的脚本都与该对象有关的话,那修改起来就不是一件容易的事情了。下面是Robot提供的一个查看GUI映射的一个对话框,名称是Inspector:

软件测试技术方法的比较与分析

图5.8查看GUI映射

Robot在录制脚本和回放脚本的过程中,会将整个桌面上的所有对象包括隐含的对象,全都建立映射。从上面的窗口中我们也可以看出,最上一级是Desktop,下面就是包含在Desktop中的所有对象,然后每个对象的子对象也都会建立映射。所以Robot建立的GUI对象映射很全,执行Robot的脚本,一般不用担心脚本中某个逻辑名对应的对象找不到的问题,除非对象的物理属性改变了。

(3)QARun

QARun将GUI对象映射分成了三类:对象映射(object mapping)、别名映射(alias mapping)、图像映射(image mapping)。QARun针对这三种映射提供了相应的编辑器,用户可以通过这些编辑器查看、添加、修改对象映射。在QARun录制脚本的过程中,它会自动建立用户操作的GUI对象的映射,这点同WinRunner相似。

需要特殊指出的是别名映射(alias mapping), 它是将一个非标准的类对象映射为一个标准的控件类型,这点与WinRunner中的虚拟对象映射相似。QARun遇到一个非标准的对象的时候,它就放弃对象的记录,而只是仅仅鼠标和键盘的响应。这可以保证脚本可以正确的回放,但是使得脚本的理解和维护变得困难起来。

(4)比较

从上面的分析,我们可以得到如下结论:

软件测试技术方法的比较与分析

三种工具虽然都使用了对象映射技术来识别GUI对象,但就功能来说WinRunner和QARun比较强,这两个工具支持对象映射文件的编辑,所以当测试的系统的某个对象改变了的话,测试人员只需要修改相应对象的GUI映射,而不是去修改成百上千的脚本。Robot由于并没有给出一个可以让用户对GUI映射操作的一个机制,所以如果一个测试对象改变了,就只有去修改所有与该对象有关的脚本或者从新建立测试,这是一个很烦人的工作。

5.5脚本执行与被测程序响应的同步问题

三种工具都是根据脚本中的命令,调用操作系统提供的API控制鼠标和键盘对被测程序进行操作,这个过程中存在一个很明显的问题就是脚本的执行速度一般要比被测试程序的响应要快,那么如何保持脚本的执行与被测程序的响应同步,有两种方法解决这个问题:第一种是在每个需要延时执行的脚本指令后面插入一个合适的等待时间。第二种就是在需要延时执行的指令前面插入一个等待某个事件或对象出现的操作,当响应的对象或事件出现时,再继续执行脚本。就第一种方法来说,合适的等待时间很难确定,因为不同的机器,就算同一台机器,程序的执行速度也有可能不一样,所以这个合适的等待时间一般是一个足够长的时间。而第二种方法就很好,只要某个对象或事件出现,说明被测程序的响应已经完毕,脚本就继续往下执行。

下表是对WinRunner、Robot和QARun处理脚本执行速度与被测程序响应同步问题的一个比较:

软件测试技术方法的比较与分析

很显然,Robot对这个问题的处理功能比较弱,它根据录制脚本时估计的时间来决定某个脚本命令执行完后的等待时间,往往为了确保被测程序能够在下一行脚本指令执行前,插入的等待时间都比较长,浪费了时间。

QARun中的Events和WinRunner中的同步点的功能是一样的。脚本运行过程中到某个命令的事候要等待某个对象或事件的出现,就可以插入事件点。这使得脚本的执行显得智能化,要比单纯的设定delay多少时间要强的多[23]。

5.6测试信息收集

使用这些自动化的功能测试工具,最后要看的就是测试结果,那么测试工具在测试过程中对测试信息的收集能力对于测试结果是否全面正确有着很大的影响。经过的对三个工具的实际使用,我们发现这三个工具对于测试信息的收集能力都是很全面的,主要有检查点的信息(不同的检查点会给出不同的比较结果窗口,很容易发现测试过程中捕获到的值与期望值的差别在那里);脚本执行的过程中遇到的错误信息,如指令操作的GUI对象缺失、错误的指令格式、错误的函数参数等。

5.7结合测试管理工具

从上面的分析和比较过程中,我们可以看出三个工具虽然都有一定的独立性,特别是WinRunner,完全可以离开管理工具,独立

软件测试技术方法的比较与分析

完成自动化的功能测试,但如果结合配套的管理工具一起使用的话,不单可以实现单独的功能测试工具不能完成的工作,还可以大大提高测试效率、使测试专业化,达到事半功倍的效果。

WinRunner、Robot和QARun都提供了和配套测试管理工具的接口,结合相应的测试工具,就可以完成测试需求建立、测试用例设计、测试脚本创建、测试运行、测试结果分析、缺陷跟踪等一套完整的测试流程。

5.8比较总结

软件测试技术方法的比较与分析

6.测试管理工具的分析与比较

测试管理工具对于正规的软件测试来说是必不可少的。测试管理工具不仅是测试人员和开发人员互相交流信息的一个平台,它还负责完成测试需求建立、测试用例设计、测试安排、缺陷跟踪等功能。在软件测试中使用优秀的测试管理工具不但可以大大减少测试过程中出现错误的可能性,还可以极大的提高测试的效率,加快测试进程。

MI公司、Rational公司和Compuware公司开发的与其测试工具配套的管理工具都是十分优秀的测试管理工具,而且各有特色。下面就从工具结构、功能等方面对三个公司的测试管理工具做一个分析和比较。

分析和比较的测试管理工具(所属工具集)的版本及软件平台情况如下表:

表6.1测试管理工具版本及平台

6.1工具特点

系统结构不同。TestDirector是基于WEB的测试管理系统,它是一种B/S结构的系统,通过互联网和浏览器,允许一定数量的用户(不同的License的允许并发访问的用户数不同)通过不同的主机同时使用,就像每台机器上都安装了TestDirectro一般。而其它两个公司的测试管理系统是基于C/S结构的系统,如果一个测试人员要使用该测试管理系统的话,他必须在自己的机器上安装该系统才行。

工具的集成度不同。TestDirector一个工具集成了所有与测试管理相关的功能,包括测试项目管理、测试用例设计、测试计划

软件测试技术方法的比较与分析

安排、缺陷跟踪等。而其它两个公司的测试管理工具都有好几个工具组成,这些工具结合共同完成测试管理的功能[13-14]。

测试资源访问结构不同。三种测试管理工具都是采用中央数据仓库来共享和管理测试资源,使用的都是第三方的数据库。三个公司的测试工具和管理工具对测试资源的访问分别如下图:

图6.1 MI工具测试资源组织访问图

图6.2Rational和Compuware工具测试资源组织访问图

从上图中我们可以看出,MI公司的测试管理工具TestDirector是测试工具访问其它测试资源的中介,所有相关的测试工具与测试资源的交互(即与第三方数据库交互)都是通过TestDirector完成的。而另外两个公司的工具,不管是测试工具还是测试管理工具,都直接与数据库交互来访问测试资源。

三个公司的工具对于第三方的数据库支持大同小异,都支持当今主流的数据库。MI公司的TestDirector标准版支持Microsoft Access,如果是企业版还支持Sybase, Microsoft SQL, Oracle。Rational公司和Compuware的测试管理工具集中的每个工具支

软件测试技术方法的比较与分析

的数据库不同:

6.2测试项目

每进行一个测试时首先要创建测试项目,由于测试工具的集成度和结构不一样,所以造成了三个公司的测试管理工具创建测试项目的不同。

创建项目的复杂度不同。MI公司的TestDirector创建测试项目最简单,只需要输入一个项目名称即可,其它的像数据库创建等系统会自动帮你完成,创建好的项目还可以随时随地通过互联网更改它的配置。其它两个公司的测试管理工具的项目创建,都要有复杂的数据库创建过程,一个测试项目创建,还要根据它提供的数据库表创建文件人工创建数据库,另外,由于它们的需求管理和缺陷管理工具的独立性,还要将需求项目和缺陷管理项目与测试项目结合。

测试项目各阶段实施的工具支持力度不同。由于MI公司的TestDirector本身是一个完整的工具,所有的测试工作都只有在一个测试项目创建后才能开展,测试项目下面是需求建立、测试用例设计、测试安排、缺陷管理等,而且所有的这些内容都存放在测试项目建立时所创建的同一个数据库中,所以总体来说TestDirector的测试项目是一个不可分割的整体。而Rational和Compuware的测试项目则不一样,在它们的测试项目创建前你完全可以使用它们的需求管理工具创建完成测试需求,缺陷跟踪工具创

软件测试技术方法的比较与分析

建好缺陷跟踪的项目,然后创建测试项目时将这些需求和缺项项目与测试项目联系起来。

6.3测试人员管理

如果一个软件测试过程中有很多人员参与的话,那么对这些参与测试的人员的管理就显得非常重要,如何合理的调配和管理人员,对于提高测试的效率有很大的影响。三个公司的测试管理工具都有明确的管理测试人员(即用户)的功能模块,TestDirector有两个地方可以进行用户的管理,一个是Site Administrator页面,一个是CUSTOMIZE页面;Rational的Rational Administrator即负责测试项目创建又负责测试人员的管理;和Rational的工具一样,Compuware公司的QADirector Administrator也是即负责测试项目的创建也负责测试人员的管理。这三个工具都提供了用户密码保护、用户添加、更改、删除等必备功能,另外,都可以订制用户对测试资源操作和访问的权限。虽然三个公司的管理工具对于测试人员的管理从整体功能上来说是相同的,但是在一些细节的实现方面还是有一些不同。

首先,三个工具对测试人员的划分不同。MI的测试管理工具和Rational的测试管理工具都是用角色来划分测试人员即系统的用户,它们规定每个角色对测试资源的操作和访问权限以及对某个测试管理工具的某个功能模块的访问权限,而不去规定某个实际的用户的权限,当向系统添加一个用户时,只需要指定用户是那种角色就行了,如:Tester、Administrator、TestLeader等,如果没有合适的角色,系统还允许订制自己的角色,你可以为自己订制的角色分配权限,并将其添加到角色库中,供以后使用。不过,MI和Rational的这两套工具对于测试资源和工具模块的操作和访问权限划分的粒度不同,TestDirector相对于Rational Administrator来说对角色的权限的划分要详细地多,所以TestDirector对于角色的定义要灵活的多。Compuware的QADirector Administrator中对测试人员(即用户)的管理没有

软件测试技术方法的比较与分析

角色的概念,每加入一个用户,都要订制其权限,而且权限划分也不是很细,订制用户权限的灵活性比较差。

其次,它们对测试人员的管理方法不同。TestDirector中采用了对测试人员集中管理的方法,不管是项目A的测试人员还是项目B的测试人员,也不管项目A和B有没有创建,都可以在TestDirector提供的用户管理模块中添加用户,当一个测试项目创建后,你可以为测试项目分配用户,也可以将一个用户指定为某个项目的人员,所以TestDirector对于测试人员(即用户)的管理显得非常的灵活、简单。其它两个公司的管理工具来说,它们的测试人员是依附于测试项目而存在的。首先,要先创建一个测试项目,然后才能为每个测试项目添加相应的用户,而且不同的测试项目的用户是相互独立的。而往往一个测试团队的人员是固定的,它们的职责也是固定的,它们作为测试工具的使用者也是固定的,所以Rational和Compuware公司的管理工具让测试人员依附于测试项目而存在的方法使得每建一个测试项目都要重复添加一次系统用户,显得比较繁琐[19-22]。

6.4测试计划

测试计划就是针对测试项目创建一个完整的测试计划,主要包括测试用例的设计、测试脚本的创建等工作。下面就MI和Rational两个公司的测试管理工具TestDirector和TestMananger中建立测试计划的功能作一个分析和比较。

MI的TestDirector中的Test Plan模块就是创建测试计划的一个平台,它提供了各种功能以方便测试计划的创建。

首先,使用TestDirector可以定义测试。Test Plan模块提供了树形结构来组织和定义测试,你可以根据被测软件的功能模块将一个大的测试划分为小的测试,这些测试用文件夹来区分,然后向这些文件夹中添加具体的测试,针对测试执行使用工具的不同,新建一个测试的时候,TestDirector提供了如下几种测试类型:手工测试、WinRunner自动化测试、LoadRunner自动化测试、VAPI

软件测试技术方法的比较与分析

测试、QuickTest测试、Astra LoadTest测试、Xunner测试、System测试等供选择,而且这些不同类型的测试都会用不同的图标来区别,根据图标可以很容易的知道测试的类型。

使用TestDirector可以轻松的将测试和需求联系起来。测试计划中的测试要与原始的测试需求相吻合是最基本的要求。上面已经提到了TestDirector中可以很方便的将一个测试需求和对应的测试联系起来。同样的方法,TestDirector为了保证测试对测试需求的覆盖率,可以通过将测试计划树中的每一个测试与测试需求树中的一个或多个需求相联系方法创建一个测试覆盖。

对测试步骤设计的支持。通过向测试计划树中的测试添加测试步骤的方法来定义测试操作过程。测试步骤描述了测试的操作,要检查的点,和每个测试期望的输出等信息。对于设计完测试步骤的测试,可以根据其测试类型(是手工测试还是自动化测试)使用相应的测试工具来创建相应的测试脚本。

生成报告和图表以助于分析测试数据。这个功能可以帮助你重新浏览测试以确定它们是否符合测试目标。另外,TestDirector的Test Plan模块中还提供了邮件发送功能,你可以很轻松的将设计好的测试发送给测试项目组成员中的任何一个人。对于每一个测试还允许为它添加任何类型的附件。

Rational TestManager是Rational测试管理工具集中的核心工具,在TestManager中,一个测试计划是一个Rational测试数据存储的资源(asset)。一个项目可以有一个或多个测试计划。而且可以根据测试情况的需要任意的组织它们,可以为整个项目制定一个测试计划,你也可以为项目的每一个主要的component指定一个测试计划。

Rational的一个测试计划是由测试用例文件夹组成,每个测试用例文件夹中是具体的测试用例。每个测试用例可以选择是手工的测试用例还是自动化的测试用例,其中自动化的测试用例也有多种不同工具的选择,包括功能的和性能的,针对每个测试用例,你还可以设计其测试步骤,包括测试操作、检查点、输出等,还要指

软件测试技术方法的比较与分析

定与测试用例相联系的测试脚本,这些东西和TestDirector是相同的。不过Rational TestManager的测试用例还有以下两个特殊的地方:

第一,可以指定外部文件作为测试用例的输入。有三种不同的测试用例输入文件:测试需求文件(Rational RequisitePro创建的需求)、Rational Rose项目、Excel文件。可见Rational的测试工具还和其建模工具结合了起来,如果要测试的软件使用Rational Rose来建模的,使用Rational的测试工具也不失为一种很好的选择,可以省去很多重复的工作。

第二,在TestManager中创建所有的测试用例,然后用interations来指定一个指定的测试用例什么时候运行和通过。一个iteration是在一个项目进行中定义的一个时间段。一个iteration是一个主要的项目转折点。在一个iteration中,产品要符合某种质量标准以达到某个转折点,质量标准是由测试用例定义的必须通过的。在许多组织者中,测试员和分析员或项目经理决定在那一个iterations测试用例需要通过。使用Rational TestManager的这个功能,可以更加严密的监视测试是否符合要求,更容易保证被测软件的质量。

另外,Rational TestManager还提供了测试影响分析的功能。测试影响分析对于确定测试脚本是否为所有的测试需求提供了完全的覆盖是很重要的。当测试需求改变的时候,TestManager会提示你这些改变对测试计划的影响。比如:如果一个需求因为某种原因改变了,你想知道测试计划中的那些测试用例受到了影响,那么你可以update它们以反映需求的变化。TestManager会自动将受到影响的测试用例标记上“suspect”。

Rational TestMananger还提供了针对测试计划生成各种报告的功能。这些报告可以帮助你分析测试计划,找出其中的缺陷。

从上面对两个工具的分析,我们可以看出,在测试计划建立方面,两个工具的功能有很多相同的地方,比如:测试计划的组织方式是相同的,一个大的测试项目可以细化为小的测试计划,测试计

软件测试技术方法的比较与分析

划下面是测试用例文件夹,测试用例文件夹中是具体的测试用例,都用树形结构来管理测试计划;都可以生成相应的报告,来查看测试计划的完整性等。另外,两个工具也各有其特色的地方,TestDirector对测试计划邮件发送功能的支持、直观的测试需求和测试计划的联系等是TestManager所不具备的;而TestManager对多种测试用例输入的支持、对测试用例的监督机制、测试影响分析功能等又是TestDirector所没有的[13,19,21,23]。

6.5比较总结[24]

软件测试技术方法的比较与分析

软件测试技术方法的比较与分析

7.总结语

软件测试是确保软件质量的重要方法,忽略了软件测试,就是不重视软件质量。自动化测试是提高软件测试效率的重要方法,忽视自动化测试工具在软件测试中的应用,就是浪费时间、人力和物力。MI公司、Rational公司和Compuware公司,三个公司的都开发了一套完整的自动化测试工具和管理工具,这些工具都可以执行完整的自动化测试,但也各有千秋,而且这些工具还在不断的完善,功能还在不断的增强。另外由于时间有限,本文对这些工具的比较还有很多未涉及之处,而且可能有些地方还不太妥当,希望今后有更多的人对这些工具做出比较,以帮助要使用这些工具的公司或单位作出更好的抉择。

软件测试方法技术的研究与对比

作 者

学科、

指 导

完 成姓 名: 专业 : 号 : 教 师: 日 期:

XX大学

XXXX University

软件测试方法技术的研究与对比

总计: 毕业论文 64 页

表 格 14 表

插 图 22 幅

指导教师:

评 阅 人:

完成日期:

摘 要

软件测试是保证软件质量的重要手段。随着计算机硬件性能的不断提高,软件的功能也越来越强大,软件结构越来越复杂,软件质量越来越难以控制。对于比较大型的软件系统集成测试来说,单纯的手工测试不但效率低下,而且很多测试仅靠手工测试无法完成。为减少测试开销,在有限的时间内执行更多地测试,并且降低人为引起的错误,自动化测试是非常必要的。

一个完整地自动化软件测试工具,应该包括测试管理工具、功能测试工具、性能测试工具三个部分。论文阐述了软件自动化测试相关概念和理论,概括和比较了其适用范围和组织结构。MI公司、Rational公司、Compuware公司开发的产品是当今市场上三种主流的测试工具,本文从测试步骤、对象识别等方面对上述三个公司的功能测试产品;从测试项目管理、人员管理、测试计划等方面对其测试管理工具产品作了详细的分析和比较,为自动化测试研究提供参考。

关键词:软件测试,自动化测试,测试管理工具

Abstract

Software testing is important to ensure software quality. With the enhancement of the computer hardware and the increasing complexity of software functionality and structure, software quality control is more and more challenge. For integration testing on large software, manual testing is usually effort consuming while insufficient to achieve certain testing objectives such as stress testing. Therefore, automatic testing is necessary.

Functional testing, performance testing and test management are three key characters of testing tools. The concept and theory related to software automated testing are expounded. The scope of application and the archichecture of software automated testing is summed up and compared. Testing tools delivered by MI, Rational and Compuware occupy most of the testing market. This thesis analyzes and compares function testing tools from、testing procedure、object recognization, etc. And it analyzes and compares test management tools from testing project management、people management、testing plan, etc. This survey provides basis for the research on automatic testing technique.

Keywords:Software Testing , Automated Testing , Software Testing Management Tools

目 录

1.绪论 ............................................................. 1

1.1论文的研究背景及意义 ........................................ 1

1.2论文的主要研究工作及成果 .................................... 1

1.3论文的组织结构 .............................................. 2

2.软件测试技术的概论 ............................................... 3

2.1软件测试的定义与目的 ........................................ 3

2.2软件测试的过程 .............................................. 3

2.3软件测试的分类及主要方法 .................................... 4

2.3.1按测试过程划分 ...................................... 4

2.3.2按工作状态划分 ...................................... 5

2.3.3按测试用例设计方法划分 .............................. 6

2.3.4按测试目的划分 ...................................... 8

3.自动化测试技术基础 .............................................. 9

3.1自动化测试概念 .............................................. 9

3.1.1自动化测试 .......................................... 9

3.1.2自动化测试的优点 .................................... 9

3.1.3自动化测试的局限性 ................................. 11

3.2自动化测试的适用范围 ....................................... 12

4.主流自动化测试工具简介 .......................................... 15

4.1 MI(Mercury Interactive)公司的测试软件 ................... 15

4.1.1管理工具 ........................................... 16

4.1.2测试工具 ........................................... 16

4.2 Rational公司的测试软件 .................................... 17

4.2.1管理工具 ........................................... 17

4.2.2测试工具 ........................................... 19

4.3 Compuware公司的测试软件 ................................... 20

4.3.1管理工具 ........................................... 21

4.3.2测试工具 ........................................... 22

5.自动化功能测试工具的分析比较与总结 .............................. 23

5.1测试环境和对象 ............................................. 23

5.2工具功能模块详细划分 ....................................... 25

5.3测试步骤 ................................................... 28

5.4 GUI对象识别 ............................................... 29

5.5脚本执行与被测程序响应的同步问题 ........................... 32

5.6测试信息收集 ............................................... 33

5.7结合测试管理工具 ........................................... 33

5.8比较总结 ................................................... 34

6.测试管理工具的分析与比较 ........................................ 35

6.1工具特点 ................................................... 35

6.2测试项目 ................................................... 37

6.3测试人员管理 ............................................... 38

6.4测试计划 ................................................... 39

6.5比较总结 ................................................... 42

7.总结语 .......................................................... 44

参考文献 ........................................................ 45

附录1外文译文 .................................................... 47

附录2外文原文 .................................................... 54

致 谢 ............................................................. 63

软件测试技术方法的比较与分析

1.绪论

1.1论文的研究背景及意义

近几年,随着软件规模不断扩大,软件复杂度不断增加,客户要求不断提高,如何保证软件质量,提高软件可靠性也越来越受到各研究机构、相关企业的普遍关注,同时成为软件开发机构特别关注的方向。目前,许多能有效提高软件质量的质量保证技术相继问世,例如,几乎所有的大型软件开发机构都结合自身软件开发实际和经验制定了相关的质量标准来规范企业内部的软件开发过程,有些机构在这两年陆续成立了与软件开发相独立的软件测试中心来保证开发出来的软件可用,在开发过程中增加了许多环节(如软件配置管理、阶段性测试和评审)用来保证开发出来的软件具有高可靠性。软件测试技术作为保障软件质量最直接、最有效的手段之一也成为重要的研究热点,但是由于软件本身的复杂性和不确定性,软件测试技术始终具有极大的难度。深入研究软件测试技术方法,提高软件可靠性,已经成为国内外软件行业和相关机构重要的研究方向[1]。

正确选择和有效地运用各种测试方法、技术和工具,对提高软件工程的应用水平和提高软件产品的质量与可靠性至关重要。而在软件测试中使用优秀的测试管理工具不但可以大大减少测试过程中出现错误的可能性,还可以极大的提高测试的效率,加快测试进程。

1.2论文的主要研究工作及成果

论文主要对软件测试、测试技术(工具、方法)、自动化测试以及测试管理技术(工具、方法)进行理论阐述和综合论述;然后进行综合分析、比较、总结。

通过查阅文献资料和对主流工具软件和相关技术的深入学习可完成软件测试技术方法的比较与分析研究内容。在这个论文研究过程中,可以学会正确选择和有效地运用各种测试方法、技术和工

软件测试技术方法的比较与分析

具。

1.3论文的组织结构

论文的组织结构如图1.1所示:

图1.1 论文的组织结构

软件测试技术方法的比较与分析

2.软件测试技术的概论

2.1软件测试的定义与目的

软件测试就是使用人工或者自动的手段来运行或测定某个软件产品系统的过程,其目的是在于检验软件产品是否满足规定的需求[2]。简单地说,软件测试过程就是制造条件,促使错误发生的过程。

软件测试的目的是[3]:

(1)测试的最终目的是为了避免错误的发生,确保应用程序能够正常高效的运行;

(2)好的测试用例在于发现至今未发现的错误;

(3)成功的测试是发现了至今未发现的错误的测试;

(4)好的测试工程师应该做到不仅发现问题,还能够帮助开发人员分析问题。

2.2软件测试的过程

软件测试是一个贯穿整个软件生命周期的活动,那种等待整个系统开发完毕,再对其进行测试的想法是错误的,把测试放到软件开发的最后是很危险的,因为它很容易导致整个软件系统无法集成。另外,对软件的测试并不仅限于软件程序的本身,因为错误并不一定是代码引起的。很有可能是软件需求、软件系统的详细设计等阶段引起的。错误在初期也许只是范围很小的隐藏问题,但由于软件开发的各阶段的连续性,会使错误逐步扩展,如果早期的开发中出现的错误不能排除,将带到设计、编码、测试等各阶段,影响逐步扩大。所以对软件的测试还应该包括与软件有关的所有的文档。一个典型的软件测试过程如下图:

软件测试技术方法的比较与分析

图2.1 典型的软件测试过程

一个软件的测试过程是一个不断回归的过程。旧的错误的修改可能会引起新的错误的出现,所以每修改一个新的错误,都要针对系统再作一次测试,直到没有新的错误出现为止,这是一个很繁琐的过程。

2.3软件测试的分类及主要方法

针对不同规模、不同类型的软件,以及软件开发的不同阶段,所用的测试方法各异,下面我们就主要针对上面的几种情况对软件测试做一个简单的分类。

2.3.1按测试过程划分

我们知道对于软件开发商来说,比较大的软件系统都是由许多人协作开发的,一般都是把一个大的软件系统分割成不同的功能模块,然后再将这些模块分给开发团中的每个人去完成,在开发的过程中针对每个模块的完成情况,边开发、边测试、边集成,然后各个模块集成的完整的系统还要进行测试,当系统交付用户使用后,还要对系统进行维护、升级,这里面也伴随着测试。根据上面的过程,我们按软件开发过程的可以将软件测试划分为下面五个步骤,它们的关系如图2.2:

图2.2 软件测试步骤

软件测试技术方法的比较与分析

单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。一个软件单元的正确性是相对于该单元的规约而言的。因此,单元测试以被测试单位的规约为基准。单元测试的主要方法有控制流测试、数据流测试、排错测试、分域测试等等[3-5]。

集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。集成测试的策略主要有自顶向下和自底向上两种[3-5]。

系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。软件系统测试方法很多,主要有功能测试、性能测试、随机测试等等[3-5]。

验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。这是软件在投入使用之前的最后测试。

回归测试是在软件维护阶段对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。这里修改的正确性有两重含义:一是所作的修改达到了预定目的,如错误得到改正,能够适应新的运行环境等等;二是不影响软件的其他功能的正确性[1]。

2.3.2按工作状态划分

软件测试是一个对测试经验、测试计划、测试环境和测试工具依赖性非常强的工作,按工作状态分为静态测试和动态测试两个阶段[6]。

软件测试技术方法的比较与分析

静态测试主要是针对所有文档资料、编程规范、数据定义、控制和数据使用、代码与需求的一致性、代码与设计的一致性等方面的分析,其对测试经验和测试计划的依赖性极强。

静态测试是在不需运行软件系统的情况下,对系统进行的测

试。其采用的方法主要有[6]:

(1)文档资料浏览,达到正确的理解,并对任何改变具有统一的认知;

(2)讨论决定,对文档资料进行讨论,并作出决定,如:做什么、不做什么、如何做等;

(3)检查,根据规范和定义,找出可能存在的问题,如:市场和商业策略、系统需求和系统设计、程序代码、测试计划、测试设计、测试案例、测试结果、用户手册、培训教材等;

(4)利用工具对程序代码进行静态分析,如:程序复杂度、系统结构、控制流程、数据流程等。

动态测试是被测系统在运行当中,根据其动态的行为进行的测试。根据测试规模,可分为:单元测试、集成测试、系统测试及应用测试等几个阶段。

2.3.3按测试用例设计方法划分

软件测试的方法和技术是多种多样的,按测试用例设计方法,可分为黑盒测试和白盒测试,并且黑盒测试和白盒测试还是目前通用的测试技术 [2,7-8]。

黑盒测试着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行的测试。

黑盒测试也称功能测试、数据驱动测试或基于规格说明的测

试,它在已知产品应具有的功能的条件下,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信

软件测试技术方法的比较与分析

息,并且保持外部信息(如数据库或文件)的完整性。

黑盒测试是以用户的观点,从输入数据与输出数据的对应关系出发进行测试的,它不涉及到程序的内部结构。黑盒测试注重于测试软件的功能需求,主要试图发现软件中的功能错误、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止错误等。

白盒测试是基于代码的测试,测试人员通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件的质量。

白盒测试也称结构测试、逻辑驱动测试或基于程序本身的测

试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不涉及它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

白盒测试需要全面了解程序内部逻辑结构、对所有逻辑路径进行测试。白盒测试是穷举路径测试,在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

黑盒测试与白盒测试的比较如下表2.1。

表2.1 黑盒测试与白盒测试的比较

软件测试技术方法的比较与分析

2.3.4按测试目的划分

对于一个软件系统,衡量它的好坏有两个最重要的指标,一是它的功能是否符合要求,二是它的性能是否符合要求。那么针对这两个指标,我们可以将软件测试分为:功能测试和性能测试两个部分[2]。

功能测试:针对软件的功能测试,目的是为了验证软件的功能是否符合软件需求规格说明的要求,找出软件不符合用户需求的地方。功能测试要尽量测试到软件的每一个功能单元,找出软件中的缺陷,确保软件的每一个部分都能正常、正确的工作。

性能测试:就是用来测试软件在系统中的运行性能的。性能测试可以发生在各个测试阶段中,即使是在单元层,一个单独模块的性能也可以使用白盒测试来进行评估,然而,只有当整个系统的所有成分都集成到一起之后,才能检查一个系统的真正性能。性能测试经常和压力测试一起进行,而且常常需要硬件和软件测试设备,这就是说,常常有必要的在一种苛刻的环境中衡量资源的使用(比如,处理器周期)。外部的测试设备可以监测测试执行,当出现情况(如中断)时记录下来。通过对系统的检测,测试者可以发现导致效率降低和系统故障的原因。

软件测试技术方法的比较与分析

3.自动化测试技术基础

3.1自动化测试概念

随着软件系统的规模越来越大,整个系统的复杂性也越来越大,那么单纯的手工测试已经不适合这种大系统的测试了。首先手工测试的效率低下,其次有些测试是手工测试所无法完成的。为了解决手工测试效率低下和手工测试不能解决的一些测试等问题,自动化测试就应运而生了。

软件自动化测试就是执行某种程序设计语言编制的自动测试程序,控制被测软件的执行,模拟手动测试步骤,完成全自动或半自动测试。其目的在于缩短测试周期,增强对软件性能方面的测试能力等,从而达到保证软件质量并使软件能够提前上线[9]。

3.1.1自动化测试

自动化测试就是希望能够通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的测试,目的是减轻手工测试的劳动量,从而达到提高软件质量的目的。自动化测试的目的在于发现老缺陷;而手工测试的目的在于发现新缺陷。测试自动化涉及到测试流程、测试体系、自动化化编译、持续集成、自动发布测试系统以及自动化测试等方面整合。也就是说要让测试能够自动化,不仅是技术、工具的问题,更是一个公司和组织的文化问题。首先公司从资金、管理上支持您,其次要有专门的测试团队去建立适合自动化测试的测试流程、测试体系;其次就是把原代码从受控库中取出、编译、集成、发布可运行系统、进行自动化的单元测试和自动化的功能测试的过程[9]。

3.1.2自动化测试的优点

当正确实施软件自动化测试并严格遵守制定的测试过程时,自动化测试可带来若干好处。假定对于给定的企业需求,测试工程师

软件测试技术方法的比较与分析

必须评估潜在的好处是否符合所要求的改进标准,在项目实施自动化测试是否仍然是合适的[10-11]。

(1)提高测试效率

一般来说,软件产品的发布周期很短,而在测试期间是每天都可能要发布一个版本供测试人员测试,一个系统的功能点有几千个上万个,手工测试是一个劳动密集型的工作,并且容易出错。引入自动化测试能够用更有效、可重复的自动化测试环境代替繁琐的手工测试活动,而且能在更少的时间内完成更多的测试工作,从而提高了测试工程师的工作效率。

(2)令软件新版本进行回归测试的开销最小

产品发现错误以后的改动,代码变了,但要求的功能并没有变,所以测试用例也不必改变,自动化测试就可以很方便地进行回归测试,另外,对于产品型的软件,每次发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试,从而可以让测试达到测试每个特征的需求。

(3)可以完成一些手工测试不能或难以完成的测试

对于一些非功能性方面的测试,如:压力测试、并发测试、大数据量测试、崩溃性测试等,这些测试用手工测试是很难,甚至是不可能完成的。但自动化测试则能方便地执行这些测试,比如并发测试,使用自动化测试工具就可以模拟来自多方的并发操作了。

(4)具有一致性和可重复性

由于每次自动化测试运行的脚本是相同的,所以可以进行重复的测试,使得每次执行的测试具有一致性,手工测试则很难做到这点。

(5)更好地利用资源

将繁琐的测试任务自动化,可以使测试人员解脱出来,将精力更多地投入到测试案例的设计和必要的手工测试当中。并且,理想的自动化测试能够按计划完全自动地运行,使得完全可以利用周末和晚上的时间执行自动测试。

软件测试技术方法的比较与分析

(6)解决测试与开发之间的矛盾

通常在开发的末期,进入集成测试阶段,由于每发布一个版本的初期,测试系统的错误比较少,这时开发人员有等待测试人员测出错误的时间。事实上在迭代周期很短的开发模式中,存在更多的矛盾,但自动化测试可以解决其中的主要矛盾。

(7)增加软件信任度

每一个测试人员都有自己特殊的经历和技术背景,有自己的一些操作习惯和先入为主的观念,这就导致不是所有的测试都是可信的,而且有时测试会把一些新的错误带入软件产品之中。自动化测试则会在很大程度上避免这些问题。一旦得知软件通过强有力的自动测试后,软件发布时对其的信任度也高(假设已做过很好的测试)。

总而言之,测试自动化的优点在于通过较少的开销就可以获得更彻底的测试能力,以及提高产品的质量。

3.1.3自动化测试的局限性

当然,软件自动化测试也并非万能,人们对软件自动化测试的理解也存在许多误区,认为自动化测试能完成一切工作,从测试计划到测试执行,都不需要人工干预。其实软件自动化测试所完成的测试功能也是有限的。以下几点是自动化测试的不足所在[10-11]:

(1)不能完全取代手工测试。软件自动化测试不可能也没必要取代手工测试来完成所有的测试任务。因为有些测试使用手工测试比自动化测试要简单,这时将测试自动化的开销就比较大了。如以下一些情况:

①测试很少运行。对于很少运行的测试任务,例如一年只需测试一次,对测试自动化则是一种浪费。

②软件不稳定。如果在某段时间内软件的界面和功能更新频繁,那么修改相应的自动化测试点开销较大,因此只有当软件达到相对的稳定,没有界面性严重错误和中断错误才适合开始自动化测试。

软件测试技术方法的比较与分析

③涉及感观方面的测试。例如界面的美观、声音的体验、易用性的测试等,这类测试很容易通过人来验证,自动化测试反而难以执行。

④涉及物理交互的测试。自动化测试很难完成与物理设备的交互,比如刷卡的测试等。

(2)手工测试比软件自动化测试发现的缺陷更多

自动化测试的最大特点在于适合重复测试。一般情况下,以前运行过的测试再次用来检查软件的新版本往往暴露的缺陷要少得多。测试专家 JamesBach总结出,85%的缺陷靠手工发现,而自动化测试只能发现15%的缺陷。自动化测试能够很好的发现老缺陷。

(3)软件自动化测试不能提高有效性

自动化测试并不会比手工运行相同测试更有效,它可以提高测试效率,但也可能对测试的进展起反作用。

(4)软件自动化测试可能会制约软件开发

应用软件的变化对自动化测试的影响要比手工测试更大一些,软件的部分改变有可能使自动化测试软件崩溃。而设计和实施自动化测试要比手工测试开销大,并需要维护,所以对自动化测试影响较大的软件修改可能受到限制。

(5)软件自动化测试本身没有想象力

自动化测试是通过软件进行,测试程序只是按照运行机制执行。手工测试时可以直接判断结果的正确性,而自动测试许多情况下测试结果还需要人工干预判断。手工测试可以处理意外事件网络连接中断,此时必须重新建立连接。手工测试时可以及时处理该意外,而自动化测试时该意外事件一般会导致测试的中止。

总的说来,软件自动化测试的优点和收益是显而易见的,但它同时也并非万能,只有对其进行合理的设计和顺利的实施才能从中获益。

3.2自动化测试的适用范围

Peer给出了对各类型测试进行自动化的参考

[12]。

软件测试技术方法的比较与分析

可见重复性比较高的回归测试,以及手工测试难以完成的性能

软件测试技术方法的比较与分析

测试是自动化测试最有潜力应用和最能体现价值的地方,而早期的单元测试中如果引入自动化,也将大大提高开发出的代码质量。

当决定在一个产品的测试过程中实现自动化测试的时候,必须将自动化测试手工测试结合起来使用。目的就是用较少的开销,获得彻底的测试,并提高商品的质量。

下表对何时使用自动化测试和何时使用手工测试进行了一个概要的总结。

表3.2 何时使用自动化测试和手工测试

软件测试技术方法的比较与分析

4.主流自动化测试工具简介

自动化测试需要不同类型的自动化测试工具进行支持。目前,软件市场上已经有很多优秀的自动化测试工具,它们功能强大,有针对功能的,也有针对性能的,有执行白盒测试的测试工具也有执行黑盒的测试工具。主流的商业化的自动化测试工具软件开发公司是:Mercury Interactive公司、IBM Rational公司和Compuware公司。三个公司都开发了一整套自动化测试工具,这些自动化测试工具都经过无数的实际运用,都是非常优秀的自动化测试工具。

一个完整地自动化软件测试工具,应该包括测试管理工具、功能测试工具、性能测试工具三个部分。下面就目前Windows操作系统下的主流的自动化测试工具作一个整体的介绍。

4.1 MI(Mercury Interactive)公司的测试软件

Mercury Interactive公司是商业技术优化的业界领导者。它成立于1989年,目前,和全球超过35个国家都有贸易往来。全球100强公司中有将近90%的公司依靠MI公司的软件和服务来实施他们的商业技术优化策略。这使得MI公司成为世界上最大的、成长最快的企业级软件公司。该公司开发的自动化测试工具以其功能强大、完善的售后服务和支持,使其成为了自动化测试软件开发领域的领先者。MI主要测试软件的构成如下图

[13]

图4.1 MI主要测试软件的构成

下面对上图的工具作一个概括的介绍。

软件测试技术方法的比较与分析

4.1.1管理工具

TestDirector是MI自动化测试工具集中的测试管理工具,它是业界第一个基于WEB的测试管理系统。使用TD及其配套的功能和性能等测试工具,可以组织全球范围的测试。TestDirector通过在一个整体的应用系统中提供并且集成了测试需求管理、测试计划、测试日程控制及测试执行和错误跟踪等功能,通过使用这些功能可以使测试专业化,提高测试的效率,加速测试的过程。

TestDirector主要有三大功能模块构成: (1)Site Administrator

该模块的主要功能是:创建测试域,创建和维护测试项目,管理测试人员,查看测试项目的访问情况,配置注册码。

(2)Customer

在该功能模块中,TD用户(即测试人员或其他与测试相关的人员)可以订制和修改用户的一些信息。包括:修改用户信息、创建新的用户类型和用户组类型,订制模块的访问权限,订制项目实体和列表,配置邮件,调整工作流等。

(3)TestManager

这个模块是TestDirector的主要功能的所在。它主要集成了需求指定、建立测试计划、执行测试、缺陷跟踪四个功能模块。 4.1.2测试工具

MI的测试工具主要有功能测试工具WinRunner和性能测试工具LoadRunner,下面对这两个工具作一个概括的介绍。

(1)WinRunner

针对Windows应用程序的一个企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。它通过自动录制、检测和回放用户的应用操作,来发现程序中的错误。可以有效地帮助测试人员对复杂的企业级应用软件的不同发布版本进行测试,提高测试人员的工作效率和质量。确保跨平台的、复杂的企业

软件测试技术方法的比较与分析

级应用软件无故障发布和长期稳定的运行。

(2)LoadRunner 黑盒性能测试工具。

4.2 Rational公司的测试软件

Rational公司是软件业中领先的应用开发工具供应商,提供基于业界开放标准的工具、最佳方案和服务,用于开发商业应用和构建软件产品和系统。2002年Rational公司被IBM公司收购。对于Rational公司的产品,我们比较熟悉的是它的建模工具,它的测试工具同它的建模工具一样优秀。Rational的测试工具Rational Suite TestStudio的构成如下图[14]:

图4.2 Rational Suite TestStudio的构成

4.2.1管理工具

Rational Suite TestStudio测试工具集中的管理工具主要有五个子工具组成,它们结合起来,完成一个完整的测试管理工具的功能。下面就上面各个管理工具的功能作一个概括的介绍。

(1)Rational TestManager

TestManager 处于测试管理工具的核心位置。它是一个开放的可扩展的架构,将其它的工具和测试数据联合为一个整体。在TestManager中主要可以完成建立测试计划、安排测试、执行测试、查看测试结果和分析测试结果等工作。

软件测试技术方法的比较与分析

(2)Rational Administrator

Rational Administrator集中了测试项目的管理功能,可以创建测试项目,管理相关的人员,包括测试人员和有关的开发人员。它的详细功能如下:

①创建一个Rational测试项目,配置项目的有关信息。 ②连接某个测试项目。

③通过网络操作远程的测试项目。 ④删除一个测试项目。

⑤创建和管理测试人员和用户组。

⑥创建和管理包含RequisitePro项目和Rose项目的测试项目。

⑦控制一个Rational测试项目的测试数据的安全权限。 (3)Rational RequisitePro

Rational RequisitePro是一个需求管理的工具,它可帮助项目团队控制开发的进度。它通过将Microsoft Word和一个需求仓库连接来组织测试需求,它还提供了跟踪功能,并且在整个项目的生命周期内可以随时改变需求。

利用RequisitePro你可以完成如下工作: ①定制需求数据库和管理多种不同类型的测试。 ②指定优先级,排序和安排需求。 ③控制特征变形,确保软件质量。

④跟踪产生的变化,包括这些改变是谁做出的、什么时候、为什么。

(4)Rational ClearQuest

在ClearQuest中进行缺陷的跟踪和管理。通过ClearQuest可以将测试中发现的缺陷直接发送给相应的测试人员,集中管理某个测试项目的缺陷,并跟踪缺陷的修复情况。

(5)Rational SoDA

文档生成工具,测试需求、测试结果、缺陷报告等测试信息可以通过SoDA这个工具生成详细的报表。

软件测试技术方法的比较与分析

4.2.2测试工具

Rational Suite TestStudio测试工具集中的测试工具比较全面,既有功能和性能的测试工具,也有代码级的黑盒和白盒测试工具。

(1)Rational Robot

Rational Robot集成了功能测试和性能测试两种功能。使用Robot可以创建两种类型的测试脚本:基于GUI对象的功能测试脚本和用于性能测试的脚本。功能测试脚本可以在Robot中直接运行,而性能测试的脚本要在TestManager中运行。

(2)Rational Quantify

Rational Quantify提供了一个完整的、精确的针对被测应用程序和相关组件的一个性能测试数据集合,同过图表等易于理解和观察的方式显示出来,可以很容易看出被测程序那个地方耗费了较多时间,然后优化修改耗费时间较多的代码,提高程序执行效率。

Rational Quantify主要适用的应用程序的对象是:Visual C/C++开发的.exe,.dlls,OLE/ActiveX控件以及COM对象组件;Visual Basic开发的应用程序;Java语言开发的应用程序;C#语言开发的应用程序等。

(3)Rational Purify

检测内存泄露的白盒测试工具。 (4)Rational PureCoverage 测试代码覆盖率的白盒测试工具。 (5)Rational TestFactory

它是一个基于组件的测试工具,主要功能如下: ①根据程序的导航结构自动生成TestFactory脚本。 ②自动创建和维护一个被测软件的详细map。

③不用记录,自动生成提供扩展代码覆盖率的脚本和发现缺陷的脚本。

④追踪运行过的或未运行过的源代码,并且报告它的详细的发现。

软件测试技术方法的比较与分析

⑤通过最大限度的缩短花费在书写导航代码上的时间来缩短产品的测试周期。

⑥在TestFactory中可以回放Robot功能测试脚本一观察扩展代码覆盖率的信息以创建回归测试集;在Robot中也可以回放TestFactory脚本用以调试脚本。

(6)Rational SiteCheck

网页测试工具,利用Rational SiteCheck 可以检查企业内部互联网的结构完整性以及网页错误。可以帮助查看、跟踪和维护迅速变化的页面。

利用SiteCheck具体可以做如下事情: ①显示网页的结构以及各页面间的关系。

②识别和分析带有动态内容的Web页面,如:forms, Java, JavaScript, ActiveX, VBScript。

③过滤信息,以利于你观察制定的文件类型和缺陷,包括断开的连接。

④检查和编辑任意网页的源代码。 ⑤利用集成的编辑器更新或修复文件。

⑥对安全网页执行全面的测试。SiteCheck提供了Secure Scoket Layer(SSL)支持,代理服务器配置以及多密码域。

(7)Rational TeamTest 团队合作测试工具。

4.3 Compuware公司的测试软件

Compuware公司是世界上最大的软件和专业服务供应商之一。Compuware开发的QACenter测试工具集的主要构成如下图

[15]

软件测试技术方法的比较与分析

图4.3 QACenter测试工具集

4.3.1管理工具

(1)QADirector

QADirector处于QACenter管理工具的核心位置,它协调整个测试过程,并提供了一下功能:

① 计划和组织测试需求。

② 调用相应的自动测试工具执行测试。 ③ 测试过程允许使用手动测试。 ④ 观察和分析测试结果。

⑤ 方便的将测试结果信息加载到测试缺陷跟踪系统。 ⑥ 针对需求验证测试。

⑦ 将分析过程和测试过程结合。 (2)Reconcile

需求管理工具,组织和管理测试需求。 (3)TrackRecord

TrackRecord是一个高级的需求变更和缺陷管理工具,可以帮助组织建立一个系统方法来协调软件开发、调试、测试和实现。可进行自动化的软件缺陷的跟踪管理。

软件测试技术方法的比较与分析

4.3.2测试工具

(1)QARun

QARun可以提供C/S系统、电子商务系统和企业资源计划应用提供企业级的功能测试。同WinRunner和Rational Robot能提供的功能一样,可以执行自动化的功能测试。

(2)QALoad

QALoad是C/S系统、企业资源计划(ERP)和电子商务应用的自动化负载测试工具。它是QACenter测试工具集性能版的一部分。它通过可重复使用的、真实的测试能够彻底的度量应用程序的可扩展性和性能。它可以模拟成百上千的用户并发执行关键的业务完成对应用程的性能测试,并针对所发现的问题对系统性能进行优化,确保软件的成功部署。

(3)WebCheck

全面的站点分析和测试工具。

软件测试技术方法的比较与分析

5.自动化功能测试工具的分析比较与总结

WinRunner、Rational Robot和QARun这三个工具都是自动化的功能测试工具,它们针对的测试对象都是使用IDEs(如:支持Java、C/C++、VB、HTML等语言的集成开发环境)开发的带有GUI对象的应用程序,都能够大大降低重复性的测试所耗费的时间,将测试人员从复杂好事的测试工作中解脱出来。

我们目前所分析比较WinRunner、Rational Robot、QARun这个三个自动化功能测试工具,都是比较新的版本,并不是最新的版本。但这些不同版本的测试工具首先从功能、原理上都是一样的,而且整体的架构和细节的功能也不会有太大的变化。所以针对下面三个较新版本的工具进行分析和比较,对新版本的工具选择同样具有参考价值。

分析和比较的工具对象的版本及软件平台情况如下表:

表5.1 工具对象的版本及软件平台

下面,将从测试步骤、测试结果等方面对这三种工具先作一个详细的分析和介绍,然后根据分析在对这三个工具进行横向的详细比较。

5.1测试环境和对象

(1)WinRunner

我们使用的WinRunner版本是WinRunner7.50。是MI测试软件中比较新的版本。基本上可以完成Windows操作系统下的不同类型软件的自动化功能测试。下表是对WinRunner7.50所支持的环境和被测软件对象的一个总结[16-17]

软件测试技术方法的比较与分析

(2)Rational Robot

表5.3 Rational Robot所支持的环境和被测软件对象

软件测试技术方法的比较与分析

(3)QARun

5.2工具功能模块详细划分

虽然三个工具都是自动化的功能测试工具,从大的方面来说,它们的功能都是一样的,但有许多细节的功能还是有很大区别的。所以,为了更清楚、更详细的认识和比较这三个工具,将这个工具按它的功能模块进行划分,然后针对每个细节的功能进

行分析和比较,最后从整体上把握,是最好的方法。

(1)WinRunner

WinRunner为了支持完整的功能测试,简化测试难度,使测试人员能够轻松正确的执行测试,内置了许多强大的功能。下图是结合WinRunner的实际使用情况,对它从主要功能上的一个详细的划分[13]。

图5.1 WinRunner功能划分

软件测试技术方法的比较与分析

从上面的功能模块划分图我们可以看出,WinRunner主要13个主功能模块,每个功能模块还有一些更具体的功能。这些功能模块集成到到一起,达到了WinRunner执行完整的自动化功能测试的功能。

(2)Rational Robot

Rational Robot兼具功能测试的完整功能和性能测试脚本生成的功能,所以从整体上Robot可以分为两大模块:功能测试模块和性能测试模块。对于性能测试来说,Robot只是负责性能测试脚本的生成,所以性能测试模块的功能相对比较单一,而功能测试模块相对的就比较复杂[18]。对Robot的主要功能的详细划分如下图:

图5.2 Robot功能划分

(3)QARun

同WinRunner一样,QARun可以执行完整的功能测试,它的所有的功能模块都是为了能够正确、方便的进行功能测试而存在的。QARun的主要功能模块的详细划分如下

[15]:

图5.3 QARun功能划分

软件测试技术方法的比较与分析

(4)比较

对于功能测试,从整体上来看的话三个工具区别不是太大。都有脚本的录制、回放;检查点;一些与脚本的录制和回放有关的选项设置

WinRunner与其两个工具主要有如下几个不同的地方:Font Expert功能模块,脚本的执行模块,GUI Map模块。Font Expert是为了WinRunner能够识别不同的字体而加入的一个具有字体学习功能的模块;脚本执行模块提供了三种模式下的脚本回放,这三种模式下面会详细分析;GUI Map是为了简化脚本,识别GUI对象和提高脚本的可维护性而设立的一个功能模块,这个模块和QARun中的Map模块的功能是一样的。

Robot区别于其它两个工具的一个显著的特点,就是Robot可以执行部分性能测试的功能,即性能测试脚本的生成。而其它两个公司将性能测试工具和功能测试工具分的很清楚,MI公司的性能测试工具就是LoadRunner,LoadRunner负责从脚本的生成、执行到测试结果的查看等全部与性能测试有关的工作。和MI公司的分法一样,Compuware公司将性能测试功能完全交由QALoad完成。像Rational公司这种将功能测试和部分性能测试集成到一个工具中的做法,虽然对功能测试没有什么影响,但总让人感觉工具划分不清楚,特别是性能测试,脚本生成在Robot中,而执行要在TestManager中,显得有点麻烦。而其它两个公司的工具划分就感觉很好,功能测试、性能测试和管理工具都是相互独立的,学习和使用起来比较方便。

另外一个特点就是Robot虽然能够执行功能测试,但是测试结果要在测试管理工具TestManager中查看,所以Robot对管理工具的依赖性比较强,从而显得其独立性比较差。

QARun比较特殊的地方是有一个Events的模块和一个Dialog模块,Events模块和WinRunner中的同步点模块的功能是相近的,是为了使脚本执行和被测应用程序响应更好的同步而设立的。Dialog模块是为了增强脚本功能而设立的,下面会详细介绍。

软件测试技术方法的比较与分析

5.3测试步骤

(1)WinRunner

使用WinRunner进行自动化功能测试,主要有下面六个步骤:

图5.4 WinRunner进行功能测试步骤

其中Create GUI Map、Debug Tests这两个步骤不是必须的。

(2)Rational Robot

使用Robot进行功能测试有如下八个步骤:

图5.5 Robot进行功能测试步骤

其中Debug Tests、Compile Tests(Run Tests步骤中会先进行脚本的编译)这两个步骤不是必须的。

(3)QARun

使用QARun进行功能测试主要有下面九个步骤:

图5.6 QARun进行功能测试步骤

其中Create Map、Debug Tests、Compile Tests(Run Tests步骤中会先进行脚本的编译)这三个步骤不是必须的。

(4)比较

从上面三个工具的测试步骤图,可以看出,三者都要有创建测试、调试测试、运行测试、查看测试结果、报告缺陷这些步骤。Robot比其它两个工具少了创建对象映射这个步骤(不是说Robot中没有对象映射,而是Robot中对象映射只可以查看和捕获,不能手工修改某个对象的映射)。WinRunner比其它两个工具少了创建测试项

软件测试技术方法的比较与分析

目、登录项目、编译测试这三个步骤。从测试步骤上我们也可以看出,WinRunner的独立性比Robot和QARun要强,Robot、QARun与测试管理工具的结合更紧密[19-22]。

5.4 GUI对象识别

三种工具都是基于捕捉/回放的测试原理,既然要回放用户的操作,那么用户操作的对象的识别就是一个很重要的要解决的问题。在这三种工具中都采用了一种叫做对象映射的技术,就是一个实际的窗口对象用一个逻辑名来标示,而这个逻辑名对应的是这个对象的实际物理描述。这种技术的第一个好处就是即使某个对象在窗口中的位置变了,该对象仍可以被正确的识别,这就大大增强了脚本的生命力;另外一个好处就是如果一个对象的物理描述变了,不必去修改脚本,只需要修改该对象的映射即可,当然前提是在工具中提供这种对象映射修改的功能。在WinRunner和QARun里面这些对象映射是可以编辑的,Robot中不可以编辑。所以就这一点来说Robot的脚本的可维护性不如另外两个工具。

下面让我们详细看一下三个工具都为GUI对象识别提供了那些功能[19,21-22]:

(1)WinRunner

GUI Map是WinRunner 在Context Sensitive模式下录制的脚本回放时识别被测软件GUI对象的依据。在WinRunner中提供了两种GUI Map File模式,一种是Global GUI Map File;一种是GUI Map File per Test。前一种模式下所有的测试都使用的都是同一个GUI Map文件;后一种模式下,每一个测试都有一个单独的GUI Map文件。有三种方式创建GUI Map:

①RapidTest Script向导

通过该向导你可以轻松的将被测试软件所包含的所有GUI对象加入到GUI Map中。

②GUI Map Editor

下图是GUI Map Editor的窗口:

软件测试技术方法的比较与分析

图5.7 GUI Map Editor的窗口

通过这个编辑器可以将一个GUI对象或一个窗口中的所有对象加入GUI Map中。另外如果一个GUI对象的名称或物理描述信息改变了的话,可以在该编辑器中打开相应得GUI Map文件,修改相应的信息。该编辑器还提供了两个不同GUI Map文件间GUI对象映射相互拷贝的功能。

③自动录制脚本过程由WinRunner自动将遇到的每一个GUI对象加入GUI Map中。

WinRunner能够识别标准的GUI对象,但也有一些非标准的对象无法在WinRunner内置的对象类型中找到匹配。为了解决这个问题,WinRunner提供了虚拟的对象映射,将一个未知类型的对象映射到一个与其相近的类型。WinRunner还提供了脚本拼接的功能,可以将两个或多个比较小的GUI Map文件拼接成比较大的GUI Map文件。

(2)Rational Robot

虽然Robot也是采用了对象映射技术来识别GUI对象,但是它提供的关于这方面的功能比较弱,而且很多功能都对用户隐藏了。它不支持GUI Map的编辑,所以如果一个GUI对象的物理描述改变了,为了使用先前的脚本,只有去修改脚本,如果是一两个脚本,还好修改,如果成百上千的脚本都与该对象有关的话,那修改起来就不是一件容易的事情了。下面是Robot提供的一个查看GUI映射的一个对话框,名称是Inspector:

软件测试技术方法的比较与分析

图5.8查看GUI映射

Robot在录制脚本和回放脚本的过程中,会将整个桌面上的所有对象包括隐含的对象,全都建立映射。从上面的窗口中我们也可以看出,最上一级是Desktop,下面就是包含在Desktop中的所有对象,然后每个对象的子对象也都会建立映射。所以Robot建立的GUI对象映射很全,执行Robot的脚本,一般不用担心脚本中某个逻辑名对应的对象找不到的问题,除非对象的物理属性改变了。

(3)QARun

QARun将GUI对象映射分成了三类:对象映射(object mapping)、别名映射(alias mapping)、图像映射(image mapping)。QARun针对这三种映射提供了相应的编辑器,用户可以通过这些编辑器查看、添加、修改对象映射。在QARun录制脚本的过程中,它会自动建立用户操作的GUI对象的映射,这点同WinRunner相似。

需要特殊指出的是别名映射(alias mapping), 它是将一个非标准的类对象映射为一个标准的控件类型,这点与WinRunner中的虚拟对象映射相似。QARun遇到一个非标准的对象的时候,它就放弃对象的记录,而只是仅仅鼠标和键盘的响应。这可以保证脚本可以正确的回放,但是使得脚本的理解和维护变得困难起来。

(4)比较

从上面的分析,我们可以得到如下结论:

软件测试技术方法的比较与分析

三种工具虽然都使用了对象映射技术来识别GUI对象,但就功能来说WinRunner和QARun比较强,这两个工具支持对象映射文件的编辑,所以当测试的系统的某个对象改变了的话,测试人员只需要修改相应对象的GUI映射,而不是去修改成百上千的脚本。Robot由于并没有给出一个可以让用户对GUI映射操作的一个机制,所以如果一个测试对象改变了,就只有去修改所有与该对象有关的脚本或者从新建立测试,这是一个很烦人的工作。

5.5脚本执行与被测程序响应的同步问题

三种工具都是根据脚本中的命令,调用操作系统提供的API控制鼠标和键盘对被测程序进行操作,这个过程中存在一个很明显的问题就是脚本的执行速度一般要比被测试程序的响应要快,那么如何保持脚本的执行与被测程序的响应同步,有两种方法解决这个问题:第一种是在每个需要延时执行的脚本指令后面插入一个合适的等待时间。第二种就是在需要延时执行的指令前面插入一个等待某个事件或对象出现的操作,当响应的对象或事件出现时,再继续执行脚本。就第一种方法来说,合适的等待时间很难确定,因为不同的机器,就算同一台机器,程序的执行速度也有可能不一样,所以这个合适的等待时间一般是一个足够长的时间。而第二种方法就很好,只要某个对象或事件出现,说明被测程序的响应已经完毕,脚本就继续往下执行。

下表是对WinRunner、Robot和QARun处理脚本执行速度与被测程序响应同步问题的一个比较:

软件测试技术方法的比较与分析

很显然,Robot对这个问题的处理功能比较弱,它根据录制脚本时估计的时间来决定某个脚本命令执行完后的等待时间,往往为了确保被测程序能够在下一行脚本指令执行前,插入的等待时间都比较长,浪费了时间。

QARun中的Events和WinRunner中的同步点的功能是一样的。脚本运行过程中到某个命令的事候要等待某个对象或事件的出现,就可以插入事件点。这使得脚本的执行显得智能化,要比单纯的设定delay多少时间要强的多[23]。

5.6测试信息收集

使用这些自动化的功能测试工具,最后要看的就是测试结果,那么测试工具在测试过程中对测试信息的收集能力对于测试结果是否全面正确有着很大的影响。经过的对三个工具的实际使用,我们发现这三个工具对于测试信息的收集能力都是很全面的,主要有检查点的信息(不同的检查点会给出不同的比较结果窗口,很容易发现测试过程中捕获到的值与期望值的差别在那里);脚本执行的过程中遇到的错误信息,如指令操作的GUI对象缺失、错误的指令格式、错误的函数参数等。

5.7结合测试管理工具

从上面的分析和比较过程中,我们可以看出三个工具虽然都有一定的独立性,特别是WinRunner,完全可以离开管理工具,独立

软件测试技术方法的比较与分析

完成自动化的功能测试,但如果结合配套的管理工具一起使用的话,不单可以实现单独的功能测试工具不能完成的工作,还可以大大提高测试效率、使测试专业化,达到事半功倍的效果。

WinRunner、Robot和QARun都提供了和配套测试管理工具的接口,结合相应的测试工具,就可以完成测试需求建立、测试用例设计、测试脚本创建、测试运行、测试结果分析、缺陷跟踪等一套完整的测试流程。

5.8比较总结

软件测试技术方法的比较与分析

6.测试管理工具的分析与比较

测试管理工具对于正规的软件测试来说是必不可少的。测试管理工具不仅是测试人员和开发人员互相交流信息的一个平台,它还负责完成测试需求建立、测试用例设计、测试安排、缺陷跟踪等功能。在软件测试中使用优秀的测试管理工具不但可以大大减少测试过程中出现错误的可能性,还可以极大的提高测试的效率,加快测试进程。

MI公司、Rational公司和Compuware公司开发的与其测试工具配套的管理工具都是十分优秀的测试管理工具,而且各有特色。下面就从工具结构、功能等方面对三个公司的测试管理工具做一个分析和比较。

分析和比较的测试管理工具(所属工具集)的版本及软件平台情况如下表:

表6.1测试管理工具版本及平台

6.1工具特点

系统结构不同。TestDirector是基于WEB的测试管理系统,它是一种B/S结构的系统,通过互联网和浏览器,允许一定数量的用户(不同的License的允许并发访问的用户数不同)通过不同的主机同时使用,就像每台机器上都安装了TestDirectro一般。而其它两个公司的测试管理系统是基于C/S结构的系统,如果一个测试人员要使用该测试管理系统的话,他必须在自己的机器上安装该系统才行。

工具的集成度不同。TestDirector一个工具集成了所有与测试管理相关的功能,包括测试项目管理、测试用例设计、测试计划

软件测试技术方法的比较与分析

安排、缺陷跟踪等。而其它两个公司的测试管理工具都有好几个工具组成,这些工具结合共同完成测试管理的功能[13-14]。

测试资源访问结构不同。三种测试管理工具都是采用中央数据仓库来共享和管理测试资源,使用的都是第三方的数据库。三个公司的测试工具和管理工具对测试资源的访问分别如下图:

图6.1 MI工具测试资源组织访问图

图6.2Rational和Compuware工具测试资源组织访问图

从上图中我们可以看出,MI公司的测试管理工具TestDirector是测试工具访问其它测试资源的中介,所有相关的测试工具与测试资源的交互(即与第三方数据库交互)都是通过TestDirector完成的。而另外两个公司的工具,不管是测试工具还是测试管理工具,都直接与数据库交互来访问测试资源。

三个公司的工具对于第三方的数据库支持大同小异,都支持当今主流的数据库。MI公司的TestDirector标准版支持Microsoft Access,如果是企业版还支持Sybase, Microsoft SQL, Oracle。Rational公司和Compuware的测试管理工具集中的每个工具支

软件测试技术方法的比较与分析

的数据库不同:

6.2测试项目

每进行一个测试时首先要创建测试项目,由于测试工具的集成度和结构不一样,所以造成了三个公司的测试管理工具创建测试项目的不同。

创建项目的复杂度不同。MI公司的TestDirector创建测试项目最简单,只需要输入一个项目名称即可,其它的像数据库创建等系统会自动帮你完成,创建好的项目还可以随时随地通过互联网更改它的配置。其它两个公司的测试管理工具的项目创建,都要有复杂的数据库创建过程,一个测试项目创建,还要根据它提供的数据库表创建文件人工创建数据库,另外,由于它们的需求管理和缺陷管理工具的独立性,还要将需求项目和缺陷管理项目与测试项目结合。

测试项目各阶段实施的工具支持力度不同。由于MI公司的TestDirector本身是一个完整的工具,所有的测试工作都只有在一个测试项目创建后才能开展,测试项目下面是需求建立、测试用例设计、测试安排、缺陷管理等,而且所有的这些内容都存放在测试项目建立时所创建的同一个数据库中,所以总体来说TestDirector的测试项目是一个不可分割的整体。而Rational和Compuware的测试项目则不一样,在它们的测试项目创建前你完全可以使用它们的需求管理工具创建完成测试需求,缺陷跟踪工具创

软件测试技术方法的比较与分析

建好缺陷跟踪的项目,然后创建测试项目时将这些需求和缺项项目与测试项目联系起来。

6.3测试人员管理

如果一个软件测试过程中有很多人员参与的话,那么对这些参与测试的人员的管理就显得非常重要,如何合理的调配和管理人员,对于提高测试的效率有很大的影响。三个公司的测试管理工具都有明确的管理测试人员(即用户)的功能模块,TestDirector有两个地方可以进行用户的管理,一个是Site Administrator页面,一个是CUSTOMIZE页面;Rational的Rational Administrator即负责测试项目创建又负责测试人员的管理;和Rational的工具一样,Compuware公司的QADirector Administrator也是即负责测试项目的创建也负责测试人员的管理。这三个工具都提供了用户密码保护、用户添加、更改、删除等必备功能,另外,都可以订制用户对测试资源操作和访问的权限。虽然三个公司的管理工具对于测试人员的管理从整体功能上来说是相同的,但是在一些细节的实现方面还是有一些不同。

首先,三个工具对测试人员的划分不同。MI的测试管理工具和Rational的测试管理工具都是用角色来划分测试人员即系统的用户,它们规定每个角色对测试资源的操作和访问权限以及对某个测试管理工具的某个功能模块的访问权限,而不去规定某个实际的用户的权限,当向系统添加一个用户时,只需要指定用户是那种角色就行了,如:Tester、Administrator、TestLeader等,如果没有合适的角色,系统还允许订制自己的角色,你可以为自己订制的角色分配权限,并将其添加到角色库中,供以后使用。不过,MI和Rational的这两套工具对于测试资源和工具模块的操作和访问权限划分的粒度不同,TestDirector相对于Rational Administrator来说对角色的权限的划分要详细地多,所以TestDirector对于角色的定义要灵活的多。Compuware的QADirector Administrator中对测试人员(即用户)的管理没有

软件测试技术方法的比较与分析

角色的概念,每加入一个用户,都要订制其权限,而且权限划分也不是很细,订制用户权限的灵活性比较差。

其次,它们对测试人员的管理方法不同。TestDirector中采用了对测试人员集中管理的方法,不管是项目A的测试人员还是项目B的测试人员,也不管项目A和B有没有创建,都可以在TestDirector提供的用户管理模块中添加用户,当一个测试项目创建后,你可以为测试项目分配用户,也可以将一个用户指定为某个项目的人员,所以TestDirector对于测试人员(即用户)的管理显得非常的灵活、简单。其它两个公司的管理工具来说,它们的测试人员是依附于测试项目而存在的。首先,要先创建一个测试项目,然后才能为每个测试项目添加相应的用户,而且不同的测试项目的用户是相互独立的。而往往一个测试团队的人员是固定的,它们的职责也是固定的,它们作为测试工具的使用者也是固定的,所以Rational和Compuware公司的管理工具让测试人员依附于测试项目而存在的方法使得每建一个测试项目都要重复添加一次系统用户,显得比较繁琐[19-22]。

6.4测试计划

测试计划就是针对测试项目创建一个完整的测试计划,主要包括测试用例的设计、测试脚本的创建等工作。下面就MI和Rational两个公司的测试管理工具TestDirector和TestMananger中建立测试计划的功能作一个分析和比较。

MI的TestDirector中的Test Plan模块就是创建测试计划的一个平台,它提供了各种功能以方便测试计划的创建。

首先,使用TestDirector可以定义测试。Test Plan模块提供了树形结构来组织和定义测试,你可以根据被测软件的功能模块将一个大的测试划分为小的测试,这些测试用文件夹来区分,然后向这些文件夹中添加具体的测试,针对测试执行使用工具的不同,新建一个测试的时候,TestDirector提供了如下几种测试类型:手工测试、WinRunner自动化测试、LoadRunner自动化测试、VAPI

软件测试技术方法的比较与分析

测试、QuickTest测试、Astra LoadTest测试、Xunner测试、System测试等供选择,而且这些不同类型的测试都会用不同的图标来区别,根据图标可以很容易的知道测试的类型。

使用TestDirector可以轻松的将测试和需求联系起来。测试计划中的测试要与原始的测试需求相吻合是最基本的要求。上面已经提到了TestDirector中可以很方便的将一个测试需求和对应的测试联系起来。同样的方法,TestDirector为了保证测试对测试需求的覆盖率,可以通过将测试计划树中的每一个测试与测试需求树中的一个或多个需求相联系方法创建一个测试覆盖。

对测试步骤设计的支持。通过向测试计划树中的测试添加测试步骤的方法来定义测试操作过程。测试步骤描述了测试的操作,要检查的点,和每个测试期望的输出等信息。对于设计完测试步骤的测试,可以根据其测试类型(是手工测试还是自动化测试)使用相应的测试工具来创建相应的测试脚本。

生成报告和图表以助于分析测试数据。这个功能可以帮助你重新浏览测试以确定它们是否符合测试目标。另外,TestDirector的Test Plan模块中还提供了邮件发送功能,你可以很轻松的将设计好的测试发送给测试项目组成员中的任何一个人。对于每一个测试还允许为它添加任何类型的附件。

Rational TestManager是Rational测试管理工具集中的核心工具,在TestManager中,一个测试计划是一个Rational测试数据存储的资源(asset)。一个项目可以有一个或多个测试计划。而且可以根据测试情况的需要任意的组织它们,可以为整个项目制定一个测试计划,你也可以为项目的每一个主要的component指定一个测试计划。

Rational的一个测试计划是由测试用例文件夹组成,每个测试用例文件夹中是具体的测试用例。每个测试用例可以选择是手工的测试用例还是自动化的测试用例,其中自动化的测试用例也有多种不同工具的选择,包括功能的和性能的,针对每个测试用例,你还可以设计其测试步骤,包括测试操作、检查点、输出等,还要指

软件测试技术方法的比较与分析

定与测试用例相联系的测试脚本,这些东西和TestDirector是相同的。不过Rational TestManager的测试用例还有以下两个特殊的地方:

第一,可以指定外部文件作为测试用例的输入。有三种不同的测试用例输入文件:测试需求文件(Rational RequisitePro创建的需求)、Rational Rose项目、Excel文件。可见Rational的测试工具还和其建模工具结合了起来,如果要测试的软件使用Rational Rose来建模的,使用Rational的测试工具也不失为一种很好的选择,可以省去很多重复的工作。

第二,在TestManager中创建所有的测试用例,然后用interations来指定一个指定的测试用例什么时候运行和通过。一个iteration是在一个项目进行中定义的一个时间段。一个iteration是一个主要的项目转折点。在一个iteration中,产品要符合某种质量标准以达到某个转折点,质量标准是由测试用例定义的必须通过的。在许多组织者中,测试员和分析员或项目经理决定在那一个iterations测试用例需要通过。使用Rational TestManager的这个功能,可以更加严密的监视测试是否符合要求,更容易保证被测软件的质量。

另外,Rational TestManager还提供了测试影响分析的功能。测试影响分析对于确定测试脚本是否为所有的测试需求提供了完全的覆盖是很重要的。当测试需求改变的时候,TestManager会提示你这些改变对测试计划的影响。比如:如果一个需求因为某种原因改变了,你想知道测试计划中的那些测试用例受到了影响,那么你可以update它们以反映需求的变化。TestManager会自动将受到影响的测试用例标记上“suspect”。

Rational TestMananger还提供了针对测试计划生成各种报告的功能。这些报告可以帮助你分析测试计划,找出其中的缺陷。

从上面对两个工具的分析,我们可以看出,在测试计划建立方面,两个工具的功能有很多相同的地方,比如:测试计划的组织方式是相同的,一个大的测试项目可以细化为小的测试计划,测试计

软件测试技术方法的比较与分析

划下面是测试用例文件夹,测试用例文件夹中是具体的测试用例,都用树形结构来管理测试计划;都可以生成相应的报告,来查看测试计划的完整性等。另外,两个工具也各有其特色的地方,TestDirector对测试计划邮件发送功能的支持、直观的测试需求和测试计划的联系等是TestManager所不具备的;而TestManager对多种测试用例输入的支持、对测试用例的监督机制、测试影响分析功能等又是TestDirector所没有的[13,19,21,23]。

6.5比较总结[24]

软件测试技术方法的比较与分析

软件测试技术方法的比较与分析

7.总结语

软件测试是确保软件质量的重要方法,忽略了软件测试,就是不重视软件质量。自动化测试是提高软件测试效率的重要方法,忽视自动化测试工具在软件测试中的应用,就是浪费时间、人力和物力。MI公司、Rational公司和Compuware公司,三个公司的都开发了一套完整的自动化测试工具和管理工具,这些工具都可以执行完整的自动化测试,但也各有千秋,而且这些工具还在不断的完善,功能还在不断的增强。另外由于时间有限,本文对这些工具的比较还有很多未涉及之处,而且可能有些地方还不太妥当,希望今后有更多的人对这些工具做出比较,以帮助要使用这些工具的公司或单位作出更好的抉择。


相关文章

  • 临床化学检验中干扰物质的筛选
  • ・610・ ian划.Med LabSci.December2007,Vol25,N06 ・讲座・ 临床化学检验中干扰物质的筛选 吕赛平t伍志杰.邹学森,中图分类号R446.1.0231.1 文献标识码C 文章编号1008-0023(200 ...查看


  • 校园环境保护论文大学生环境保护论文 1
  • "校园环境保护"动漫设计摘要:据统计到2003年止,在环境保护立法方面,我国已缔结多边环境公约21项.双边环境协定21项,颁布环境保护法律6部.与环境有关的资源法律9部,环境保护行政法规29项.环境标准364项,国务院环 ...查看


  • 一种缝隙耦合二元贴片天线的设计
  • 电子科技20cr7年第12期(总第219期) 一种缝隙耦合二元贴片天线的设计 白国新,傅 光,熊向飞 (西安电子科技大学天线与微波技术国家重点实验室,陕西西安710ar71) 摘要设计并制作了一种移动裁体上安装的方位面宽波束的二元微带天线阵 ...查看


  • 基于数字图像处理的印刷电路板缺陷检测
  • 2012年仪表技术与传感器 2012第8期 In8tmment Technique 明dSensor No.8 基于数字图像处理的印刷电路板缺陷检测 李正明,黎宏,孙俊 (江苏大学电气信息工程学院,江苏镇江212013) 摘要:针对传统PC ...查看


  • 毕业设计论文_人脸识别系统
  • 摘要 人脸识别因其在安全验证系统.信用卡验证.医学.档案管理.视频会议.人机 交互.系统公安(罪犯识别等)等方面的巨大应用前景而越来越成为当前模式识别和人工智能领域的一个研究热点. 本文提出了基于24位彩色图像对人脸进行识别的方法,介绍的主 ...查看


  • 硕士论文开题报告的模板和说明
  • 硕士论文开题报告 论 文 名 称: 姓 名: 学 号: 专 业: 所 属 院 系: 学院指导老师: 企业指导老师: 指导老师单位: 论文起止时间: 开题报告目录模版 目 录 1.选题背景及意义 ....................... ...查看


  • 肘关节屈伸肌群等速肌力的测定与分析
  • 第27卷第1期2008年2月 福建体育科技 FujianSportsScienceandTechnology V01.27.No.1 Febmary2008 肘关节屈伸肌群等速肌力的测定与分析 刘丽霞,陈华,刘一平 (福建师范大学体育科学学 ...查看


  • 毕业论文文献综述基于SPSS的多元回归分析模型选取的应用 之文献综述
  • 基于SPSS 的多元回归分析模型选取的应用 文献综述 重庆工商大学 统计学 2010级 统计2班 殷婷 引 言 随着社会的发展,统计的运用范围越来越广泛,统计学作为高等院校经济类专业和工商管理类专业的核心课程,不管是在经济管理领域,或是在军 ...查看


  • 齿轮箱箱体的有限元模态与试验模态分析
  • 第3l卷第05期煤矿机械 VoI.31No.052010年 05月 CoalMineMachinery May.2010 齿轮箱箱体的有限元模态与试验模态分析木 范江东.潘宏侠 (中北大学机械工程与自动化学院.太原030051) 摘要:利用 ...查看


热门内容