基于RationalRobot的自动化测试系统_第1页
基于RationalRobot的自动化测试系统_第2页
基于RationalRobot的自动化测试系统_第3页
基于RationalRobot的自动化测试系统_第4页
基于RationalRobot的自动化测试系统_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、中山大学硕士学位论文基于Rational Robot的自动化测试系统姓名:黄敏智申请学位级别:硕士专业:软件工程指导教师:肖菁20080418基于的自动化测试系统论文题目:专业:硕士生:指导教师:基于的自动化测试系统软件工程黄敏智肖菁摘要通过对软件测试理论的研究及作者从事自动化测试经验的总结,本文首先阐述了自动化测试技术产生的背景以及发展现状。随着国内软件产业的发展,软件产品的规模越来越大,其业务和实现的复杂度也越来越高。大规模和高复杂度的软件给软件测试工作带来了很大的困扰,如何快速全面的对产品进行测试,成为企业需要突破的一个效率瓶颈。本文提出了一个较好的解决上述问题的有效手段:使用关键字驱动

2、技术的自动化测试系统。自动化测试系统是基于实现的,采用关键字驱动框架加以实现。将软件产品的界面元数据抽耿出来,采用)(文件的方式保存测试元数据,并由此生成测试用例模板,实现了测试设计与测试执行的分离,从而实现快速高效的软件产品回归测试,使软件质量得到保证。本文接着详细的介绍了关键字驱动的测试思想,并介绍了关键字驱动测试框架。通过关键字驱动框架,我们可以将测试用例与测试脚本分离,并使测试分工进一步细化,同时根据关键字生成的规则,使测试脚本自动生成变成了可能。本文进一步阐述了基于的自动化测试系统。通过对系统的分解和分析,详细讨论了采用关键字自动化测试框架的自动化测试系统的实现过程。关键词:自动化测

3、试;关键字驱动;:鸵咐),舀,;,豁柚适叩仃脚,柚咖,柚伊盯,锄。行,:,)啊仃原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。锰够岳咽,名月签侈者,作疡鬻,上业掘砉学日基于的自动化测试系统学位论文使用授权声明本人完全了解中山大学有关保留、使用学位论文的规定,即:学校有权保留学位论文并向国家主管部门或其指定机构送交论文的电子版和纸质版,有权将学位论文用于非赢利

4、目的的少量复制并允许论文进入学校图书馆、院系资料室被查阅,有权将学位论文的内容编入有关数据库进行检索,可以采用复印、缩印或其他方法保存学位论文。保密的学位论文在解密后使用本规定。咱学位论文作者签名:萎敏智导师签名:缉日期:劢游乡月仁日日期:沙秽年么月么日基于的自动化测试系统第章引言软件测试的定义和分类根据标准,软件测试的定义是:“使用为发现错误所选择的输入和状态的组合而执行代码的过程。一些比较通俗的说话认为:软件测试,就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复查,是软件质量保证的关键步骤。由软件测试的定义,不难看出测试的目的,是寻找错误,并且是尽最大可能找出最多的错误。著

5、名的在一书中提出以下观点:测试是程序的执行过程,目的在于发现错误;一个好的测试用例在于发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。软件测试,按照不同的分类原则有不同的分类结果。()、从测试方法上,软件测试包括白盒测试()和黑盒贝试()。白盒测试又称为结构测试、逻辑驱动测试或基于程序本身的测试,着重于程序的内部结构及算法,在测试时能够了解被测对象的结构,可以查阅被测代码内容的测试工作。它需要知道程序内部的设计结构及具体的代码实现,并以此为基础来设计测试用例。黑盒测试又被称为功能测试、数据驱动测试或基于规格说明的测试,实际上是站在最终用户的立场上,检验输入输出信息及系统性能

6、指标是否符合规格说明书中有关功能需求及性能需求的规定。()、从测试阶段上分,测试包含单元测试()、集成测试()、系统测试()和验收测试()。软件单元测试是根据待测软件的详细设计说明书,对代码进行白盒检查,一般分为静态检查和动态检查。静态检查是指对编码规范、语法语义进行走查(),动态检查是编写单元测试桩()、测试引擎,基于的自动化测试系统在运行时对指定的函数进行输入输出测试。支持单元测试的工具非常多,如语言下:,语言下:。软件的集成测试是根据待测软件的概要设计说明书,对单元测试通过的模块进行黑盒测试,主要侧重于模块之间的交互。软件的系统测试是根据软件需求规格说明书(,)的定义对待测软件进行黑盒测

