软件测试方法技术的研究与对比-毕业论文_第1页
软件测试方法技术的研究与对比-毕业论文_第2页
软件测试方法技术的研究与对比-毕业论文_第3页
软件测试方法技术的研究与对比-毕业论文_第4页
软件测试方法技术的研究与对比-毕业论文_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEIII-软件测试方法技术的研究与对比作者姓名:陈锡铭学科、专业:学号:指导教师:完成日期:XX大学XXXX

软件测试方法技术的研究与对比总计:毕业论文64页表格14表插图22幅指导教师:评阅人:完成日期:-PAGEIV--目录1.绪论 11.1论文的研究背景及意义 11.2论文的主要研究工作及成果 11.3论文的组织结构 22.软件测试技术的概论 32.1软件测试的定义与目的 32.2软件测试的过程 32.3软件测试的分类及主要方法 42.3.1按测试过程划分 42.3.2按工作状态划分 52.3.3按测试用例设计方法划分 62.3.4按测试目的划分 83.自动化测试技术基础 93.1自动化测试概念 93.1.1自动化测试 93.1.2自动化测试的优点 93.1.3自动化测试的局限性 113.2自动化测试的适用范围 124.主流自动化测试工具简介 154.1MI(MercuryInteractive)公司的测试软件 154.1.1管理工具 164.1.2测试工具 164.2Rational公司的测试软件 174.2.1管理工具 174.2.2测试工具 194.3Compuware公司的测试软件 204.3.1管理工具 214.3.2测试工具 225.自动化功能测试工具的分析比较与总结 235.1测试环境和对象 235.2工具功能模块详细划分 255.3测试步骤 285.4GUI对象识别 295.5脚本执行与被测程序响应的同步问题 325.6测试信息收集 335.7结合测试管理工具 335.8比较总结 346.测试管理工具的分析与比较 356.1工具特点 356.2测试项目 376.3测试人员管理 386.4测试计划 396.5比较总结 427.总结语 44参考文献 45附录1外文译文 47附录2外文原文 54 63软件测试技术方法的比较与分析PAGE64软件测试技术方法的比较与分析1.绪论1.1论文的研究背景及意义近几年,随着软件规模不断扩大,软件复杂度不断增加,客户要求不断提高,如何保证软件质量,提高软件可靠性也越来越受到各研究机构、相关企业的普遍关注,同时成为软件开发机构特别关注的方向。目前,许多能有效提高软件质量的质量保证技术相继问世,例如,几乎所有的大型软件开发机构都结合自身软件开发实际和经验制定了相关的质量标准来规范企业内部的软件开发过程,有些机构在这两年陆续成立了与软件开发相独立的软件测试中心来保证开发出来的软件可用,在开发过程中增加了许多环节(如软件配置管理、阶段性测试和评审)用来保证开发出来的软件具有高可靠性。软件测试技术作为保障软件质量最直接、最有效的手段之一也成为重要的研究热点,但是由于软件本身的复杂性和不确定性,软件测试技术始终具有极大的难度。深入研究软件测试技术方法,提高软件可靠性,已经成为国内外软件行业和相关机构重要的研究方向[1]。正确选择和有效地运用各种测试方法、技术和工具,对提高软件工程的应用水平和提高软件产品的质量与可靠性至关重要。而在软件测试中使用优秀的测试管理工具不但可以大大减少测试过程中出现错误的可能性,还可以极大的提高测试的效率,加快测试进程。1.2论文的主要研究工作及成果论文主要对软件测试、测试技术(工具、方法)、自动化测试以及测试管理技术(工具、方法)进行理论阐述和综合论述;然后进行综合分析、比较、总结。通过查阅文献资料和对主流工具软件和相关技术的深入学习可完成软件测试技术方法的比较与分析研究内容。在这个论文研究过程中,可以学会正确选择和有效地运用各种测试方法、技术和工具。1.3论文的组织结构论文的组织结构如图1.1所示:3.自动化测试技术基础3.自动化测试技术基础1.绪论2.软件测试技术概述4.主流自动化测试工具简介6.测试管理工具分析与比较5.自动化功能测试工具分析与比较7.结束语图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.1各类型测试进行自动化可见重复性比较高的回归测试,以及手工测试难以完成的性能测试是自动化测试最有潜力应用和最能体现价值的地方,而早期的单元测试中如果引入自动化,也将大大提高开发出的代码质量。当决定在一个产品的测试过程中实现自动化测试的时候,必须将自动化测试手工测试结合起来使用。目的就是用较少的开销,获得彻底的测试,并提高商品的质量。下表对何时使用自动化测试和何时使用手工测试进行了一个概要的总结。表3.2何时使用自动化测试和手工测试4.主流自动化测试工具简介自动化测试需要不同类型的自动化测试工具进行支持。目前,软件市场上已经有很多优秀的自动化测试工具,它们功能强大,有针对功能的,也有针对性能的,有执行白盒测试的测试工具也有执行黑盒的测试工具。主流的商业化的自动化测试工具软件开发公司是:MercuryInteractive公司、IBMRational公司和Compuware公司。三个公司都开发了一整套自动化测试工具,这些自动化测试工具都经过无数的实际运用,都是非常优秀的自动化测试工具。一个完整地自动化软件测试工具,应该包括测试管理工具、功能测试工具、性能测试工具三个部分。下面就目前Windows操作系统下的主流的自动化测试工具作一个整体的介绍。4.1MI(MercuryInteractive)公司的测试软件MercuryInteractive公司是商业技术优化的业界领导者。它成立于1989年,目前,和全球超过35个国家都有贸易往来。全球100强公司中有将近90%的公司依靠MI公司的软件和服务来实施他们的商业技术优化策略。这使得MI公司成为世界上最大的、成长最快的企业级软件公司。该公司开发的自动化测试工具以其功能强大、完善的售后服务和支持,使其成为了自动化测试软件开发领域的领先者。MI主要测试软件的构成如下图[13]:图4.1MI主要测试软件的构成下面对上图的工具作一个概括的介绍。4.1.1管理工具TestDirector是MI自动化测试工具集中的测试管理工具,它是业界第一个基于WEB的测试管理系统。使用TD及其配套的功能和性能等测试工具,可以组织全球范围的测试。TestDirector通过在一个整体的应用系统中提供并且集成了测试需求管理、测试计划、测试日程控制及测试执行和错误跟踪等功能,通过使用这些功能可以使测试专业化,提高测试的效率,加速测试的过程。TestDirector主要有三大功能模块构成:(1)SiteAdministrator该模块的主要功能是:创建测试域,创建和维护测试项目,管理测试人员,查看测试项目的访问情况,配置注册码。(2)Customer在该功能模块中,TD用户(即测试人员或其他与测试相关的人员)可以订制和修改用户的一些信息。包括:修改用户信息、创建新的用户类型和用户组类型,订制模块的访问权限,订制项目实体和列表,配置邮件,调整工作流等。(3)TestManager这个模块是TestDirector的主要功能的所在。它主要集成了需求指定、建立测试计划、执行测试、缺陷跟踪四个功能模块。4.1.2测试工具MI的测试工具主要有功能测试工具WinRunner和性能测试工具LoadRunner,下面对这两个工具作一个概括的介绍。(1)WinRunner针对Windows应用程序的一个企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。它通过自动录制、检测和回放用户的应用操作,来发现程序中的错误。可以有效地帮助测试人员对复杂的企业级应用软件的不同发布版本进行测试,提高测试人员的工作效率和质量。确保跨平台的、复杂的企业级应用软件无故障发布和长期稳定的运行。(2)LoadRunner黑盒性能测试工具。4.2Rational公司的测试软件Rational公司是软件业中领先的应用开发工具供应商,提供基于业界开放标准的工具、最佳方案和服务,用于开发商业应用和构建软件产品和系统。2002年Rational公司被IBM公司收购。对于Rational公司的产品,我们比较熟悉的是它的建模工具,它的测试工具同它的建模工具一样优秀。Rational的测试工具RationalSuiteTestStudio的构成如下图[14]:图4.2RationalSuiteTestStudio的构成4.2.1管理工具RationalSuiteTestStudio测试工具集中的管理工具主要有五个子工具组成,它们结合起来,完成一个完整的测试管理工具的功能。下面就上面各个管理工具的功能作一个概括的介绍。(1)RationalTestManagerTestManager处于测试管理工具的核心位置。它是一个开放的可扩展的架构,将其它的工具和测试数据联合为一个整体。在TestManager中主要可以完成建立测试计划、安排测试、执行测试、查看测试结果和分析测试结果等工作。(2)RationalAdministratorRationalAdministrator集中了测试项目的管理功能,可以创建测试项目,管理相关的人员,包括测试人员和有关的开发人员。它的详细功能如下:①创建一个Rational测试项目,配置项目的有关信息。②连接某个测试项目。③通过网络操作远程的测试项目。④删除一个测试项目。⑤创建和管理测试人员和用户组。⑥创建和管理包含RequisitePro项目和Rose项目的测试项目。⑦控制一个Rational测试项目的测试数据的安全权限。(3)RationalRequisiteProRationalRequisitePro是一个需求管理的工具,它可帮助项目团队控制开发的进度。它通过将MicrosoftWord和一个需求仓库连接来组织测试需求,它还提供了跟踪功能,并且在整个项目的生命周期内可以随时改变需求。利用RequisitePro你可以完成如下工作:①定制需求数据库和管理多种不同类型的测试。②指定优先级,排序和安排需求。③控制特征变形,确保软件质量。④跟踪产生的变化,包括这些改变是谁做出的、什么时候、为什么。(4)RationalClearQuest在ClearQuest中进行缺陷的跟踪和管理。通过ClearQuest可以将测试中发现的缺陷直接发送给相应的测试人员,集中管理某个测试项目的缺陷,并跟踪缺陷的修复情况。(5)RationalSoDA文档生成工具,测试需求、测试结果、缺陷报告等测试信息可以通过SoDA这个工具生成详细的报表。4.2.2测试工具RationalSuiteTestStudio测试工具集中的测试工具比较全面,既有功能和性能的测试工具,也有代码级的黑盒和白盒测试工具。(1)RationalRobotRationalRobot集成了功能测试和性能测试两种功能。使用Robot可以创建两种类型的测试脚本:基于GUI对象的功能测试脚本和用于性能测试的脚本。功能测试脚本可以在Robot中直接运行,而性能测试的脚本要在TestManager中运行。(2)RationalQuantifyRationalQuantify提供了一个完整的、精确的针对被测应用程序和相关组件的一个性能测试数据集合,同过图表等易于理解和观察的方式显示出来,可以很容易看出被测程序那个地方耗费了较多时间,然后优化修改耗费时间较多的代码,提高程序执行效率。RationalQuantify主要适用的应用程序的对象是:VisualC/C++开发的.exe,.dlls,OLE/ActiveX控件以及COM对象组件;VisualBasic开发的应用程序;Java语言开发的应用程序;C#语言开发的应用程序等。(3)RationalPurify检测内存泄露的白盒测试工具。(4)RationalPureCoverage测试代码覆盖率的白盒测试工具。(5)RationalTestFactory它是一个基于组件的测试工具,主要功能如下:①根据程序的导航结构自动生成TestFactory脚本。②自动创建和维护一个被测软件的详细map。③不用记录,自动生成提供扩展代码覆盖率的脚本和发现缺陷的脚本。④追踪运行过的或未运行过的源代码,并且报告它的详细的发现。⑤通过最大限度的缩短花费在书写导航代码上的时间来缩短产品的测试周期。⑥在TestFactory中可以回放Robot功能测试脚本一观察扩展代码覆盖率的信息以创建回归测试集;在Robot中也可以回放TestFactory脚本用以调试脚本。(6)RationalSiteCheck网页测试工具,利用RationalSiteCheck可以检查企业内部互联网的结构完整性以及网页错误。可以帮助查看、跟踪和维护迅速变化的页面。利用SiteCheck具体可以做如下事情:①显示网页的结构以及各页面间的关系。②识别和分析带有动态内容的Web页面,如:forms,Java,JavaScript,ActiveX,VBScript。③过滤信息,以利于你观察制定的文件类型和缺陷,包括断开的连接。④检查和编辑任意网页的源代码。⑤利用集成的编辑器更新或修复文件。⑥对安全网页执行全面的测试。SiteCheck提供了SecureScoketLayer(SSL)支持,代理服务器配置以及多密码域。(7)RationalTeamTest团队合作测试工具。4.3Compuware公司的测试软件Compuware公司是世界上最大的软件和专业服务供应商之一。Compuware开发的QACenter测试工具集的主要构成如下图[15]:图4.3QACenter测试工具集4.3.1管理工具(1)QADirectorQADirector处于QACenter管理工具的核心位置,它协调整个测试过程,并提供了一下功能:计划和组织测试需求。调用相应的自动测试工具执行测试。测试过程允许使用手动测试。观察和分析测试结果。方便的将测试结果信息加载到测试缺陷跟踪系统。针对需求验证测试。将分析过程和测试过程结合。(2)Reconcile需求管理工具,组织和管理测试需求。(3)TrackRecordTrackRecord是一个高级的需求变更和缺陷管理工具,可以帮助组织建立一个系统方法来协调软件开发、调试、测试和实现。可进行自动化的软件缺陷的跟踪管理。4.3.2测试工具(1)QARunQARun可以提供C/S系统、电子商务系统和企业资源计划应用提供企业级的功能测试。同WinRunner和RationalRobot能提供的功能一样,可以执行自动化的功能测试。(2)QALoadQALoad是C/S系统、企业资源计划(ERP)和电子商务应用的自动化负载测试工具。它是QACenter测试工具集性能版的一部分。它通过可重复使用的、真实的测试能够彻底的度量应用程序的可扩展性和性能。它可以模拟成百上千的用户并发执行关键的业务完成对应用程的性能测试,并针对所发现的问题对系统性能进行优化,确保软件的成功部署。(3)WebCheck全面的站点分析和测试工具。5.自动化功能测试工具的分析比较与总结WinRunner、RationalRobot和QARun这三个工具都是自动化的功能测试工具,它们针对的测试对象都是使用IDEs(如:支持Java、C/C++、VB、HTML等语言的集成开发环境)开发的带有GUI对象的应用程序,都能够大大降低重复性的测试所耗费的时间,将测试人员从复杂好事的测试工作中解脱出来。我们目前所分析比较WinRunner、RationalRobot、QARun这个三个自动化功能测试工具,都是比较新的版本,并不是最新的版本。但这些不同版本的测试工具首先从功能、原理上都是一样的,而且整体的架构和细节的功能也不会有太大的变化。所以针对下面三个较新版本的工具进行分析和比较,对新版本的工具选择同样具有参考价值。分析和比较的工具对象的版本及软件平台情况如下表:表5.1工具对象的版本及软件平台下面,将从测试步骤、测试结果等方面对这三种工具先作一个详细的分析和介绍,然后根据分析在对这三个工具进行横向的详细比较。5.1测试环境和对象(1)WinRunner我们使用的WinRunner版本是WinRunner7.50。是MI测试软件中比较新的版本。基本上可以完成Windows操作系统下的不同类型软件的自动化功能测试。下表是对WinRunner7.50所支持的环境和被测软件对象的一个总结[16-17]表5.2WinRunner7.50所支持的环境和被测软件对象(2)RationalRobot表5.3所支持的环境和被测软件对象(3)QARun表5.4QARun所支持的环境和被测软件对象5.2工具功能模块详细划分虽然三个工具都是自动化的功能测试工具,从大的方面来说,它们的功能都是一样的,但有许多细节的功能还是有很大区别的。所以,为了更清楚、更详细的认识和比较这三个工具,将这个工具按它的功能模块进行划分,然后针对每个细节的功能进行分析和比较,最后从整体上把握,是最好的方法。(1)WinRunnerWinRunner为了支持完整的功能测试,简化测试难度,使测试人员能够轻松正确的执行测试,内置了许多强大的功能。下图是结合WinRunner的实际使用情况,对它从主要功能上的一个详细的划分[13]。图5.1WinRunner功能划分从上面的功能模块划分图我们可以看出,WinRunner主要13个主功能模块,每个功能模块还有一些更具体的功能。这些功能模块集成到到一起,达到了WinRunner执行完整的自动化功能测试的功能。(2)RationalRobotRationalRobot兼具功能测试的完整功能和性能测试脚本生成的功能,所以从整体上Robot可以分为两大模块:功能测试模块和性能测试模块。对于性能测试来说,Robot只是负责性能测试脚本的生成,所以性能测试模块的功能相对比较单一,而功能测试模块相对的就比较复杂[18]。对Robot的主要功能的详细划分如下图:图5.2Robot功能划分(3)QARun同WinRunner一样,QARun可以执行完整的功能测试,它的所有的功能模块都是为了能够正确、方便的进行功能测试而存在的。QARun的主要功能模块的详细划分如下[15]:图5.3QARun功能划分(4)比较对于功能测试,从整体上来看的话三个工具区别不是太大。都有脚本的录制、回放;检查点;一些与脚本的录制和回放有关的选项设置WinRunner与其两个工具主要有如下几个不同的地方:FontExpert功能模块,脚本的执行模块,GUIMap模块。FontExpert是为了WinRunner能够识别不同的字体而加入的一个具有字体学习功能的模块;脚本执行模块提供了三种模式下的脚本回放,这三种模式下面会详细分析;GUIMap是为了简化脚本,识别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.4WinRunner进行功能测试步骤其中CreateGUIMap、DebugTests这两个步骤不是必须的。(2)RationalRobot使用Robot进行功能测试有如下八个步骤:图5.5Robot进行功能测试步骤其中DebugTests、CompileTests(RunTests步骤中会先进行脚本的编译)这两个步骤不是必须的。(3)QARun使用QARun进行功能测试主要有下面九个步骤:图5.6QARun进行功能测试步骤其中CreateMap、DebugTests、CompileTests(RunTests步骤中会先进行脚本的编译)这三个步骤不是必须的。(4)比较从上面三个工具的测试步骤图,可以看出,三者都要有创建测试、调试测试、运行测试、查看测试结果、报告缺陷这些步骤。Robot比其它两个工具少了创建对象映射这个步骤(不是说Robot中没有对象映射,而是Robot中对象映射只可以查看和捕获,不能手工修改某个对象的映射)。WinRunner比其它两个工具少了创建测试项目、登录项目、编译测试这三个步骤。从测试步骤上我们也可以看出,WinRunner的独立性比Robot和QARun要强,Robot、QARun与测试管理工具的结合更紧密[19-22]。5.4GUI对象识别三种工具都是基于捕捉/回放的测试原理,既然要回放用户的操作,那么用户操作的对象的识别就是一个很重要的要解决的问题。在这三种工具中都采用了一种叫做对象映射的技术,就是一个实际的窗口对象用一个逻辑名来标示,而这个逻辑名对应的是这个对象的实际物理描述。这种技术的第一个好处就是即使某个对象在窗口中的位置变了,该对象仍可以被正确的识别,这就大大增强了脚本的生命力;另外一个好处就是如果一个对象的物理描述变了,不必去修改脚本,只需要修改该对象的映射即可,当然前提是在工具中提供这种对象映射修改的功能。在WinRunner和QARun里面这些对象映射是可以编辑的,Robot中不可以编辑。所以就这一点来说Robot的脚本的可维护性不如另外两个工具。下面让我们详细看一下三个工具都为GUI对象识别提供了那些功能[19,21-22]:(1)WinRunnerGUIMap是WinRunner在ContextSensitive模式下录制的脚本回放时识别被测软件GUI对象的依据。在WinRunner中提供了两种GUIMapFile模式,一种是GlobalGUIMapFile;一种是GUIMapFileperTest。前一种模式下所有的测试都使用的都是同一个GUIMap文件;后一种模式下,每一个测试都有一个单独的GUIMap文件。有三种方式创建GUIMap:①RapidTestScript向导通过该向导你可以轻松的将被测试软件所包含的所有GUI对象加入到GUIMap中。②GUIMapEditor下图是GUIMapEditor的窗口:图5.7GUIMapEditor的窗口通过这个编辑器可以将一个GUI对象或一个窗口中的所有对象加入GUIMap中。另外如果一个GUI对象的名称或物理描述信息改变了的话,可以在该编辑器中打开相应得GUIMap文件,修改相应的信息。该编辑器还提供了两个不同GUIMap文件间GUI对象映射相互拷贝的功能。③自动录制脚本过程由WinRunner自动将遇到的每一个GUI对象加入GUIMap中。WinRunner能够识别标准的GUI对象,但也有一些非标准的对象无法在WinRunner内置的对象类型中找到匹配。为了解决这个问题,WinRunner提供了虚拟的对象映射,将一个未知类型的对象映射到一个与其相近的类型。WinRunner还提供了脚本拼接的功能,可以将两个或多个比较小的GUIMap文件拼接成比较大的GUIMap文件。(2)RationalRobot虽然Robot也是采用了对象映射技术来识别GUI对象,但是它提供的关于这方面的功能比较弱,而且很多功能都对用户隐藏了。它不支持GUIMap的编辑,所以如果一个GUI对象的物理描述改变了,为了使用先前的脚本,只有去修改脚本,如果是一两个脚本,还好修改,如果成百上千的脚本都与该对象有关的话,那修改起来就不是一件容易的事情了。下面是Robot提供的一个查看GUI映射的一个对话框,名称是Inspector:图5.8查看GUI映射Robot在录制脚本和回放脚本的过程中,会将整个桌面上的所有对象包括隐含的对象,全都建立映射。从上面的窗口中我们也可以看出,最上一级是Desktop,下面就是包含在Desktop中的所有对象,然后每个对象的子对象也都会建立映射。所以Robot建立的GUI对象映射很全,执行Robot的脚本,一般不用担心脚本中某个逻辑名对应的对象找不到的问题,除非对象的物理属性改变了。(3)QARunQARun将GUI对象映射分成了三类:对象映射(objectmapping)、别名映射(aliasmapping)、图像映射(imagemapping)。QARun针对这三种映射提供了相应的编辑器,用户可以通过这些编辑器查看、添加、修改对象映射。在QARun录制脚本的过程中,它会自动建立用户操作的GUI对象的映射,这点同WinRunner相似。需要特殊指出的是别名映射(aliasmapping),它是将一个非标准的类对象映射为一个标准的控件类型,这点与WinRunner中的虚拟对象映射相似。QARun遇到一个非标准的对象的时候,它就放弃对象的记录,而只是仅仅鼠标和键盘的响应。这可以保证脚本可以正确的回放,但是使得脚本的理解和维护变得困难起来。(4)比较从上面的分析,我们可以得到如下结论:三种工具虽然都使用了对象映射技术来识别GUI对象,但就功能来说WinRunner和QARun比较强,这两个工具支持对象映射文件的编辑,所以当测试的系统的某个对象改变了的话,测试人员只需要修改相应对象的GUI映射,而不是去修改成百上千的脚本。Robot由于并没有给出一个可以让用户对GUI映射操作的一个机制,所以如果一个测试对象改变了,就只有去修改所有与该对象有关的脚本或者从新建立测试,这是一个很烦人的工作。5.5脚本执行与被测程序响应的同步问题三种工具都是根据脚本中的命令,调用操作系统提供的API控制鼠标和键盘对被测程序进行操作,这个过程中存在一个很明显的问题就是脚本的执行速度一般要比被测试程序的响应要快,那么如何保持脚本的执行与被测程序的响应同步,有两种方法解决这个问题:第一种是在每个需要延时执行的脚本指令后面插入一个合适的等待时间。第二种就是在需要延时执行的指令前面插入一个等待某个事件或对象出现的操作,当响应的对象或事件出现时,再继续执行脚本。就第一种方法来说,合适的等待时间很难确定,因为不同的机器,就算同一台机器,程序的执行速度也有可能不一样,所以这个合适的等待时间一般是一个足够长的时间。而第二种方法就很好,只要某个对象或事件出现,说明被测程序的响应已经完毕,脚本就继续往下执行。下表是对WinRunner、Robot和QARun处理脚本执行速度与被测程序响应同步问题的一个比较:表5.5处理脚本执行速度与被测程序响应同步问题比较工工具项目很显然,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.1MI工具测试资源组织访问图图6.2Rational和Compuware工具测试资源组织访问图从上图中我们可以看出,MI公司的测试管理工具TestDirector是测试工具访问其它测试资源的中介,所有相关的测试工具与测试资源的交互(即与第三方数据库交互)都是通过TestDirector完成的。而另外两个公司的工具,不管是测试工具还是测试管理工具,都直接与数据库交互来访问测试资源。三个公司的工具对于第三方的数据库支持大同小异,都支持当今主流的数据库。MI公司的TestDirector标准版支持MicrosoftAccess,如果是企业版还支持Sybase,MicrosoftSQL,Oracle。Rational公司和Compuware的测试管理工具集中的每个工具支持的数据库不同:表6.2Rational和Compuware所支持的数据库6.2测试项目每进行一个测试时首先要创建测试项目,由于测试工具的集成度和结构不一样,所以造成了三个公司的测试管理工具创建测试项目的不同。创建项目的复杂度不同。MI公司的TestDirector创建测试项目最简单,只需要输入一个项目名称即可,其它的像数据库创建等系统会自动帮你完成,创建好的项目还可以随时随地通过互联网更改它的配置。其它两个公司的测试管理工具的项目创建,都要有复杂的数据库创建过程,一个测试项目创建,还要根据它提供的数据库表创建文件人工创建数据库,另外,由于它们的需求管理和缺陷管理工具的独立性,还要将需求项目和缺陷管理项目与测试项目结合。测试项目各阶段实施的工具支持力度不同。由于MI公司的TestDirector本身是一个完整的工具,所有的测试工作都只有在一个测试项目创建后才能开展,测试项目下面是需求建立、测试用例设计、测试安排、缺陷管理等,而且所有的这些内容都存放在测试项目建立时所创建的同一个数据库中,所以总体来说TestDirector的测试项目是一个不可分割的整体。而Rational和Compuware的测试项目则不一样,在它们的测试项目创建前你完全可以使用它们的需求管理工具创建完成测试需求,缺陷跟踪工具创建好缺陷跟踪的项目,然后创建测试项目时将这些需求和缺项项目与测试项目联系起来。6.3测试人员管理如果一个软件测试过程中有很多人员参与的话,那么对这些参与测试的人员的管理就显得非常重要,如何合理的调配和管理人员,对于提高测试的效率有很大的影响。三个公司的测试管理工具都有明确的管理测试人员(即用户)的功能模块,TestDirector有两个地方可以进行用户的管理,一个是SiteAdministrator页面,一个是CUSTOMIZE页面;Rational的RationalAdministrator即负责测试项目创建又负责测试人员的管理;和Rational的工具一样,Compuware公司的QADirectorAdministrator也是即负责测试项目的创建也负责测试人员的管理。这三个工具都提供了用户密码保护、用户添加、更改、删除等必备功能,另外,都可以订制用户对测试资源操作和访问的权限。虽然三个公司的管理工具对于测试人员的管理从整体功能上来说是相同的,但是在一些细节的实现方面还是有一些不同。首先,三个工具对测试人员的划分不同。MI的测试管理工具和Rational的测试管理工具都是用角色来划分测试人员即系统的用户,它们规定每个角色对测试资源的操作和访问权限以及对某个测试管理工具的某个功能模块的访问权限,而不去规定某个实际的用户的权限,当向系统添加一个用户时,只需要指定用户是那种角色就行了,如:Tester、Administrator、TestLeader等,如果没有合适的角色,系统还允许订制自己的角色,你可以为自己订制的角色分配权限,并将其添加到角色库中,供以后使用。不过,MI和Rational的这两套工具对于测试资源和工具模块的操作和访问权限划分的粒度不同,TestDirector相对于RationalAdministrator来说对角色的权限的划分要详细地多,所以TestDirector对于角色的定义要灵活的多。Compuware的QADirectorAdministrator中对测试人员(即用户)的管理没有角色的概念,每加入一个用户,都要订制其权限,而且权限划分也不是很细,订制用户权限的灵活性比较差。其次,它们对测试人员的管理方法不同。TestDirector中采用了对测试人员集中管理的方法,不管是项目A的测试人员还是项目B的测试人员,也不管项目A和B有没有创建,都可以在TestDirector提供的用户管理模块中添加用户,当一个测试项目创建后,你可以为测试项目分配用户,也可以将一个用户指定为某个项目的人员,所以TestDirector对于测试人员(即用户)的管理显得非常的灵活、简单。其它两个公司的管理工具来说,它们的测试人员是依附于测试项目而存在的。首先,要先创建一个测试项目,然后才能为每个测试项目添加相应的用户,而且不同的测试项目的用户是相互独立的。而往往一个测试团队的人员是固定的,它们的职责也是固定的,它们作为测试工具的使用者也是固定的,所以Rational和Compuware公司的管理工具让测试人员依附于测试项目而存在的方法使得每建一个测试项目都要重复添加一次系统用户,显得比较繁琐[19-22]。6.4测试计划测试计划就是针对测试项目创建一个完整的测试计划,主要包括测试用例的设计、测试脚本的创建等工作。下面就MI和Rational两个公司的测试管理工具TestDirector和TestMananger中建立测试计划的功能作一个分析和比较。MI的TestDirector中的TestPlan模块就是创建测试计划的一个平台,它提供了各种功能以方便测试计划的创建。首先,使用TestDirector可以定义测试。TestPlan模块提供了树形结构来组织和定义测试,你可以根据被测软件的功能模块将一个大的测试划分为小的测试,这些测试用文件夹来区分,然后向这些文件夹中添加具体的测试,针对测试执行使用工具的不同,新建一个测试的时候,TestDirector提供了如下几种测试类型:手工测试、WinRunner自动化测试、LoadRunner自动化测试、VAPI测试、QuickTest测试、AstraLoadTest测试、Xunner测试、System测试等供选择,而且这些不同类型的测试都会用不同的图标来区别,根据图标可以很容易的知道测试的类型。使用TestDirector可以轻松的将测试和需求联系起来。测试计划中的测试要与原始的测试需求相吻合是最基本的要求。上面已经提到了TestDirector中可以很方便的将一个测试需求和对应的测试联系起来。同样的方法,TestDirector为了保证测试对测试需求的覆盖率,可以通过将测试计划树中的每一个测试与测试需求树中的一个或多个需求相联系方法创建一个测试覆盖。对测试步骤设计的支持。通过向测试计划树中的测试添加测试步骤的方法来定义测试操作过程。测试步骤描述了测试的操作,要检查的点,和每个测试期望的输出等信息。对于设计完测试步骤的测试,可以根据其测试类型(是手工测试还是自动化测试)使用相应的测试工具来创建相应的测试脚本。生成报告和图表以助于分析测试数据。这个功能可以帮助你重新浏览测试以确定它们是否符合测试目标。另外,TestDirector的TestPlan模块中还提供了邮件发送功能,你可以很轻松的将设计好的测试发送给测试项目组成员中的任何一个人。对于每一个测试还允许为它添加任何类型的附件。RationalTestManager是Rational测试管理工具集中的核心工具,在TestManager中,一个测试计划是一个Rational测试数据存储的资源(asset)。一个项目可以有一个或多个测试计划。而且可以根据测试情况的需要任意的组织它们,可以为整个项目制定一个测试计划,你也可以为项目的每一个主要的component指定一个测试计划。Rational的一个测试计划是由测试用例文件夹组成,每个测试用例文件夹中是具体的测试用例。每个测试用例可以选择是手工的测试用例还是自动化的测试用例,其中自动化的测试用例也有多种不同工具的选择,包括功能的和性能的,针对每个测试用例,你还可以设计其测试步骤,包括测试操作、检查点、输出等,还要指定与测试用例相联系的测试脚本,这些东西和TestDirector是相同的。不过RationalTestManager的测试用例还有以下两个特殊的地方:第一,可以指定外部文件作为测试用例的输入。有三种不同的测试用例输入文件:测试需求文件(RationalRequisitePro创建的需求)、RationalRose项目、Excel文件。可见Rational的测试工具还和其建模工具结合了起来,如果要测试的软件使用RationalRose来建模的,使用Rational的测试工具也不失为一种很好的选择,可以省去很多重复的工作。第二,在TestManager中创建所有的测试用例,然后用interations来指定一个指定的测试用例什么时候运行和通过。一个iteration是在一个项目进行中定义的一个时间段。一个iteration是一个主要的项目转折点。在一个iteration中,产品要符合某种质量标准以达到某个转折点,质量标准是由测试用例定义的必须通过的。在许多组织者中,测试员和分析员或项目经理决定在那一个iterations测试用例需要通过。使用RationalTestManager的这个功能,可以更加严密的监视测试是否符合要求,更容易保证被测软件的质量。另外,RationalTestManager还提供了测试影响分析的功能。测试影响分析对于确定测试脚本是否为所有的测试需求提供了完全的覆盖是很重要的。当测试需求改变的时候,TestManager会提示你这些改变对测试计划的影响。比如:如果一个需求因为某种原因改变了,你想知道测试计划中的那些测试用例受到了影响,那么你可以update它们以反映需求的变化。TestManager会自动将受到影响的测试用例标记上“suspect”。RationalTestMananger还提供了针对测试计划生成各种报告的功能。这些报告可以帮助你分析测试计划,找出其中的缺陷。从上面对两个工具的分析,我们可以看出,在测试计划建立方面,两个工具的功能有很多相同的地方,比如:测试计划的组织方式是相同的,一个大的测试项目可以细化为小的测试计划,测试计划下面是测试用例文件夹,测试用例文件夹中是具体的测试用例,都用树形结构来管理测试计划;都可以生成相应的报告,来查看测试计划的完整性等。另外,两个工具也各有其特色的地方,TestDirector对测试计划邮件发送功能的支持、直观的测试需求和测试计划的联系等是TestManager所不具备的;而TestManager对多种测试用例输入的支持、对测试用例的监督机制、测试影响分析功能等又是TestDirector所没有的[13,19,21,23]。6.5比较总结[24]项目项目工具7.总结语软件测试是确保软件质量的重要方法,忽略了软件测试,就是不重视软件质量。自动化测试是提高软件测试效率的重要方法,忽视自动化测试工具在软件测试中的应用,就是浪费时间、人力和物力。MI公司、Rational公司和Compuware公司,三个公司的都开发了一套完整的自动化测试工具和管理工具,这些工具都可以执行完整的自动化测试,但也各有千秋,而且这些工具还在不断的完善,功能还在不断的增强。另外由于时间有限,本文对这些工具的比较还有很多未涉及之处,而且可能有些地方还不太妥当,希望今后有更多的人对这些工具做出比较,以帮助要使用这些工具的公司或单位作出更好的抉择。参考文献[2]何秋晶.浅谈软件测试方法[J].林业科技情报,2005年,01期:47-48.[3]佘凤.软件测试及关键技术[J].黄冈职业技术学院学报,2007年,01期:95-98.[4]钟治初.软件测试方法的研究[J].机电工程技术,2005年,01期:46-47.[5]周煜,周国庆,奚文骏.软件测试技术概述[J].中国测试技术,2005年,03期:56-58,75.[6]黄清清.软件测试与测试方法浅析[J].舰船电子工程,2004年,01期:32-35.[7]曾凌峰.浅谈软件测试方法[J].科技资讯,2006年,03期:38-39.[8]潘立武,杨健.谈应用软件测试方法[J].福建电脑,2007年,07期:71-72.[9]王艳秋,燕孝飞.软件自动化测试初探[J].科技信息(学术版),2007年,05期:168,171.[10]杨亚南,孙忠林,李艳.软件自动化测试浅谈[J].科技信息(学术研究),2007年,24期:503-504.[11]唐晓玲.软件测试中自动化测试初探[J].广西轻工业,2007年,03期:64-65.[12]Peer.你的组织为自动化测试做好准备了吗?/developerworks/cn/rational/r-testauto/,2004年.[13]MI测试工具介绍./html/27/1657.html,2006-8-23.[14][15][16]/software/cn/rational/products/robot/index.html.[17]李理,刘军.软件测试工具的选择和使用[J].警察技术,2006年,04期:41-44.[18][19][20]/indexold.html[21]/software/rational/[22][23][24]/html/product-testcenter-duibi.html.[25]附录1外文译文GUI自动化测试研究摘要:指出了目前自动化测试所采用的录制技术存在的不足,针对不断变化的图形用户界面测试代码很难维护和扩展的问题,采用基于对象的捕捉技术,设计了以Windows消息机制为基础的GUIATF测试框架,实现了高度灵活并易于扩展的图形用户界面自动化测试。关键词:软件测试;回归测试;自动化0.引言测试是一种旨在评估一个程序或系统的属性或能力,确定它是否符合其所需结果的活动。在整个软件开发过程中,从需求分析到系统设计直到代码实现,都会出现或多或少的问题。如何保障软件的质量,软件测试就成为关键的技术。软件测试的工作量很大并具有一定的重复性,尤其在测试后期所进行的回归测试中(回归测试在软件出现发展性的改变和修正性改变时运行),需要验证以前发现的问题在新版本中是否解决,大部分测试工作是重复的。实现软件测试的自动化可以使大量的测试程序化地反复执行,不仅节约了大量的劳动力,而且提高了测试效率并保证了测试的质量。1.录制技术的不足目前一些录制技术被应用到图形用户界面的自动化测试中,在软件开发周期中,系统需要不断地更新和维护,为了保证测试质量,测试代码对不断变化的系统要有很强的适应能力,换句话说,测试也同样需要维护。测试脚本的录制过程是根据具体的界面和操作进行的,一旦脚本的执行界面发生改变,运行就会出现异常,甚至仅仅是被操作对象位置的改变或图像分辨率的改变都可能会造成图形用户界面自动化测试的失败,因此,基于录制技术的自动化测试维护的代价相当高。另外,脚本录制的过程是固定的,所以脚本的运行会完全按照操作步骤,不具备灵活性。2.自动化测试框架的提出在目前的软件测试中,一个备受关注的问题是如何高效地实现图形用户界面的自动化测试,并使测试代码具有很高的灵活性。本文提出了一种基于对象捕捉技术的图形用户界面自动化测试框架GUIATF(GraphicsUserInterfaceAutomationTestingFramework),为测试人员方便地创建并灵活地维护测试代码提供保证。当用户界面发生变化时,测试代码能很快地进行更新,对用户界面的变化有很强的适应能力。3.GUIATF框架的工作原理GUIATF框架的基础是消息机制,通过消息的发送来触发相应的事件。消息的初始接收器必须是窗口对象。Windows消息通常直接由该窗口对象处理。通常产生于应用程序主框架窗口的命令消息被传送到命令传送中描述的命令目标链。GUIATF框架要完成的任务是为测试人员开发自动化测试代码提供功能强大的接口,模拟测试用例中定义的用户操作,通知系统发送一系列的消息给应用程序,实现测试用例的自动化运行。3.1GUIATF的作用图1GUIATF的作用从图1可以看出GUIATF将消息发送给系统,系统响应消息之后通知应用程序来触发对应的事件,完成测试用例中定义的一系列用户操作。GUIATF是连接应用程序和用户操作的桥梁。在自动化测试过程中,测试用例是批量运行的,为了跟踪测试结果,GUIATF需要不断记录执行过程、探测不期望出现的事件以及在运行异常时保存现场截图。这些结果数据通过日志管理存储在日志数据库中,便于测试人员查看和分析测试结果。3.2GUIATF的结构GUIATF框架由四个模块构成:对象定位、字符转换、消息发送和日志记录,如图2所示。对象定位模块将用户要操作的控件对象转化为GUIATF框架自身定义的自动化对象,然后再对其定位,在定位过程中,需要获取控件的一些属性信息,最常用到的是控件显示在界面上的名称。在不同的语言版本中,同一个控件的名称是不同的,字符转换模块提取当前环境的语言类型,将要检索的控件名称转换为当前语言环境中对应的名称,发送给对象定位模块。对象定位成功后,消息发送模块将模拟用户操作的消息发送到被锁定的对象,比如:用鼠标点击被定位的按钮或在被定位的编辑框中录入信息等。在以上三个模块执行的过程中,日志跟踪模块分别记录它们工作的详细信息,以便自动化测试运行结束后,测试人员通过查看日志信息分析测试结果。图2GUIATF的结构(1)对象定位模块对象定位模块使GUIATF框架在处理控件对象方面具备功能丰富的接口,测试人员通过调用它们可以方便、高效地实现自动化对象的创建、检索自动化对象包含的子对象、激活对象、确定对象角色、状态和位置等功能。应用程序中的每一个控件都属于主窗口中的子窗口,包括按钮、编辑框等,它们都是Windows系统中的窗口。每个窗口都有一个窗口句柄作为其在系统中的唯一标识,对象定位模块通过获取窗口句柄将其转化为自身定义的自动化对象,主要定义如表1所示。表1对象定位模块主要成员函数及属性(2)字符转换模块字符转换模块实现了GUIATF框架跨语言自动化测试的能力。它将自动化对象的属性信息动态转换为当前语言环境下对应的表现形式。在应用程序中存在的每一个字符串都有一个ID值,唯一地标识该字符串的含义,我们把它称为键(KEY),对于一个键,可以对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论