您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 基于代码生成技术的自动化测试工具的设计与实现
华中科技大学硕士学位论文基于代码生成技术的自动化测试工具的设计与实现姓名:谈飞申请学位级别:硕士专业:软件工程指导教师:吴涛2010-11 I华 中科 技 大学硕士学位论 文 摘要国内的软件企业逐渐由过去的作坊式开发过渡到如今的工厂式规模运作,软件工程的管理也越来越规范。软件测试是软件工程的重要组成部分,又是软件开发不可或缺的环节。随着软件规模的扩大,想要保证软件的高质量就变得越来越困难。项目团队投入到软件测试中的成本比例呈上升趋势。然而,对软件测试的重视和成本的投入,与优秀测试人员数量的稀少成为一个尖锐的矛盾,因此,寻求软件自动化单元测试工具的帮助,在编写单元模块代码的初期对软件进行系统全面的单元测试,就成了降低测试成本,提高软件质量的突破口。在研究并分析了计算反射技术和两种比较成熟的代码生成技术——即基于模版的代码生成技术和基于模型驱动的代码生成技术——的基础上,提出了一个使用基于模版的代码生成技术来实现自动化测试工具的方案,具有通用性、可扩展性、易用性等特点。在详细分析自动化测试工具系统需求的基础上,描述了其系统构架设计、界面设计、以及各个子模块的详细设计方案,重点讨论了代码分析引擎模块和代码生成引擎模块的设计与实现过程,给出了统一建模语言描述的设计图和部分关键实现代码。设计与实现的Eclipse自动化测试工具,能够和主流开发平台Eclipse无缝集成。针对拥有返回值和没有返回值这两种不同类型的被测试方法,代码生成引擎模块均能根据相应的模版自动生成符合JUnit测试框架的单元测试脚本源代码,具有很好的通用性。国内对软件自动化测试的研究还处在刚刚起步的阶段。设计与实现基于代码生成技术的自动化测试工具,对软件自动化测试领域的进一步发展具有较高的参考价值。关键词:软件测试自动化测试代码生成计算反射 II华 中科 技 大学硕士学位论 文 AbstractDomesticsoftwareenterpriseshavegraduallyevolvedfromthepreviousworkshop-styleoperationtothetoday'sfactory-styleoperation.Consequentlythemanagementofsoftwareprojectshasbecomeincreasinglystandardized.Softwaretestingisanimportantpartofthesoftwareengineeringandanabsolutelynecessarylinkinsoftwaredevelopment.Withtheexpansionofsoftwarescale,itbecomesincreasinglydifficulttoassurethehighqualityofsoftware.Thecostproportionofsoftwaretestinginoneprojectisontherise.Moreandmoreimportancehasbeenplacedonsoftwaretestinganditscost,however,ontheotherhand,excellenttestingengineersarescarce.Therefore,usingautomaticunittestingtoolstohelpprojectteamdoacomprehensivetestforallthesystemmodulesatanearlystagewillbecomeabreakthroughforloweringthecostoftestingandimprovingthequality.Thetechnologyofcomputationalreflection,thetechnologyofcodegenerationbasedontemplates,andthetechnologyofcodegenerationbasedonmodeldrivenareresearchedandanalyzed.Onthisbasis,amethodthatimplementstheautomatictestingtoolusingthetemplate-basedcodegenerationisproposed.Thetoolhasthefeatureofversatility,scalability,easeofuseandsoon.Onthefoundationofparticularlyanalyzedintherequirementsofautomaticsoftwaretestingtool,thesystemarchitecturedesign,theuserinterfacedesign,andthedetaileddesignofallthemoduleshavebeendescribed.Thedesignandimplementationofthecodeanalyzermoduleandthecodegeneratormodulearefocused.TheblueprintdescribedusingUMLandtheimportantsourcecodesaregiven.ThedesignedandimplementedEclipseAutomaticTestingToolcanbeseamlesslyintegratedintothemainstreamdevelopmentplatformEclipse.CodegeneratormodulecanautomaticallygeneratetheJUnittestscriptsourcecodesaccordingtothevariouskindsoftemplates,whicharecorrespondingtothemethodswithreturnvaluesandtheoneswithoutreturnvalues.SotheEclipseAutomaticTestingToolhasgoodversatility.Domesticresearchonautomatictestingisstillinitsinfancystage.Thereforethedesignandimplementationoftheautomatictestingtoolbasedoncodegenerationhasahighreferencevalueonthefurtherdevelopmentofsoftwareautomatictestingfield.KeyWords:SoftwareTestingAutomaticTestingCodeGenerationComputationalReflection 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。保密□, 在 年解密后适用本授权书。 不保密□。 (请在以上方框内打“√”) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日本论文属于 1华 中科 技 大学硕士学位论 文 1绪论随着软件在各个行业的普及以及软件规模的发展,测试在软件生命周期中的地位显得日益重要[1],它可以在系统正式使用前发现系统中存在的各类问题,从而降低系统运行时的风险。单元测试是一种昀基本的测试方法,它主要针对基本功能模块进行测试[2]。通过单元测试,项目团队可以在第一时间发现代码中出现的各类问题,从而降低后期集成测试、验收测试以及系统出现运行期错误时的成本。为了做到测试的相对完备性,需要团队耗费大量的精力设计测试用例和编写测试代码。设计一种通用的自动化测试工具,帮助项目团队自动生成规范的测试用例源代码,降低测试成本,已经成为软件企业当前所关心的重要课题。1.1研究背景国内软件企业经历了无数坎坷后,正以每年百余家的数量通过各级CMMI认证,逐渐由过去的作坊式开发过渡到如今的工厂式规模运作,软件工程的管理也越来越规范[3]。为实现国家产业结构的调整,我国正从劳动密集型产业向知识密集型产业转移[4]。软件测试是软件工程的重要组成部分,又是软件开发不可或缺的环节[5]。作为国内软件企业,要想在同行业树立自己的品牌,在国际软件外包业务中取得更多的市场份额,仅靠以往的人力资源优势已经不太现实,只有提高软件质量才是软件企业的唯一出路。市场对软件质量重要性的认识逐渐增强。所以,软件测试在软件项目实施过程中的重要性日益突出。微软公司的软件项目团队中,软件开发人员与软件测试人员的人数比例接近1比1,而且优秀测试人员的待遇甚至比程序员还要高。这两年来国内软件测试人员的需求不断增大,越来越多的IT企业认识到了软件测试的重要性,为了保证软件发布的质量,企业投入到软件测试中的成本甚至超过整个项目开发成本的60%[6]。然而据昀新的调研数据显示,国内公司测试人员与开发人员的比例集中在1比3 2华 中科 技 大学硕士学位论 文 至1比5左右,19%的公司该比例达到甚至超过1比7,这与国外软件业1比1的比例相差甚远。另外,国内软件测试应聘岗位比较欠缺的是手工功能测试人员,占整个测试岗位的比例为63%[7]。对软件测试的重视和成本的投入,与优秀测试人员数量的稀少成为一个尖锐的矛盾,因此,寻求软件自动化单元测试工具的帮助,在编写单元模块代码的初期对软件进行系统全面的单元测试,就成了降低测试成本,提高软件质量的突破口。1.2课题的研究目的和意义本文对符合JUnit自动化单元测试框架的测试脚本进行归纳与总结,归纳出比较通用化的测试用例模版。针对Java程序员经常使用的集成开发环境Eclipse,使用Eclipse插件开发环境进行设计开发,实现了一个集成到Eclipse平台中的自动化单元测试工具系统。Java程序员能够借助于Eclipse自动化测试工具快速便捷的创建出基于JUnit框架的单元测试脚本,从而减少软件单元测试的重复性劳动,提高软件单元测试的效率。该系统具备良好的易用性和可扩展性,并且能够分析被测试类的元信息,使用代码生成技术自动创建出JUnit测试用例类的源代码。研究并实现Eclipse自动化测试工具,将帮助Java开发团队构建出更加健壮的软件,降低软件测试成本,提高软件质量,缩短项目开发周期,从而提升企业在市场中的竞争力。1.3国内外研究概况为了提高软件测试效率,国内外很多公司和非盈利开源社区都从不同角度设计了多种解决方案。国外方面,目前用于测试的工具比较多,这些测试工具一般可分为:白盒测试工具、黑盒测试工具以及性能测试工具等[8]。白盒测试工具一般是针对代码进行测试,包括对代码进行静态测试的工具和进行动态单元测试的工具[9]。静态测试工具的代表有Telelogic公司的Logiscope软件[10],PR公司的PRQA软件[11]。动态测试工具的代表有parasoft公司推出的jtest工具[12], 3华 中科 技 大学硕士学位论 文 基于xUnit架构的单元测试工具如JUnit[13,14]、CppUnit[15]、NUnit[16],微软公司的VisualStudioUnitTestin
本文标题:基于代码生成技术的自动化测试工具的设计与实现
链接地址:https://www.777doc.com/doc-17230 .html