7、试。其主要目的是提高软件的质量、量化软件质量。系统测试是基于一定的计算机硬件环境,对整个软件进行的一系列测试;是将已经通过集成测试的软件与具有一定代表性的计算机实用环境相结合,根据软件项目系统级的有关文档,检查软件与系统定义、与需求的符合性,检验并确认软件在整个系统中的功能、性能和正确性。完成集成测试后的软件系统,必须与系统的其他元素相结合,进行系统级的确认和验证测试。系统测试是软件发布到客户之前的最后一个测试行为,所以对软件开发来说是非常重要的一个过程。软件的验收测试,是以用户为主的测试,一般称为测试。在软件系统测试结束以及软件配置审查之后丌始,验收测试应由用户、测试人员、软件开发人员和质量

8、保证人员一起参与,验证软件系统的功能和性能及其它特性是否与用户的要求一致。回归测试()不是一个特定的测试级别,只要对软件代码有修改,不论是修改错误还是增加新的功能或是提高性能,原则上都要进行回归测试,以保证对代码修改的正确性,且不会对其余部分带来负面影响。回归测试可以通过重新执行所有的测试用例的一个子集进行,回归测试集包括三种类型的测试用例:能够测试软件的所有功能的代表性测试用例。专门针对可能会被修改影响的软件功能的附加测试。针对修改过的软件成分的测试。回归测试可以有选择地重复执行集成和系统测试的测试用例,回归测试变动比较小,同时测试所基于的实际硬件环境相对比较稳定。但回归测试要频繁地重复运行

9、,需要的工作量很大,所以,回归测试最值得自动化。自动化测试便于回归测试以非常高效的方式进行。()、从是否运行程序上划分为静态测试和动态测试。基于的自动化测试系统静态测试是一种不实际执行程序的测试方法,例如需求、设计评审,代码走查,产品审查等。动态测试指当软件系统在模拟(或真实)的环境中执行之前、之中和之后,对软件系统行为的分析。包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等。一般的功能测试,冒烟测试,回归测试、性能、压力等测试均属于动态测试。软件测试的生命周期软件测试的生命周期包括:测试计划、测试需求描述、测试用例开发、测试执行和测试分析总结。在项目当中,软件的测试是和软件开发同时进

10、行的,即在软件开发计划的同时,进行系统测试的计划,产生软件系统测试计划文档。在软件需求确定之后,进行测试用例的编写(开发)。在编码完成,单元测试和集成测试通过后,进行软件系统测试的执行。由于系统测试的依据是软件需求文档,所以系统测试首先要完全覆盖软件需求文档。但是由于软件需求文档不一定将所有情况描述完全,所以除此之外,系统测试还应该进行默认需求的测试(针对未写在软件需求文档中,但是按照“默认法则应为软件的需求进行的测试)、用户模拟测试(功能测试)、黑盒性能测试(负载测试)和随机测试。软件测试工具软件测试需要各种测试工具的支持,这些测试工具分为功能测试工具、非功能测试工具、测试管理工具、测试辅助

11、工具。功能测试工具主要对软件的功能进行检查,支持自动化测试的功能测试工具主要包括公司的、的和、等。非功能测试工具针对运行效率、稳定性、可靠性、容错性、可扩展性进行测试。支持自动化测试的非功能性测试工具主要包括公司的、的等。测试管理工具用于对测试的流程进行管理。支持工具包括公司的、的等。测试辅助工具基于的自动化测试系统需要针对不同的软件进行开发,比如针对加密的程序开发解密工具以支持测试,针对嵌入式软件的系统测试,开发了自动化测试工具和附件模拟工具等。软件测试的现状和发展趋势软件测试的必要性已经完全为业内决策人士所接受,这是因为软件工业已经发展到了与其他主要工业相当的规模,经过十几年的发展,少数天

12、才们手工作坊的世界已经转化为大工业生产的天下。国内软件企业经历了无数坎坷后,正以每年百余家的数量通过各级删认证,逐渐由过去的作坊式开发过渡到如今的工厂式规模运作,软件工程的管理也越来越规范。为实现国家产业结构的调整,我国正从劳动密集型产业向知识密集型产业转移。软件测试是软件工程的重要组成部分,又是软件开发不可或缺的环节。作为国内软件企业,要想在同行业树立自己的品牌,在国际软件外包业务中取得更多的市场份额,仅靠以往的人力资源优势已经不太现实,只有提高软件质量才是软件企业的唯一出路。在软件业较发达的国家,软件测试不仅早已成为软件开发的一个有机组成部分,而且在整个软件开发的系统工程中占据着相当大的比

13、重。以美国的软件开发和生产的平均资金投入为例,通常是:“需求分析和“规划确定”各占百分之三,“设计”占百分之五,“编程”占百分之七,“测试占百分之十五,“投产和维护”占百分之六十七。在美国硅谷地区,凡是软件开发企业或是设有软件开发部门的公司,都有专门的软件测试单位,其中软件测试人员的数量相当于软件开发工程师的四分之三。在这些公司或部门中,负责软件测试的质量保证经理的职位与软件开发的主管往往是平行的。软件巨头微软,专业测试人员是专业开发人员的倍,测试投入的工作量远大于开发的工作量。目前,虽然国内软件企业越来越看重软件质量,但是软件测试人员的工作并没有像软件质量一样得到重视和认可。不少企业平时可能

