基于XML的COM构件自动化测试技术研究.docx
《基于XML的COM构件自动化测试技术研究.docx》由会员分享,可在线阅读,更多相关《基于XML的COM构件自动化测试技术研究.docx(73页珍藏版)》请在课桌文档上搜索。
1、随着构件的广泛应用,基于构件的软件工程也应运而生,其目标是在一个框架内用即插即用的软件构件定制构造或者是商业成品(COmmerCialOff-The-Shelf,COTS)构件一一组成应用系统。基于构件的方法使得大型分布式软件系统的开发和维护变得更为简单,可以提高软件的复用性和软件开发效率。但是,复用质量低下的软件构件可能会起到相反的作用,不合理的使用高质量的软件构件也可能带来灾难性的后果。因此需要对构件进行测试。使用软件测试自动化技术提高软件测试的效率己经成为软件测试发展的必然趋势,构件的自动测试也成为一个必不可少的环节。但传统的自动测试技术,由于其设计模式的局限性,已经不能适用于构件的自动
2、测试。因此,迫切需要研究CoTS构件自动化测试技术。基于XML的COM构件自动化测试技术是对第三方COM构件进行自动化测试的有效技术。该技术主要包括COM构件测试自动化框架和实现该框架的Cc)M构件自动化测试工具C0MCAT(C0MComponentAutomatedTest)0整个框架主要由构件测试元数据自动提取与描述、构件测试脚本自动生成、构件测试脚本自动执行、构件测试结果自动验证与记录四个环节组成。XML技术被充分应用到构件测试自动化的各个环节。该框架将面向对象单元测试自动化框架XUnit与数据驱动的测试框架加以结合,并且做了改进。该框架还从构件使用者和测试者的角度设计了内涵丰富的构件元
3、数据,并且针对CoM构件,通过访问类型库来自动获取构件结构信息元数据,并用XML描述。该框架还综合运用多种技术辅助实现测试过程的自动化。实验表明,该技术有效、自动化程度较高、投入回报率较高。关键词:构件测试,测试自动化,自动化测试工具,元数据,类型库AbstractWiththewidelyadoptionofthecomponents,Component-BasedSoftwareEngineeringemergesasthetimesrequire.Itsgoalistoassemblyapplicationsystemsusingplug-and-playsoftwarecomponen
4、tswhichareeithercustom-builtorCOTS(CommercialOff-The-Shelf)inaframework.Component-basedmethodmakesthedevelopmentandmaintenanceoflargedistributedsoftwaresystemseasieranditcanincreasethesoftwarereusabilityanddevelopmentefficiency.However,reusingsoftwarecomponentsofinferiorqualitymayhavethereverseimpac
5、t,andreusingsoftwarecomponentsofsuperiorqualityincorrectlymayalsobringdisastrouseffect.Socomponentsneedtobetested.Applyingsoftwaretestautomationtechniquestoimprovetheefficiencyofsoftwaretestinghasbecometheinevitabledevelopmenttrendofsoftwaretesting,andtestautomationofthecomponentshasalsobecomeaneces
6、sarysection.Butduetothelimitationofdesignpattern,conventionaltestautomationtechniquescannotadapttotestautomationofthecomponents.SotheresearchonCOTScomponentstestautomationtechniquesisbadlyneeded.XML-basedCOMcomponentstestautomationtechniquesareeffectivetestautomationtechniquesonthird-partyCOMcompone
7、nts.ltmainlyincludesCOMcomponenttestautomationframeworkandCOMcomponentautomatedtestingtoolCOMCAT(COMComponentAutomatedTest)whichimplementsthatframework.Thewholeframeworkiscomposedoffoursections,whichare,componenttestmetadataautomatedretrievalanddescription,componenttestscriptautomatedgenerating,comp
8、onenttestscriptautomatedexecuting,componenttestresultsautomatedverificationandlogging.XMLtechniquesarefullyappliedtoeverysectionofcomponenttestautomation.Theframeworkcombinesobject-orientedunittestautomationframeworkxUnitanddata-driventestframeworktogetherandmakessomeimprovements.ltalsodesignscompon
9、entmetadatawithplentyofcontentfromcomponentusersandtestersview.EspeciallyforCOMcomponents,itretrievescomponentmetadataaboutstructuralinformationautomaticallybyaccessingtypelibraryanddescribesthatwithXML.ltalsosyntheticallyutilizesseveraltechniquestoassistaccomplishingtheautomationoftestprocess.Anexp
10、erimentindicatesthatthesetechniquesareeffectiveandofhighdegreeofautomationandhighreturnoninvestment.Keywords:ComponentTestingiTestAutomationiAutomatedTestingTool;Metadata;TypeLibrary摘要IABSTRACTIll1绪论1.1 研究课题的背景与意义(1)1.2 国内外研究现状(4)1.3 本文主要内容及组织(9)2构件测试及其自动化1.1 基于构件的开发(10)1.2 构件测试方法(11)1.3 构件测试的自动化及其工
11、具(15)1.4 本章小结(15)3 COM构件测试自动化框架3.1 测试自动化总体框架(16)3.2 XML语言与构件测试自动化(18)3.3 测试脚本生成自动化(26)3.4 测试程序运行自动化(34)3.5 本章小结(36)4 COM构件测试元数据4.1 构件元数据(37)42COM构件的类型信息及其提取(39)4.3 类型信息的描述与展现(41)4.4 本章小结(45)5第三方COM构件自动化测试工具的实现5.1 自动化测试工具的实现(46)5.2 实验(49)5.3 本章小结(54)6总结与展望6.1 论文总结(55)6.2 进一步工作展望(56)致谢(57)参考文献(59)1.1
12、研究课题的背景与意义自从1968年NATO会议首次提出“软件危机”以来,软件工程己经取得大进展,然而这一危机并没有消失。随着计算机应用领域的迅速扩大,软件及复杂性的不断提高,软件危机愈加明显地暴露出来,提高软件生产率成为产业的当务之急。要解决这个问题,软件复用无疑是一个有效的方法。软件复用(SOftWareReUSe)是将己有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费1。它的主要思想是,将软件看成是由不同功能部分的“组件”所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具。这样,如果建立了可以完成各种工作的组件,编写特定软件的工作就变成将各种不同组件组
13、织连接起来的简单问题,这对于软件产品的最终质量和维护工作都有本质性的改变。从早期的子函数到后来的面向对象的类的概念,软件复用的粒度逐渐变大。但是以类为封装单位的复用不能解决异构互操作问题。构件可以将一组类的组合进行封装,隐藏具体的实现细节,通过接口向外界提供服务。构件可以将复用提高到更高的复用层次。进入20世纪90年代以后,越来越多的软件开发组织在系统开发过程中,开始采用可复用的软件构件2。ClemenzSZyPerSkiF认为构件是“一个软件单元,具有一组契约或合同规定的接口。构件与它所在的环境/上下文有清晰的依赖关系,并且仅仅与此相关。构件可以被独立配置,以便由第三方进行合成(新的软件)。
14、一个广为接受的定义是:构件是具有符合特定协议的接口的组合单元,它的上下文依赖性是完全显式的,构件可以被独立地部署,并由第三方组合。在与其它构件组合时,不需要修改构件的源代码,只需要修改构件的接口和属性。构件的接口分为两种:一种是构件可以向外界提供的服务的接口,其它构件可以通过这些接口来调用构件提供的服务;另一种是构件期望从其它构件获得服务的接口2。目前,工业界主要有三个不同的构件规范,即SUN公司的EJB,Microsoft公司的8M/D8M4,对象管理组织OMG的8RBAS这些技术提供了从构件开发应用系统的通信与协同。其中微软的COM构件应用十分广泛,包括WindOWS操作系统和OffiCe
15、办公套件都大量使用了COM构件0。COM的全称是ComponentObjectMode1,也就是构件对象模型。COM是一个二进制的标准,COM标准包括规范和实现两大部分。规范部分定义了构件和构件之间通信的机制,这些规范不依赖于任何特定的语言和操作系统,只要按照规范,任何语言都可使用。COM标准的实现部分是8M库。8M库为Cc)M规范的具体实现提供了一些核心服务。一般是在WindOWS平台下,并且被Microsoft推出的开发工具和类库支持。COM标准详细规定了一个COM构件所应具有的内存结构。COM对象间的交互完全基于对此内存结构的操作。因此可以在很大程度上忽略不同编程语言,应用环境之间的差别
16、,解决了重新编译重新发行的问题7。COM用接口的概念对构件的功能属性进行完全的封装。与构件的通信必须通过接口进行。接口不仅仅是一个逻辑上的概念,而且也存在着与之相对应的物理内存结构虚表(VTABLE)。一个对象可以对应多个接口,一个接口也可以由多个对象所实现,表现出灵活的多态性。COM接口同时也为版本管理提供了方便。当使用新版本的构件替换老版本时,只要该构件实现了旧版本的接口(通过包容、聚合等手段),就保证了其与原用软件系统的兼容。同时新增功能(新的接口)又可被自然地使用。接口完全封装了内部功能、属性的具体实现,使得COM对象对外表现为“黑盒”结构,完全吻合面向对象系统所要求的“强内聚性”。但
17、由于对接口的过多强调,Cc)M构件一般不具备广泛提倡的“弱耦合性”的特点。总之,OOM的设计思想是构件化构建软件,软件由多个经过编译的二进制形式的构件构成(DLL或EXE形式),因此软件的更新就可以通过更新软件的某一个构件来实现,软件的实现可通过多个构件搭建而成。这个思想是借鉴了硬件开发中的模块化思想一在其它的工程领域,构件的概念已经得到了广泛的接受与使用8o而基于8M的复用思想是:以接口的标准化推动服务的标准化,为复用软件的开发和使用建立规范。在构件广泛应用的潮流中,基于构件的软件工程(Component-BasedSoftwareEngineering,CBSE)9.10这个新领域也应运而
18、生,其目标是在一个框架内用即插即用的软件构件(定制构造或者是商业成品(CommercialOff-The-Shelf,COTS)构件11-131)组成应用系统。基于构件的软件工程,包括COTS构件的使用,可以减少从头开始的软件开发中常常碰到的一些问题。特别是COTS的使用,被视作一种既能增加可靠性与生产力,又能减少大型系统的交付时间的方式。基于构件的方法使得大型分布式软件系统的开发和维护变得更为简单,可以提高软件的复用性和软件开发效率。但是,过多依赖复用也带来了新的问题,复用质量低下的软件构件可能会起到相反的作用,不合理的使用高质量的软件构件也可能带来灾难性的后果,如阿丽亚娜5号火箭发射失败就
19、是由于未对构件进行升级就复用造成的14oAdrita指出构件失效产生的后果大于测试的费用时,就要进行测试。而构件测试与传统的软件测试相比,还有其特殊性15:(1)构件测试的语言无关性、跨平台。跨平台的调用会有许多问题。而且不同语言和系统的环境,也会造成对构件的理解上的歧义。例如:当构件的接口函数的实现部分是从其它基类继承来且还有开发者的部分代码时,这样跨平台测试,当返回错误结果时,无法确定是继承关系错误还是开发的代码错误10。(2)构件的严格封装性。封装带来测试的障碍。与面向对象和结构化软件的测试不同,接口测试是构件测试的首要任务。因为构件的全局数据是不允许直接访问的,构件内的数据访问一般用G
20、et和Set方法。构件的接口对客户是可见的,但由于接口的说明没有强制性要求,因此并非所有的接口都有详细说明。构件测试要求有一种途径能访问到所有的属性和方法,以便测试到所有的构件状态。(3)构件是二进制代码级的复用。与传统软件的源代码复用不同,构件是二进制代码复用。构件的使用者未必了解构件的源代码,而构件供应商一般仅提供构件的说明。尤其是对于CoTS构件,出于商业机密考虑,CoTS构件的源代码通常是不可得的。另外,由于构件的描述文档也不是特别详细,在开发高可靠的软件系统时通常需要构件的源代码和详细的描述文档,而且构件使用者对构件功能的理解也会与构件开发者有出入,这就给构件测试带来了难题。(4)构
21、件以代码复用为目标。代码的复用率越高,代码的效益也越高,这一目标决定了构件的健壮性和稳定性要求比其它软件更高。构件的故障不仅影响到开发企业,还影响到以构件为平台的二级或更多级的开发商甚至是使用者,这就要求对构件进行更加充分、更加严格的测试,减少程序的错误。随着软件规模的增加,测试工作量的增大,软件开发周期的缩短,使用软件测试自动化技术提高软件测试的速度和效率就成为了软件测试发展的必然趋势。使用软件测试自动化技术能完成许多手工测试无法实现或难以实现的测试。正确、合理地实施自动化测试,能够快速、彻底地对软件进行测试,从而提高软件质量,节省经费,缩短产品发布周期。另外,自动化测试还能排除一些人为的因
22、素(如遗漏、失误等等)。自动测试技术是测试技术的一个分支,它的研究重点是如何最大可能地进行自动化测试、在哪些方面可以进行自动化以及自动测试工具的开发和使用17。目前应用的软件测试工具种类很多,如企业级测试工具WinRUnner,性能负载测试工具Load-RUnner,单元测试工具CPPUnit、JUnit等,都具备一定的自动测试能力。但从测试原理来看,它们所进行的都是基于源代码的测试,测试人员如果使用这些工具编制自动测试程序,不但要熟悉测试对象的源代码,而且经常需要调试测试脚本,不可避免地造成了工时的延长和交流的冗余18o随着构件技术的发展,构件的自动测试成为一个必不可少的环节。但传统的自动测
23、试工具,由于其设计模式3的局限性,已经不能适用于构件的自动测试。它们具有如下缺陷:测试工具不能独立完成整个测试过程;编写测试用例是一项繁琐的任务;测试脚本常常需要编写和调试19;仍然采用基于源代码的测试模式,要求待测的构件提供特定的测试接口,或者在实现代码中嵌入测试语句,未考虑到COTS构件具有的接口不变性和源码隐藏的特点。它们都不能满足构件的自动测试的需求。因此,迫切需要开发COTS构件自动化测试工具。1.2 国内外研究现状1.2.1 构件测试的理论基础当前,国内外研究机构在构件可能存在的缺陷、构件的可测性、构件测试的目标、内容、测试中要解决的问题等方面都做了一定的研究,为构件测试的进一步研
24、究打下了理论基础。构件软件集成中会遇到的两类缺陷:服务相关的缺陷(SerViCe-related)和结构相关(StrUCmre-related)的缺陷120。服务相关的缺陷可能是语法缺陷、语义缺陷和非功能缺陷;结构相关的缺陷(即与系统结构相关的缺陷)可能来源于有问题的连接件,有问题的公共基础设施和有问题的拓扑结构21o构件的可测试性是设计和测试软件程序及构件的重要概念之一。运用具有良好的可测试性的程序和构件来构建软件,可以简化测试操作、减少测试开销、提高软件质量22。在构件工程中,有几种不同的构件可测试性的观点,包括构件可观察性(observability)构件可跟踪性(traceabilit
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 XML COM 构件 自动化 测试 技术研究

链接地址:https://www.desk33.com/p-890878.html