14、认为软件测试人员不是利润的直接创造者,不愿意在软件测试上投入太多人力,不愿意投入太多精力给予其培训和学习的机会,一旦软件质量出了问题,第一个追究的却是测试人员的责任。此外,软件企业不重视利用外部的(第三方测试公司)测试力量进行测试。也正是由于这些因素,国内的软件测试人才也相对缺乏。基于的自动化测试系统随着软件市场的成熟,软件测试会越来越受到软件企业的重视,软件测试在国内也正逐渐发展起来,形势越来越好,软件测试正处在朝阳时期,相信在未来几年内,对软件测试人员的需求量会比软件开发多得多,并且软件测试人员也会像软件开发人员一样逐步成为软件企业的核心力量。同时,软件测试技术与软件开发技术一样,正在飞速

15、发展中。当前普遍认为软件测试技术的发展方向主要体现为:测试流程方面,逐渐出现以测试驱动开发,需求分析、软件设计、开发等各个阶段均以测试为基础,软件开发和测试完全集成在一起。未来的软件测试趋势:测试分工方面,测试分工细分为功能、业务测试及专业技术测试,逐步趋向于自动化测试和手工测试相结合的模式,再进一步而言,将发展以自动化测试为主,人工测试为辅的测试模式;测试技术方面,自动化测试越发智能,不仅仅是手工操作的一种重复,而且可以进行测试策略的积累和创新;虚拟和并发技术的实现和使用,为软件性能测试提供可靠的技术支持。在测试工具方面,各种应用程序的测试工具,不同测试类型及适合于不同测试流程阶段的测试工具

16、,都趋向于集成在同一个平台,可以实现对整个测试流程的全面支持,各模块相互补充,相互支持,实现无缝连接。同时,将会产生一些第三方测试公司,产生一些权威的测试认证机构,使软件测试认证标准为大多数企业接受,软件测试认证标准化。本课题研究与开发内容随着软件测试的地位越来越重要,在软件业较发达的国家,软件测试不仅早已成为软件开发的一个有机组成部分,而且在整个软件开发的系统工程中占据着相当大的比重。软件测试市场也已成为软件产业中的一个独特市场。同时,随着软件测试规模不断扩大,软件自动化测试备受关注。本文所讨论的自动化测试属于功能型的自动化测试,主要是应用于系统功能的自动化回归测试中。本课题的主要工作是研制

17、一个软件自动化测试系统平台,可以对平台应用程进行自动化测试支持,对测试执行进行管理,并提供灵活的接口进行扩充和升级;开发适合自动化测试分工的用例模板。本人的主要工作是对自动化测试的理论研究;对自动化测试实施经验进行总结;基于的自动化测试系统对自动化测试系统的各个模块进行设计和实现。课题主要成果包括:自动化测试框架的日志记录模块测试用例模板的生成工具自动化测试用例脚本转换工具自动化测试执行管理工具自动化测试的通用脚本组用于查看测试日志和测试结果的网站平台论文共分为六章,首先概述了当前软件系统测试的理论以及测试支持工具。第二章对自动化测试进行了概述,第三章对自动化的实施提出自己的看法及经验总结,提

18、出自动化实施的引入条件,介绍工具选择方法及实施步骤。第四章介绍了关键字驱动的自动化测试框架的思想和工作原理。第五章介绍了基于的自动化测试系统的功能结构、设计和实现。最后一章介绍了本课题所取得的成果及对全文的总结。基于的自动化测试系统第章自动化测试概述自动化测试的定义和分类自动化测试的一般定义为:各种测试活动的管理与实施,包括测试脚本的开发与执行,以便使用某种自动化测试工具来验证测试需求。测试活动的自动化在许多情况下可以获得最大的实用价值,尤其在自动化测试的测试用例开发和组装阶段,测试脚本被重复调用,可重用脚本可能运行很多次。因此,采用自动化测试可以获得很高的回报。自动化测试按类型可以分为性能自

19、动化测试及功能自动化测试。性能自动化测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。功能自动化测试则是:通过测试工具软件或脚本模拟手工测试过程来实现测试目标的一种测试方法。自动化测试的生命周期自动化测试正向体系化,项目化方向发展,自动化测试作为独立的项目,随着软件测试生命周期的产生,自动化软件测试生命周期也同时产生,主要分为:自动化测试计划、设计与开发,测试的执行与管理,测试的分析与评估,如图所示。图:自动化测试的生命周期基于的自动化测试系统()自动化测试计划理想情况下,测试始于测试目标和测试策略的建立,测试策略应满足测试目标的要求。测试计划包括评估

20、完成所有测试活动的时间,测试活动安排及资源分配,控制测试过程以及跟踪整个测试过程所需采取的活动,这些活动应该在项目开始前就实施,并贯穿项目的整个开发过程。测试计划是测试过程中最重要的活动,包括风险评估、鉴别和确定测试需求的优先级,估计测试资源的需求量,开发测试项目计划以及给测试小组成员分配测试职责等。测试计划的目的是收集从需求设计文档中得到的信息,并将这些信息表现在测试需求中,而测试需求将在测试场景中得到实现。在“订”提出:()、不能在缺乏明晰且实际的计划的情况下,开发在下个发行版中继续有效并适用的测试集:()、不能在缺乏明晰且实际的计划的情况下,开发可扩展的测试集(测试集的代码量可能比待测的

21、应用程序还多);()、不能在缺乏明晰且实际的计划的情况下,开发维护性开销低的测试集。因此,首先必须进行自动测试的需求分析。测试场景是测试计划的一部分,它直接提供给测试条件、测试用例、测试数据的开发。我们可以视测试计划为从软件需求中抽出来工作文档,并和测试需求与测试结果相联系。测试计划还会随着软件需求的更新而更新,是动态的文档。这个阶段主要是测试设计工程师根据开发者提供的功能需求,高级设计文档及详细设计文档,使用如这样的工具得到测试需求,测试计划,以及测试用例的形式的列表。()测试用例的设计和开发测试设计包括经过测试需求分析后,定义测试活动模型(确定测试所使用的测试技术),定义测试体系结构,完成

22、测试程序的定义与映射(建立测试程序与测试需求之间的联系),自动手动测试映射(确定哪些测试使用自动化测试),以及测试数据映射。需要指出的是确定自动手动测试映射,对于自动化测试相当重要,因为并不是所有的测试都适合自动化。作者认为,一般以下几类情况适合进行自动化测试:基于的自动化测试系统当前的测试项目比较大,且在今后项目中重复测试的概率比较高;测试本身的执行简单、机械,而测试所需硬件环境则相对来说比较稳定;测试难以通过手动方式实现,例如部分负载压力测试;测试基本不需要人工参与,且重复性较高,如系统的配置测试。这个阶段主要参与者有测试设计工程师,其任务是根据测试需求,开发测试计划文档,测试用例列表等,

23、使用工具如来构建电子数据表,包括测试条件电子数据表,测试数据表,有关各种映射关系定义的表格以及详细测试电子数据表。自动化测试工程师根据详细测试表、映射关系定义表等电子数据表格,可以使用、等工具,生成自动化测试脚本,自动化测试脚本的开发有线性脚本、结构化脚本、共享脚本、数据驱动脚本和关键字驱动脚本这几种脚本技术。()自动化测试的执行和分析随着测试计划的建立和测试环境的搭建完毕,按照测试程序进度安排执行测试,可以通过手动或自动或半手动半自动方式执行,它们各自可以发现不同类型的错误。测试执行结束后,需要对测试结果进行比较、分析以及结果验证,得出测试报告(包括总结性报告和详细报告)。其中总结性报告是提

24、供给被测方中高层管理者及客户的,而详细报告,寄过编辑整理,作为反馈文档提供给开发小组成员。这个阶段由测试设计工程师与测试工程师共同参与。构建好的待:,测系统上使用测试用例脚本执行测试数据,其中测试数据是被设计用于测试该应用程序各种特征的。可以使用、等工具,得到测试后的测试结果日志、测试度量、缺陷报告及测试评估总结等。自动化测试的流程自动化测试的流程如下:由业务测试人员制订自动化测试的计划,即自动化测试的概要设计。概要设计中写清进行自动化测试的模块,流程,以及验证点。概要设计的评审。评审的主要目的是概要设计涉及的内容是否适合开展自动化,验证点是否清晰,测试线路的划分是否合理。评审可由需求人员,开

25、发、业务测试和自动化测试人员一同参加。基于的自动化测试系统根据概要设计,由自动化测试人员制作供测试人员填写测试用的自动化用例模板。测试人员进行详细用例设计,填写用例模板,并准各自动化测试使用的测试数据,如供对比的数据文件,执行时需要用到的预设数据。自动化测试人员将用例转换成脚本,开发脚本,对脚本进行试运行。在项目中开展自动化测试,并对测试脚本进行维护。项目结束,制作基线,自动化工作产品封存。流程如图所示:图:自动化测试流程自动化测试的优点和局限自动化测试具有以下优点:()、能执行更多更频繁的测试,使某些测试任务的执行比手动方式更高效,可以更快地将软件推向市场;()、能执行一些手动测试困难或不可

26、能做的测试;()、更好地利用资源,利用整夜或周末空闲的设备执行自动化测试;()、将烦琐的任务自动化,让测试人员投入更多的精力设计出更多更好的测试用例,提高测试准确性和测试人员的积极性;基于的自动化测试系统()、自动化测试具有一致性和可重复性的特点,而且测试更客观,提高了软件的信任度。但自动化测试仍然存在着一定的局限性:()、不能取代手工测试,不可能自动化所有的测试。如测试只是偶尔执行,或待测系统经常变动、不稳定,测试需要大量的人工参与时,就不适宜采用自动化测试。完全的自动化测试只是一个理论上的目标,实际上想要达到的自动化测试,不仅代价相当昂贵,而且操作上也是几乎不可能实现。()、自动化测试工具

27、本身不具有想象力,只是按命令执行。而手工测试时测试执行者可以在测试中判断测试输出是否正确,以及改进测试,还可以处理意外事件。自动化测试能提高测试效率,快速定位测试软件各版本中的功能与性能缺陷,但不会创造性的发现测试脚本里没有设计的缺陷。测试工具不是人脑,要求测试设计者将测试中各种分支路径的校验点进行定制;没有定制完整,即便事实上出错的地方,测试工具也不会发觉。()、自动化测试对测试质量的依赖性较大,在确保测试质量的前提下,实施自动化测试才有意义。()、自动化测试在刚开始执行时,工作效率并不一定高于手动测试,只有当整个自动化测试系统成熟,且测试工程师熟练掌握测试工具后,工作效率才会随着测试执行次

28、数的增加而提高。对于周期短、时间紧迫的项目不宜采用自动化测试。推行自动化测试的前期工作相当庞大,将企业级自动化测试框架应用到一个项目中也要评估其合适性,因此决不能盲目的应用到任何一个测试项目中,尤其不适合周期短的项目,因为很可能需要大量的测试框架的准备和实施而会被拖跨。()、自动化测试的成本可能高于手工测试。自动化测试的成本大致有以下几个部分组成:自动化测试开发成本、自动化测试运行成本、自动化测试维护成本和其他相关任务带来的成本。软件的修改带来测试脚本部分或全部修改,就会增加测试维护的开销;实施测试自动化必须进行多方面的培训,包括测试流程、缺陷管理、人员安排、测试工具使用等,培训的成本也是比较

29、高的。基于的自动化测试系统测试与自动化测试概念的区别测试是通过执行测试用例实现,描述测试用例质量有四个特征:有效性、修改性、可仿效性和经济性。有效性指是否能发现缺陷、或至少可能发现缺陷;可仿效性指测试用例是否能测试多项内容,以减少测试用例的数量;经济性指测试用例的执行、分析和调试是否经济;修改性指每次软件修改后对测试用例的维护成本,通常要平衡这四个方面。自动化测试技术,与测试技术存在着很大区别。自动化的程度与测试的质量是独立的。无论自动执行还是手动执行测试都不影响测试的有效性和仿效性。测试本身的有效性直接导致测试的成败,而自动化测试只对测试的经济性和修改性有影响,自动化测试通常要比手动测试经济

30、得多,自动化测试的方法越好,长期使用获得的收益就越大。测试质量取决于测试执行者实现测试质量的技术;而自动化质量取决于测试自动化者的自动化技术。图说明了测试与自动化测试在测试用例的四个质量特征上的区别。图:测试用例质量图自动化测试发展的现状软件测试自动化,已经成为国内软件工程领域一个众所周知的课题。软件测试从业者都意识到软件测试这项工作走向成熟化、标准化的一个必经之路就是要实施自动化测试。对当前国内软件企业实施或有意向实施测试自动化时面临的主要问题,按实施的不同层次来说主要分为:基于的自动化测试系统()、认为测试自动化是个遥不可及的事情。有这样想法的公司一般是一些小公司,软件成熟度水平不高,不想

31、在测试(自动化)中投入一定的人力和资金。()、对实施测试自动化热情很高,购买了工具,推行了新的测试流程。但是由于前期对自动化测试实施中出现的各种情况预料不足,技术储备不足,在实施过程中夭折。()、实施了自动化测试;然而开发与测试之间,甚至与项目经理之间矛盾重重,出了事情不知如何追究责任;虽然还在勉强维持的自动化测试,但实施的成本比手工测试增加了,工作量比从前更大了,从而造成项目团队人员怨声载道,甚至于感觉自动化测试徒增了不少人工,还不如手工测试。()、自动化测试实施相对比较成功,但或多或少还有些问题,比如测试设计水平不高,新技术研发水平不高,文档不完备,人员分配不合理,脚本和测试用例可维护度不

32、高等等。就目前来说,自动化测试还远远不能达到完全不需要测试工程师干预的程度。我们都知道,软件测试可以被划分成软件测试需求、软件测试计划、软件测试设计、软件测试执行和软件测试评估总结这几个阶段,自动化测试仅仅能够在软件测试设计、执行和评估总结的阶段发挥有限的作用,因此,我们通常把测试自动化理解为“测试的部分过程的部分自动化。当前,普遍认为测试技术的发展方向主要体现为:测试流程方面,逐渐出现以测试驱动开发,需求分析、软件设计、开发等各个阶段均以测试为基础,软件开发和测试完全集成在一起。测试技术方面,自动化测试越发智能,不仅仅是手工操作的一种重复,而且可以进行测试策略的积累和创新。在国外,很多企业意

33、识到繁重的手工测试越来越影响测试的效率和质量,大量的测试用例被自动化,自动化测试开始占据主要地位。而在微软,几乎没有单纯的手工测试人员,基本都是自动化测试人员,由自动化测试人员负责对无法自动化的测试用例进行手工测试。在软件测试处于起步和发展阶段的国内软件业,自动化测试还是一个比较陌生的词语。自动化测试很多时候只是被某些测试人员尝试性地使用在工作当中,而多数企业的自动化测试仍然处于摸索和研究阶段。但是我们也看到,使用各类商业的自动化测试工具开展自动化测试,已经开始有大型软件企业乐于基于的自动化测试系统接受。他们认为商业自动化测试工具往往具有录制一回放功能,可以快速实现自动化测试;虚拟用户功能可以

34、实现并发对软件系统进行性能和压力测试。而一些有条件有能力的企业尝试创新,自己开发了适合自身产品的自动化测试工具。随着软件复杂度的同益提高,测试人员的工作比以往任何时候都更加困难,因为公司和组织希望以更快的速度和更低的成本开发出高质量的应用程序。此外,在很多项目中,测试人员的所有任务实际上都是手动处理的,而实际上,有很大一部分重复性强的测试工作,是可以独立开来自动实现的,可以说,实施测试自动化是软件行业一个不可逆转的趋势。自动化测试加人手测试模式将会兴起:自动化测试负责的大量重复测试,人工测试负责产品深度的测试。对软件测试的探索也将发展为对自动化测试与手工测试相结合的软件测试模式的探索。基于的自

35、动化测试系统第章自动化测试的实施自动化测试实施的条件实施自动化测试的理由实施自动化“需要理由吗?不需要吗?有能力实施自动化测试的公司,在软件能力成熟度上都应该达到一定的级别,有专门的测试部门或团队,测试分工明确。但是如果要组建专门的自动化测试团队,或者为测试团队引入自动化测试技术,还是需要不少人力,物力及时间上的投入的,作为企业本身,需要一些说服自己开展自动化测试的理由。首先,测试人员的工作比以往任何时候都更加困难,因为公司和组织希望以更快的速度和更低的成本开发出高质量的应用程序。自动化的回归测试可以在较少的时间执行更多的测试,还可以执行一些手工测试困难或不可能做到的测试,如功能菜单的全部遍历

36、,多环境测试的同时开展等。一个测试人员一次只能在一个环境中进行测试,实现了自动化,各以一次投入多台机器同时展开不同任务的测试。在很多项目中,测试人员的所有任务实际上都是手动处理的,而实际上,有很大一部分重复性强的测试工作,是可以独立开来使用自动化实现的。把独立出来的工作交给自动化测试机器去做,把人解放出来,去关注一些比较深层次的问题,比如软件的功能需求,界面设计是否合理,使测试更加深入,充分利用人的主动性和智慧,更好的结合利用了人的资源和机器的资源。还有,在大型项目中测试团队和其他的团队之间没有足够的合作,无法促进彼此的工作。开发说,测试广度和尝试不够:测试说,开发时时刻刻都在改变内容,往往没

37、等深入测试,软件又增加了一个版本,日构建变成了“时构建甚至“分构建”。而使用自动化测试可以部分地解决开发与测试的矛盾,提高软件测试的可信任度。最后,从个人角度来说,测试人员通常很难花费大量时间来学习新技能;这是目前国内测试从业者的现状,太多的企业为了节约成本而将刚刚走出校门基于的自动化测试系统的毕业生作为测试工程师,他们每日做着繁忙的重复工作,又基于自身技能的不深,虽怀博览群书的心愿却不知从何出入手。所谓光阴似箭,因为一转眼我们就说到未来的年、年后,我们这些技能不深的测试工程师能做什么呢?而软件测试自动化,也是未来测试工程师或即将成为测试工程师一项强有力的工作技能。可以说,实施测试自动化是软件

38、行业一个不可逆转的趋势,如果在这个领域走在了前列,无论从企业的核心竞争力还是个人的工作技能来说,都有巨大的优越性,而国内众多的软件厂商也的确准备或正在着手开展着这项工作。引入自动化测试的条件要引入自动化测试,首先要对自动化测试有正确的认识,以避免由于认识不足而对自动化测试产生过高的期望。虽然自动化测试有很多优点,我们也要看到自动化测试本身的一些限制,只有更多的了解自动化测试的特性,才能更好地实施自动化测试。正如本文节所述,自动化测试不能取代手工测试,引入自动化测试后完全不需要手工测试人员的想法是完全不正确的。另外,手工测试比自动化测试发现更多的缺陷,自动化测试是在软件相对稳定的状态下执行,否则

39、投入的成本将会很大,因此,不会发现比手工测试更多的缺陷,所以自动化测试只能在一定条件下提高测试效率,但不能提高有效性,对测试质量的依赖极大。另外,工具本身不具有想象力,缺少灵活性,没有创造性,虽然有“测试猴子”,但与人相比,测试猴子只能在测试速度上有提高,在缺陷识别分析能力上,却不能与人相提并论。自动化测试能大大降低手工测试工作,但决不能完全取代手工测试。完全的自动化测试只是一个理论上的目标,实际上想要达到的自动化测试,不仅代价相当昂贵,而且操作上也是几乎不可能实现。一般来说,一个程序的测试工作有利用自动化测试完成已经是非常好的了,达到这个级别以上将过大的增加测试相关的维护成本。要引入自动化测

40、试,首先是对企业自身现状的评估分析。第一,从企业规模上来说,没有严格限制。无论公司大小,都需要提高测试效率,希望测试工作标准化,测试流程正规化,测试代码重用化。所以第一要做到的,就是企业基于的自动化测试系统从高层开始,直到测试部门的任何一个普通工程师,都要树立实施自动化测试的坚定决心,不能抱着试试看的态度。一般来说,一个这样的软件开发团队可以优先开展自动化测试工作:测试一开发人员比例合适,比如:到:;开发团队总人数不少于个。当然,如果你的公司只有三五个测试人员,要实施自动化测试绝非易事;不过可以先让一个、两个测试带头人首先试着开展这个工作,不断总结、不断提高,并和层层上司经常汇报工作的开展情况

41、,再最终决定是否全面推行此事。第二,从公司的产品特征来说,一般开发产品的公司实施自动化测试要比开发项目的公司要优越些。原因很简单,就是测试维护成本和风险都小。产品软件开发周期长,需求相对稳定,测试人员可以有比较充裕的时间去设计测试方案和开发测试脚本;而项目软件面向单客户,需求难以一次性统一,变更频繁,对开发、维护测试脚本危害很大,出现问题时一般都以开发代码为主,很难照顾到测试代码。但决不是说做项目软件的公司不能实施自动化测试,当前国内做项目的软件公司居多,有很多正在推行瑚等级标准,这是好事情;只要软件的开发流程、测试流程、缺陷管理流程规范了,推行自动化测试自然水到渠成。第三,标准化的开发和管理

42、流程,不管是瑚还是,不管是开发流程、测试流程还是缺陷管理流程,只能企业具体了一定的标准化程序,那么完全具备实施自动化测试的条件。自动化测试工具选择的方法开发工具总比学习工具花时间,在这里我们不讨论自己开发测试工具。如果企业想要开展自动化测试还没有一个测试工具,就需要调查一下到底什么商业工具适合自己。然而,工具市场不是开始寻找的地方,从自己的需求入手是很重要的。只需要适当的花点时间就能确定自己做了一个最好的决定。工具选择过程的最终目的是要证明一个工具能使测试者在自己的公司里对测试进行自动化,要达到这一目标,选择工具的方法是很重要的。选择一个自动化测试工具本身就是一项工程,工程的管理者和涉及到的人

43、员都应当给予工具选择工程适当的优先权。可以组建一个工具选择小组,需要基于的自动化测试系统有一个小组的人来为工具选择决策,因为如果由一个人进行决策,就很难使工具在执行阶段具有广泛的用户基础。确定自己的需求最重要,对测试工具可能有一大堆的需求,有些需求与测试者现在具有且希望用测试工具来解决或至少是减轻的测试问题相关。其他需求包括限制工具选择的技术和非技术因素。经验告诉我们,不要对一个工具情有独钟,工具选择要从明确要解决哪个或哪些问题开始,选择的工具可以提供问题的解决方案。测试工具的选择应从长远发展的角度出发,综合全面考虑工具的特性。选择工具时主要考虑以下几点:()、录制回放。在自动化测试工作中,该

44、功能是绝大多数专业测试人员开始自动化测试尝试的第一步。录制回放一个手工测试是否简单容易?是否支持底层属性捕获,精确屏幕定位等;录制回归中能否正确地识别对象,录制的脚本是否易于阅读和理解。()、是否支持测试。网络的快速发展,基于的应用越来越多,工具能否提供页面装载的提示信息,是否能判定测试页面中的超连接是否存在?能否测试页面对象功能,如对象的状态,是否包含数据?能否从页面上提取数据,定位数据和对象?()、数据功能。一般而言,应用程序都有接收和存储数据功能。为了测试这些应用程序,我们需要设计和产生这些数据输入到应用程序中。在自动化测试中,若工具提供这个功能,则在测试中我们可以定义数据产生规则,让工

45、具自动产生大量这些数据对应用程序进行测试,该功能在测试数据库应用程序尤其有用。()、对象映射()功能。如果软件工程师在开发软件时所用的都是一些标准而非定制的对象,就不需要自动化测试工具提供这一功能,但实际上几乎每个应用程序都包含一些非标准的控件或对象,目前市面上的多数工具都能支持应用程序中使用的标准控件,如、等,但对一些定制的控件却无能为力,如果工具提供对象映射功能,则当一个定制控件表现类似于一个标准控件时,可以通过映射功能,让其归类为这一类控件。对象映射功能的实现通常考虑以下问题:()指定一个定制控件行为或表现类似与某一类标准控件,能否映射成该类控件?()映射的控件是否支持该类标准控件的所有

46、方法?()能否增加定制控件到基于的自动化测试系统工具的控件集里?()、图像测试。这功能不是测试工作的主要组成部分,但却不能缺少,有时必须要测试一个位图或类似的图片,在多数的应用程序中会带有一些绘图控件,而在(地理信息系统)应用软件的测试中,这一功能作用尤为重要。()、测试错误恢复能力。测试错误恢复总的来说是自动化测试中最困难的部分,但对自动化测试工具而言是必备功能。而自动化测试工具的这一功能一般决定于它本身能捕获错误的数量,可以识别的错误类型以及如何从错误中恢复等等。这功能的实现一般可以从解决以下问题上得到体现:()如果测试过程中程序崩溃了怎么办?()如果一个程序功能接收不到应该出现的提示或信

47、息怎么办?()如果出现错误信息怎么办?()如果访问一个网站但返回一个错误信息怎么办?()如果无法连接数据,如何略过有关的测试?()、对象识别能力。测试工具识别对象一般通过析取对象内部的信息,然彰后给出对象名字、等等,通过这些识别标志在函数调用中定位这些对象。测试工具通常会提供一些可以唯一的标志识别对象或窗体有关属性的详细信息,也应该提供一种通过鼠标选定对象,就可以了解该对象有关信息的关联显示或通过某种方式去浏览所有对象和属性的方法。大部分测试工具都提供能识别应用程序中的对象并将识别结果用一个目录树来显示的功能,一般而言只是识:,别能力或效率等的差别而已。()、脚本语言拓展功能。在自动化测试中会

48、经常遇到的一个问题就是:工具不是万能的,有些测试利用工具目前提供的功能无法实现测试怎么办?这涉及测试工具的拓展功能,如果测试工具的脚本语言无法实现这些方面的测试,能否可以使用其他编程语言如、等创建,然后通过脚本调用这些来实现,或者通过调用等其他方法实现。这个问题一般只会在熟练使用测试工具并将工具的内在功能都已挖掘完毕才会提出,但这需要测试工具支持脚本语言拓展功能才可以。注意一点就是:有些工具提供一些扩展函数的功能,如创建用户白定义函数、方法、类,这只是已有数据类型和函数的组织与集成,而不是这里所说的脚本语言拓展功能。()、环境支持。测试工具能应用于何种类型的开发语言?是否支持最近的基于的自动化

49、测试系统版本,支持哪个等,是否支持和等操作系统?应尽可能选择语言和操作系统覆盖面比较广测试工具。这是一个关键的问题。如果测试工具不支持你的开发环境或应用程序,自动化测试将遇到巨大的困难,甚至失败,将不得不又回到手工测试。()、费用。价钱是目前国内很多公司采购工具都比较看重的因素。但相对而言,测试工具的价格大体上相差不大,即使有差别在功能上也有对应的差别。价格的差异会体现在功能的差别上,例如就可能比、和便宜好几倍,但是功能上也会有比较大的差异,一般而言,”一分钱一分货”。在资金投入上,除了购买工具外,还需要每年支付工具价钱到的技术服务费。有些工具可能价钱比别的工具价钱稍微便宜,但技术服务费却高一

50、点,从长远来看,其总投入可能不比其他工具便宜或甚至能更高。自动化测试实施步骤对于自动化测试的实施,各企业根据自己的情况,步骤可能会有所不同,我们按照在软件开发项目中采用的标准步骤组织自动化测试的实施,重点关注自动化测试的相关事宜和挑战。、改进软件测试过程。很多测试小组都是在回归测试环节丌始采用自动化测试的方法。回归测试需要频繁的执行,再执行,去检查曾经执行过的有效的测试用例没有因为软件的变动而执行失败。回归测试需要反复执行,并且单调乏味。怎样才能做好回归测试文档化的工作呢?通常的做法是采用列有产品特性的列表,然后对照列表检查。这是个很好的开始,回归测试检查列表可以告诉你应该测试哪些方面。在开始自动化测试之前,需要完善回归测试检查表,并且,确保测试小组已经采用了确定的测试方法,指明测试中需要什么样的数据,并给出设计数据的完整方法。

温馨提示

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

评论

0/150

提交评论