(计算机软件与理论专业论文)基于uml的集成测试用例自动生成方法的研究.pdf_第1页
(计算机软件与理论专业论文)基于uml的集成测试用例自动生成方法的研究.pdf_第2页
(计算机软件与理论专业论文)基于uml的集成测试用例自动生成方法的研究.pdf_第3页
(计算机软件与理论专业论文)基于uml的集成测试用例自动生成方法的研究.pdf_第4页
(计算机软件与理论专业论文)基于uml的集成测试用例自动生成方法的研究.pdf_第5页
已阅读5页,还剩63页未读 继续免费阅读

(计算机软件与理论专业论文)基于uml的集成测试用例自动生成方法的研究.pdf.pdf 免费下载

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

文档简介

中山大学硕士学位论文 论文题目: 专业: 硕士生: 指导老师: 基于u m l 的集成测试用例自动生成方法的研究 计算机软件与理论 林诸鸣 郭清顺研究员 摘要 测试用例生成作为软件测试最为关键的环节,它是需要耗费大量的劳动力和 时间的步骤,因此对于测试用例的自动生成已经成为了一种迫切的需求。同时, 在软件开发过程中,u m l 已经成为了面向对象软件开发建模语言的工业标准。 因此,本文重点研究一种通过软件u m l 模型图自动生成集成测试用例( 类 簇级测试用例) 的方法,以减少软件开发的开销。同时,由于u m l 自身在形式 语义上的缺陷限制了对它的形式化分析,必须首先将u m l 模型形式化,才可以 进行下一步的分析并产生测试用例。 本文首先对软件测试尤其是基于u m l 的测试方法的现状进行了研究分析, 指出u m l 模型用于测试的优势所在,并重点分析了u m l 各种模型图的可测试 性和存在的缺点。 同时,本文引入和改进了一种基于p e t r i 网的软件模型,并研究了从u m l 的类图、状态图、通信图中生成该p e t r i 网软件模型的方法。 在此基础上,本文利用p e t r i 网分析技术,对生成的软件模型进行可达分析, 由此从该模型中产生所有的测试覆盖路径,并将测试覆盖路径上变量约束条件转 化为约束条件满足问题,由此产生能覆盖所有可达路径的测试用例集。 本文最后,设计并实现了一个基于上述方法的集成测试用例自动生成的原型 工具,并将该工具应用于一个例子,同时使用测试用例的充分性准则对生成的测 试用例进行评价,由此证明了本文介绍的测试用例生成方法生成的测试用例满足 了测试充分性准则的要求。 关键字:软件测试;u m l 模型;测试用例自动生成; 中山大学硕士学位论文 t i t l e :a u t o m a t i cs y s t e ml e v e lt e s tc a s eg e n e r a t i o n f 如mu m l d i a 伊锄s m a j o r :c o m p u t e rs o f 咐a r e 卸dt h e o r ) r n a m e :l i nz h u m i n g s u p e r v i s o r :r e s e a r c h e rg u oq i n g s h u n a b s t r a c t a sam o s ts i g n i f i c a n ts t e pi ns o f t w a r et e s t i n gt e c h n o l o g y ,c r e a t i o no ft e s tc a s e s t u m so u tt ob eav e r yl a b o r - i n t e n s i v ea n dt i m ec o n s u m i n gj o b t 1 l e r e f o r e ,a u t o m a t i c t e s tc a s e sg e n e m t i o nh a sb e c o m e 孤u r g e n tn e c e s s i t y s i m u l t a n e i t y ,u m lh a sb e c o m e a ni n d u s t r ys t a n d a r da sa no b j e c t0 r i e n t e dm o d e l i n gl a n g u a g e 础m j n gf b rr e d u c i n gd e v e l o p m e n tc o s t ,t h i sp a p e rd e v o t e sm o s to fi t se f 蕾d nt o t h es t u d yo fa u t o m a t i ci n t e 伊a t j o n ( c l u s t e r l e v e l ) t e s tc a s e sg e n e r a t i o nb a s e do nu m l m o d e l s m e a i l w h i l e ,t h ed e f i c i e n c yo fu m li n f b 姗a ls e m a n t i c sl i m i t st h ep o s s i b i l i t y 0 fi t sf o 瑚a la n a l y s i s s i n c ef 0 姗a ls p e c i f j c a t i o n sa r cs o l i df o u n d a t i o n sf o rf u r t h e r 卸a l y s i sa n dg e n e r a t i o no ft e s tc a s e sf b mu m lf o r i l l a l i z a t i o no fi ts h o u l db e i n t r o d u c e df i r s t a 上t h eb e g i n n i n g ,t h i sp a p e rg i v e sab r i e fi n t r o d u c t j o n0 fs o f t w a r et e s t i n g t e c l u l o l o g y ,e s p e c i a l l yu m i j b a s e d ,p o i n t so u ta ( 1 v a n t a g e so fa p p l y i n gu m lm o d e l s t ot e s t i n 吕a n d 觚a l y z e ds o m el ( i n d so fu m l m o d e l s ,t h e i rt e s t a b i l i t ya i l dd e f e c t s s e c o n d l y ,t h i sp a p e rd e s c :r i b e sal 【i n do fp e t r in e ts o f t w a r em o d e l s ,a n dt h e m e t h o d o l o g yf o rd e r i v i n gt h e s em o d e l s 劬mu m lc l a s sd i a 伊a m s ,s t a t e c h 硪 d i a 伊a m s 锄dc o n n e c t i n gt h e mw i t hu m lc o l l a b o r a t i o nd i a g r a m s t h e n ,t h er e s u l t i n gp e t r in e tm o d e lc 如b eu s e da saf o u n d a t i o nf o rf o 咖a lp e t r i n e ta n a l y s i st e c h n i q u e s r e a c h a b i l i t yt e c l u l o l o g yo fp e t r in e ti si n t r o d u c e dh e r ei n o r d e r t os e a r c h i n ga l lt e s t i n gc o v e r a g ep a t h s a f t e rt h a t ,t h ec o n s t r a i n t sr e t r i e v e df r o m e v e r yt e s t i n gp a t ha r et r a n s l a t e di n t ot h ec o n s t r a i n ts a t i s f a c t i o np r o b l e m s b ys o l v i n g t h e s ep r o b l e m s ,t e s td a t aw h i c hc a nc o v e ra u p a t h si sg e n e r a t e d f i n a l l y ,t h ed e s i 印a 1 1 di m p l e m e n t a t i o no fap r o t o t y p et o o lb a s e do na b o v e i 基于u m l 的集成测试用例自动生成方法的研究 a p p r o a c h ,w h i c hc 卸b eu s e dt og e n e r a t i o ni n t e 伊a t i o nt e s t c a s e sf 而mu m li s i n t r o d u c e d t h i st o o li st h e na p p l i e dt oa ne x a m p l e ,a n dt e s tc a s e sw h i c ha r eg e n e r a t e d b yu s i n gt h i sm e t h o da r ep i 0 v e dt ob ee f :i e c t j v eb ye v a l u a t e db ys o m et e s ta d e q u a c y c r i t e r i o n s k e y w o r d s :s o f t w a r et e s t i n g ;u m lm o d e l s ;a u t o m a t i cg e n e r a t i o no ft e s tc a s e s ; i v 论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究 工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人 或集体已经发表或撰写过的作品成果。对本文的研究作出重要贡献的个人和集 体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名:方k 看吗 f 1 期:1 舯g 年f 月国日 学位论文使用授权声明 本人完全了解中山大学有关保留、使用学位论文的规定,即:学校有权保留 学位论文并向国家主管部门或其指定机构送交论文的电子版和纸质版,有权将学 位论文用于非赢利目的的少量复制并允许论文进入学校图书馆、院系资料室被查 阅,有权将学位论文的内容编入有关数据库进行检索,可以采用复印、缩印或其 他方法保存学位论文。 学位论文作者签名:林;看鸣 日期:8 年y 月8 日 导师签名: 日期:归争年广月厂a 日 中山大学硕士学位论文 第1 章引言 1 9 8 3 年,e e 将软件测试定义为:使用人工或自动手段来运行或测定某个 系统的过程,其目的在于检验一个软件是否满足规定的需求或明确预期结果与实 际结果之间的差别【1 1 。软件测试作为一项专门技术,随着计算机的产生与普及越 来越受到重视。在现代的软件开发过程中,超过5 0 的工作花费在了软件测试 上【2 1 。最终软件产品的质量以及软件的重用性在很大程度上都依靠于软件测试的 扩展程度,因此软件开发者将大量的时间和精力投入到软件的测试之中去。 然而随着软件规模的不断扩大,软件测试的复杂度也随之增大,大量的软件 测试用例需要被设计出来,而软件测试用例的创建是测试过程中最困难的环节之 一,软件测试的本质也可以看作是针对要测试的内容确定一组测试用例。因此, 设计大量的测试用例并执行这些测试用例成为极其耗费时间的劳动密集型的工 作。为了减少测试的耗费并且获得具有更高质量的软件产品,自动化测试成为极 其迫切的需要。因此,本文将以软件测试用例的自动生成作为主要研究课题。 1 1 研究背景 1 1 1 软件测试概述 软件测试是软件工程理论中非常重要的一个方面,它是提高软件产品质量和 可靠的关键环节,一个成功的软件产品是离不开长期的、周密的、有组织的软件 测试工作。目前,许多软件公司都十分重视软件测试。 软件测试是一个过程,它是以发现被测试软件的缺陷为目的,执行被测试软 件的过程。在软件的需求分析、设计以及编码过程中,都会有不同程度的发生错 误,软件测试的目的就是发现这些错误,并对错误进行定位。根据软件开发的不 同阶段,软件的测试对应包括单元测试、集成测试、功能测试( 验收测试) 和系 统测试等几个层次。这些层次在软件开发的生命周期中的位置可以使用下图所示 的经典的v 模型来直观的表示,图1 1 中的虚线表示的是各个阶段的产品是否符 合要求的验证活动【3 1 。 基于u m l 的集成测试用例自动生成方法的研究 、? 1 习一一一一一- - 一叵 、_、,_,?,回一一一一一一一一一一一一一一一一e 软件测试技术为了有效的定位软件中的错误而发展起来的技术。现有的软件 测试技术一般分为静态测试和动态测试。 静态测试是指不执行软件程序的软件测试技术,它一般包括代码审查、代码 走查、审计以及借用一些i d e 的代码语法检查工具等技术对代码进行静态分析。 动态测试则是通过在抽样的测试数据上运行程序来发现错误,测试覆盖率检 查是对动态测试的一个重要的评价标准。根据生成测试数据的信息来源,动态测 试分为基于软件规格说明的测试( 即黑盒测试) 和基于程序的测试。 基于规格说明的测试是指测试人员根据软件的设计规格来设计测试用例,然 后对软件进行测试。它的主要方法包括:等价类划分、因果图、判定表、边界分 析和事务流等方法。 基于程序的测试是指根据程序的内部结构来设计测试用例,对程序进行测 试。它主要包括:控制流测试、数据流测试、符号执行测试等技术。 1 1 2 面向对象的软件集成测试概述 自八十年代中后期以来,面向对象的软件开发技术发展迅速并获得广泛应 用,在面向对象的分析,设计技术以及面向对象的程序设计语言方面均获得了丰 富的研究成果,面向对象的方法占据着主导地位。 2 中山大学硕士学位论文 但是,面向对象技术本身在任何情况下都不会排除软件测试的动机,同时面 向对象语言的本质特征,如继承、封装、和多态等,也带来了新的故障风险,并 给软件测试提出了新的挑战。区别于传统的软件的功能分解,面向对象软件是通 过合成来构造软件的,因此集成是面向对象软件开发中最重要的工作,面向对象 软件构造过程中有的不同层次的集成,包括:从方法到类的集成,类通过继承集 成,类通过容器集成,类到组件的集成,组件到应用系统的集成。在面向对象的 迭代式增量开发过程中,通过不断的集成产生系统的可执行的版本,但每一个集 成的环节都可能引入错误,导致软件中存在缺陷,为了能够发现软件集成中的问 题,面向对象软件的集成测试非常重要。 对于传统软件的集成测试,可以根据设计阶段形成的功能分解树,采用自顶 向下或自底向上逐步测试用经过测试的单元组装成系统的过程中有无错误。而面 向对象软件采用的是通过组合实现系统功能,没有一个功能分解树可用,所以传 统的基于功能分解的集成测试策略不适合面向对象软件。要检测最终实现中各种 集成是否与设计的集成一致,则需要对每一个集成层次进行测试,而这里的集成 分为结构集成和行为集成。结构集成测试主要测试类的继承、类的容器、类的接 口、组件的接口有无错误;行为集成测试主要是类内方法交互、类间方法交互、 组件间交互是否被错误的实现。 测试的核心主要是生成测试用例,在面向对象软件开发过程中系统的规约、 设计、代码同样是生成测试的信息来源,是软件在其生命周期不同阶段的变体, 规约、设计、代码在每一个阶段的测试中都起相应的作用。软件代码是生成单元 测试( 类级测试) 用例地基础和单元测试的检验依据,系统设计是生成集成测试 ( 类簇级测试) 用例和集成测试的检验依据,系统规约是生成系统测试的测试用 例地基础和系统测试地检验依据。其中,系统的设计信息有助于理解系统功能和 结构,设计模型包含规约和程序结构的信息,同时也描述了系统的相应功能片断 的行为,因此也被成为灰盒。可以通过将白盒测试和黑盒测试相结合的方法,从 设计信息生成集成测试用例,测试设计模型表示的软件系统的灰盒行为。 面向对象方法的主导地位也就决定着软件开发过程模型化的技术的发展,面 向对象的建模技术( o m t ) 方法也就成为主导方法。统一建模语言( u n i f i e d 3 基于u m l 的集成测试用例自动生成方法的研究 m o d e l i n gl a n g u a g e ,简称u m l ) 是使用面向对象概念进行软件系统建模的一组 表示方法,它已被国际标准化组织吸收为软件建模领域的国际标准。基于u m l 开发的软件系统,软件开发的分析、设计阶段工作成果多为各种模型图,系统的 可用信息都在这些模型图中,给信息的提取带来了新的问题,从而也给测试带来 新的课题。对于测试而言,原先的基于规约或者是基于程序的方法都不能直接使 用。 对于基于u m l 模型的测试,在保证系统设计与需求一致的前提下,测试用 例可以在软件开发的早期,从u m l 的各种设计图直接生成。其中u m l 的交互 图描述了一组对象间结构关系和交互行为。因此,可以考虑将交互图中的通信图 作为集成测试的信息来源。同时,软件测试的目的,不仅要发现软件设计的错误, 而且要及时定为错误。但是,由于通信图中缺少对象的状态变化的详细信息,使 得定位错误的过程比较复杂,因而引入状态图和类图,由它给出状态变化和类结 构的具体信息。 因此,本文以u m l 系统设计时的通信图、状态图和类图为主要依据,研究 基于u m l 模型的类簇级测试用例生成方法具有重要的现实意义。 1 1 3 国内外研究现状 目前,在测试用例自动生成方法和基于模型的测试技术上,国内外都进行了 大量的研究。 在测试用例自动生成发面,t s a i 等提出了从关系代数查询表示的规格说明中 自动生成测试用例方法【4 1 ,w e y u k e r 等提出了基于布尔规格说明的测试数据自动 生成方法【5 1 。此外,基于z 语言的测试用例生成技术【6 】也已经非常成熟。但是这 些测试用例生成方法,因为形式化程度太高而难于广泛的应用。 在基于模型的测试技术方面,特别是基于u m l 模型的测试技术方面,基于 状态图的测试技术,吸引了很多研究者的目光。这方面的研究工作,大多数方法 都是将状态图转化成有限状态机,然后利用有限状态这一已经相当成熟的技术, 对软件模型进行分析,以达到对应的测试目的。不过由状态图产生的测试用例大 多数只是针对单元测试( 类级测试) 的。 4 中山大学硕士学位论文 另一方面,对于单元测试,基于类图的测试的生成技术也相当成熟,而且已 经在实践中广泛的应用开来。这类方法,通常通过类图提供的对于系统中类的设 计规约,再辅以u m l 的对象约束语言( o c l ) 所提供的关于这些方法的约束条 件,产生对应的测试用例。这些测试用例通常也都是针对与属于单元测试范畴的 方法级或类级测试的。 对于集成测试用例方面的工作大多数集中在基于u m l 顺序图的研究上,通 过对顺序图的分析产生相应的测试场景和测试数据。 另外还有一些基于u m l 活动图、用例图的测试技术,有都有一些研究成果, 这一部分内容本文将在第二章给以详细的介绍。 1 2 研究内容及贡献 本文在总结前人研究成果的基础上,将研究重点放在基于u m l 模型中的类 图、状态图、通信图提供的系统软件信息生成类簇级测试数据集上。 文中分析了类图、状态图和通信图在类簇级测试用例的生成上所起到的作用 以及各自的优缺点。同时,阐述了一种将u m l 模型形式化的方法一一对象p e t r i 网模型,以解决u m l 的半形式化的缺点,并对对象p e t r i 网的理论进行了一些介 绍;然后,描述了基于生成的对象p e t r i 网模型生成类簇级测试用例的方法;最 后,实现了基于该方法的工具原型,并通过一个实例以及相应的测试覆盖准则对 生成的测试用例加以分析,由此验证本文介绍的方法的可行性。 通过实践的证明,采用本文介绍的方法生成的集成测试用例,是有效的,可 行的,是对自动化测试用例生成的新的探索,并具有一定的实用性。 本文的研究工作总结如下: ( 1 ) 针对软件的类簇级测试,介绍了软件结构的形式化对象p e t r i 网模型, 以及将u m l 模型形式化,转化成为对象p e t r i 网的方法。同时,介绍了对生成的 软件形式化模型进行分析,并生成测试路径和测试数据的方法。 ( 2 ) 实现了基于该方法的类簇级测试用例生成工具的原型,并应用于实例, 基于u m l 的集成测试用例自动生成方法的研究 对生成的测试用例进行了充分性分析。 1 3 本文的组织与安排 本文的结构组织如下: 第一章( 即本章) 介绍了课题的研究背景,国内外的研究概述,以及本课题 的研究目标和内容等。 第二章对基于模型的测试方面的国内外研究现状做一个研究和分析,并分析 本文的研究内容的改进以及优势所在。 第三章对相关的理论基础进行一个介绍和分析,其中包括了对u m l 的介绍, 以及对u m l 的类图、状态图和通信图在测试中的作用进行了分析,而且还对 x m i 进行了介绍。同时,这一章还给出了对象p e t r i 网的形式化定义。 第四章是本文的研究重点之一,详细阐述了软件的形式化对象p e t r i 网模型, 以及u m l 到对象p e t r i 网模型的形式化方法,接着介绍了对象p e t r i 网模型的分 析技术,以及如何从分析产生的路径得到测试用例集的方法。 第五章介绍了基于以上方法的测试用例生成工具的原型的设计和实现。本章 首先对原型的设计以及实现的细节进行了介绍,然后通过一个实例以及覆盖性准 则,分析了生成的用例的有效性。 最后是课题工作的总结与展望。概括全文,总结研究成果和所做的工作,并 对进一步的工作方向进行了展望。 中山大学硕士学位论文 第2 章基于建模的测试方法研究现状 u m l 模型包括了用例图、类图、对象图、活动图、顺序图、状态图、通信 图、组件图、包图等。在对这些u m l 图中,基于状态图的测试用例生成方法获 得了研究人员最多关注。其中主要的关于基于u m l 模型的研究成果如下所述: 2 1 基于u m l 状态图的测试研究现状 o f f u t t 和a b d u r a z 甜1 发展了一种用于协助类级测试的基于u m l 状态图的 测试用例生成技术。他们的方法使用一个状态转换表作为输入,并且生成满足全 谓词覆盖准则的测试用例。该方法执行与每一个源状态相关联的状态,并相对于 每一个转换谓词都生成一个使转换成立的用例和一个使转换不成立的用例。一个 测试用例对应于转换谓词里面的每一个变量,而每一个转换谓词对应于状态图中 的一个状态转换关系。在所有的测试用例数据产生之后,一个附加的算法被运行 于测试数据之上,以鉴别和移除冗余的测试用例。 k a j l s o m k e a t 和剐v e p i b o o n 【8 】展示了另一种使用u m l 状态图生成测试序列的 方法。他们把状态图转换成为一种叫做测试流图( t f g ) 的中间图,然后通过 t f g 来生成测试序列。t f g 是状态的平坦层次结构。他们所推崇的测试标准是 t g f 图的状态和转换的覆盖率。 m 等人1 9 】贝0 展示了一种使用u m l 状态图为类级测试产生测试用例的方 法。他们将状态图转换为扩展的有限状态自动机( e f s m s ) 以获得测试用例,在 转换过后的e f s m s 中状态的层次和并行结构被平坦化而广播的消息也被消除 了。之后通过将e f s m s 转换为流图,数据流就被标识出来,并将传统的数据流 分析方式应用于其上。 h a r t m a i l i l 等人【1 0 】讨论通过一种特殊的u m l 描述方法用于创建基于设计的 测试环境。开发者首先使用状态图定义每个系统组件的动态行为,接着通过对状 态图进行注释,以标识出组件之间的交互。由此产生了全局有限状态机,它对应 于集成系统行为,因此被用来产生测试用例。 7 基于u m l 的集成测试用例自动生成方法的研究 c a v a m 等人【1 1 j 使用u m l 类图、状态图和对象图去识别一个系统的行为。 这些u m l 图被解释为一种正式的行为描述,并被作为测试用例产生的基础。这 种行为描述被写作一种通讯状态机的语言。由此他们形成一副测试图,该图由所 有通向一个接受状态的所有路径和可能导致不确定结果的分支组成。 2 2 基于u m l 顺序图的测试研究 b e n o l i n o 和b a s a n i e r i 【1 2 1 提出一种通过顺序图中组件之间消息的次序产生测 试用例的方法。他们为每一个用例制作一个顺序图,并使用类别分割法【1 3 1 来产生 测试数据。他们认为一个测试是一个组合体,该组合体包含了出现在一个消息序 列中所有合适的设置和交互的选择, , p i l s k a l n s 等人【1 4 1 提出了一种集成两种u m l 设计的补充视图的方法,这两种 视图分别基于类图的结构图和基于顺序图的行为视图。然后他们利用从这两种图 获取而来的信息,来获得和执行满足测试充分性的测试用例。他们从类图中提取 属性和参数,并将顺序图转换成为直接非循环图( o m d a g ) ,最终展示了一种 将结构和行为视图合并为一张叫做对象方法测试执行表( o m e t ) 的表格的算法。 f r a i k j n 等人【1 5 】为生成可测试顺序图和使用s e d 汀e c 提供了指导,s e d i t e c 是一个基于可测试顺序图的,支持自动生成测试桩的测试工具。通过提供那些出 现在顺序图中的行为对应的类和它们的方法,以及相对应的测试数据集, s e d i t e c 可以自动产成测试桩,由此使得在实现的开始阶段就可以存在可用的测 试。 s u p a v i t a 等人【1 6 】为测试多态的交互描述了一种定义于u m l 顺序图的方法。 这篇论文讨论了几种形式的多态交互和他们的特性,并且提供了对于测试设计的 指导。 c h e n 【1 7 】提出了一种面向对象的类簇级测试的方法,该方法使用了一种叫做 契约说明书的正式的描述语言。他们提出了一系列将u m l 顺序图或者协作图转 变为对应的契约说明书的建议。 2 3 基于u m l 活动图的测试研究 8 中山大学硕士学位论文 b r i a n d 柚dl a b i c h e 【1 8 】描述了t o t e m ( t e s t i n go b j e c t o r i e n t e ds y s t e m sw i t h t h eu n i f i e dm o d e l i n gl a n g u a g e ) 系统测试方法论。系统功能测试需求就是来源于 u m l 分析文档,例如用例图、他们对应的顺序和协作图、类图和其他用于这些 文档的0 c l ( o b j e c tc o n s t r a i n tl a n g u a g e ) 。他们通过活动图的方式,为系统中 的每一个活动在用例图间创建顺序依赖。基于活动图的用例的时序是通过深度优 先搜索由活动图转变的有向图获得的。 l i l l z h a n g 等人【1 9 】提出了一种基于u m l 活动图的灰盒测试方法。他们提出了 一种算法来通过活动图产生测试场景。包括输入输出序列、参数、限制状态和期 望的对象方法序列都是从每个测试场景中获取到的。他们同时还建议通过类别分 割法来产生测试用例。 h a n m a 皿等人【2 0 】描述了一种生成和执行系统测试的方法。他们的方法通过 u m l 用例图和活动图对系统行为进行建模,他们也介绍了不同种类的模型注释, 这些注释可以由测试设计人员在生成测试之前添加到u m l 模型中去。在这种方 法中,首先测试设计人员人工的注释u m l 模型,这些模型有些可能已经通过半 自动化的方式从已经存在着的,带有测试说明的文本形式的测试用例中获取到。 第二步,测试生成工具自动的创建一系列文本的测试过程或者可执行的测试脚 本。第三步,测试执行者使用商业的测试工具对待测系统运行这些用例。在该方 法中,使用到的覆盖率准则是转移覆盖率。 2 4 其它关于u m l 的测试研究 a b d u r a z i k 和0 f f u t t 【2 1 】提出基于协作图的静态检查和动态测试的测试准则。 他们推荐了一个包含消息顺序路径的动态测试准则,同时他们将传统额数据流覆 盖准则应用在了u m l 协作图的领域中。 a n d r e w s 等人【2 2 】为测试可执行形式的u m l 描述了几种有用的测试充分性准 则。对于类图,他们描述的准则包括多关系端准则、普遍化准则和类属性准则。 关于交互图的准则有:状态覆盖准则、全谓词准则、每一关联消息准则、全消息 路径覆盖准则和集合覆盖准则,这些准则用于确定需要被测试的消息序列,同时, 他们也描述了一种测试方法。 9 基于u m l 的集成测试用例自动生成方法的研究 a b d u r a z i k 等人【2 3 j 展示了一个工程项目,并且指出状态图测试集在暴露单元 级错误方面比顺序图测试集更加有效,而且顺序图测试集在暴露集成级错误比状 态图测试集更加有效。 g h o s h 等人【2 4 l 提出了一种测试可执行形式的u m l 模型的方法。在系统级的 测试设计中,可执行的行为模型是通过使用输入的测试场景进行测试的。这有利 于帮助在设计实现之前就暴露出设计的纰漏。他们的方法结合使用了基于u m l 类图和交互图的测试充分性准则。类图准则被用于决定测试需要运行于哪些对象 配置,而交互图准则被用于决定需要被测试的消息序列。这些准则都可以用于定 义u m l 设计的测试对象。 2 5 现状总结 通过对上面介绍的这些现状的研究,本文发现基于u m l 的测试方面存在着 如下的一些问题: ( 1 ) 具有最多研究成果的基于状态图的测试用例生成方法,只适合与进行 类级测试,而对于类簇级测试,则无法产生有效的测试用例。( 2 ) 一些发表的 论文里面都需要声明u m l 特殊声明以辅助测试的获取,或者需要一些附加的让 方法可以执行的形式,这些附加的属性,破坏了u m l 的原本的形态,也增加了 软件设计人员设计过程的复杂程度。( 3 ) 还有很多基于u m l 的测试用例生成 方法,只是对生成方法进行了描述,而没有生成测试用例或者无法生成可执行的 测试用例,无法进行实际的验证。 本文的研究重点就是针对以上这些问题,提出了一种基于u m l 模型的集成 测试用例的自动生成方法,并进行了实现,对该方法进行了测试充分性的分析, 接下来的章节就将从基础知识开始,全面的介绍这种方法。 1 0 中山大学硕士学位论文 第3 章相关理论基础 3 1 模型驱动架构 3 1 1m d a 简介 m d a ( m o d e ld r i v e n c h i t e c t u r e ,模型驱动架构) 是由o m g ( o b i e c t m a n a g e m e n tg r o u p ,国际对象管理集团) 于2 0 0 1 年提出来的【2 5 1 。其核心思想是 抽象出与实现技术无关,完整描述业务功能的核心平台无关的模型( p l m , p l a t f o r i i li i l d e p e n d e n tm o d e l ) ,然后针对不同实现技术制定多个转换规则,通过 这些转换规则及辅助工具将p i m 转换成与具体实现技术相关的平台相关模型 ( p s m ,p 1 a t f o 皿s p e c i f i cm o d e l ) ,最后将经过充实的p s m 转换成代码。 m d a 的核心技术:m o f ( m e t ao b j e c tf a c i l i t y ,元对象设施) 、c w m ( c o m m o n w a r e h o u s em e t a m o d e l ,公共数据仓库元模型) 和u m l 。m d a 的主要工作就是 要把基于这些技术建立的p l m 转换到不同的中间件平台上,得到对应的p s m 。 中间环上给出的是目前主要针对的实现平台:c o r b a 、x m l 、j a v a 、w e b s e r v i c e s 和n e t 。显然,随着技术的发展,这个列表将不断扩充。 m d a 提供了一个中立于各开发商的开放的方法,以应对业务和技术变化带 来的挑战。基于o m g 制定的各项标准,m d a 将业务和应用逻辑与底层平台技 术分离开来。通过使用u m l 以及其他的o m g 建模标准,来表达应用程序或者 集成系统的业务功能和行为,得到的平台无关模型可以通过m d a 实现到各种平 台上的。 对于m d a ,我们可以分为广义的和狭义的两种。广义的m d a 认为,对于 某种工具或者方法,不论是否严格遵循了o m g 的各项标准,只要实现了系统业 务逻辑和实现技术的分离,我们都认为它是支持m d a 的。而相反,狭义m d a 则不仅看效果,还要看手段,必须遵循o m g 的m d a 的模型组织和元建模、建 模、管理和执行的一系列标准的,才可以说是支持m d a 的。 狭义的m d a 指定者是严格的标准主义者,他们希望用一套基于一致语义基 基于u m l 的集成测试用例自动生成方法的研究 础的统一的元模型模型管理框架将模型管理起来,并应用基于这个一致语义基 础的各种标准来实现对模型的建模、元建模、转换等各种操作。 在m d a 的架构中,u m l 只是u n i f i e dm o d e l i n gl a n g u a g e ”,是应用于面向对 象设计和开发领域的建模语言,而不是u n i v e r s a lm o d e l i n g1 a n g u a g e ”,不是万能 的建模语言。 m 3 :元元模型层 m 2 :元模型层 m 1 :模型层 m 0 :实例层 仨 宦 仨 图3 1m d a 架构图 如图3 1 所示,m d a 中将模型和元模型分为四层,其中: ( 1 ) m 0 层是实例层,这一层是m 1 层模型的实例化。例如,对应u m l 模 型的具体的一个程序。 ( 2 ) m 1 层是模型层,是建模人员通常所面对的模型,例如图中的u m l 模 型,是分析和设计,包括开发人员最为熟悉不过的了。 ( 3 ) m 2 层称为元模型层,其中对应的是m 1 层模型的元模型,如u m l 和 s p e m 等。m 2 层元模型中提取了不同领域的抽象概念和关系结构,为m 1 层的 1 2 中山大学硕上学位论文 建模提供了建模符号。也即,m 2 层提供对应不同领域的领域建模语言。 ( 4 ) m 3 层是元元模型层,m o f 就位于这一层。m o f 提供了定义m 2 层元 模型所需要的更抽象一级的建模支持。m o f 是m 2 层所有元模型的元模型,同 时,它也是自描述的,m o f 可以描述m o f 元模型自身。 注意,在m d a 框架中,m 3 层只有m o f 这一个模型,它是m d a 中最基础 和核心的标准,它为m d a 框架中的所有模型元模型提供了统一的语义基础,使 得基于m o f 的统一的模型操作成为可能。如上所说,m o f 解决了m 2 层不同元 模型之间的交互性。其中重要的一点是m o f 支持自省( i n t r o s p e c t i o n ) 机制,在 m o f 中,定义了操作基于m o f 的各级模型和元模型的统一的反射接口。通过 这些接口,遵循m o f 的程序实现可以在不了解一个对象接口的情况下使用这个 对象,即,可以遍历各层的对象结构,找到需要的对象并进行相关操作。例如创 建、更新、访问和调用m 1 层对象实例的操作。在实际使用中,需要使用编程 语言来实现这些接口。 同时,o m g 定义了从m o f 到j a v a 、x m l 、l d l 等的映射。其中最早定义 的是从m o f 到i d l 的映射。到x m l 的映射就是x m i ( x m lm e t a d a t ai n t e r c h a n g e ) 标准;到j a v a 的映射就是j m i ( j a v am e t a d a t ai i l t e r f a c e ) ;正在制定中或即将制 定的还有到w s d l 、n e t 的映射。目前,x m i 已经广泛应用于各u m l 建模工 具中,用于存储模型并在不同工具之间导入导出;j m i 也广泛应用各种基于j a v a 的m d a 工具中,例如a n d r o m d a 中就用了s u n 的j m i 实现m d r 。 除了m o f 、j m i 和x m i 之外,m d a 中还有两个重要的标准需要提一下, 那就是q v t 和o c l 。 ( 1 ) q ( q u e r y 厂v i e w 厂r r 如s f 0 咖a t i o n ) :模型转换标准,为基于m o f 的 元模型模型之间的转换提供标准的转换规则描述语言: ( 2 ) o c l ( o b j e c tc o n s t r a i n tl a n g u a g e ) :对象约束语言,用于配合u m l 和其它m 2 层元模型,精确地描述模型语义。 在本文的后续部分将涉及到的o m g 定义的u m l 、x m i 做一个简要的介绍。 3 1 2u m l 简介 1 3 基于u m l 的集成测试用例自动生成方法的研究 面向对象的软件工程与传统的面向过程的软件工程相比,在需求获取、系统 分析、设计和实现方面都有着很大的区别。然而过去数十种面向对象的建模语言 都是互相独立的,使得设计和用户需求之间存在着一些潜在的不必要的差异,混 淆用户的真正目的,这就急需_ 个统的、易理解的工具来对整个软件开发过程 进行描述。 统一建模语言( u n i f i e dm o d e l i n g g u a g e ,u m l ) 正是在这种时候由r a t i o n a l s o f 研a r e 开发出来的产物,后来被o m g 采纳作为一种标准,它不是一种编程语 言,更不是一种方法论,它只是用于画出模型图并做出注释的一种标准化方式, 它是用于详细描述、建构和文档化系统的一种可视化语言。u m l 使用一套标准 的为软件工程和设计而创建的直观的规则和过程,从而使得设计的意图更加直 观、清晰。目标是使所有项目涉及者,从开发人员到投资方,都能理解每个片段 的功能性,片段之间如何交互,片段组之间如何交互,以及整个系统如何运转。 o m g 于1 9 9 7 年1 1 月发布了u m l l 1 标准,到现在为止,最新的版本已经 是u m l 2 1 。在2 1 中,u m l 已经发展得可以支持如今软件和系统建模的新挑战。 u m l 作为对软件设计不同方法的统一,经过数年的发展已经成长为一个能够继 续解决软件和系统过程中不同任务的标准建模语言。 u m l 2 。0 的设计者非常注重u m l 的继承性,他们保证了2 0 对于那些使用 过u m l l x 的人不会太陌生。在u m l 2 o 中,总共定义了1 3 种图,分为了三大 类:其中六种图展示了系统的静态结构,另外三种展示了基本的行为类型,最后 四种描述了不同视角的交互。u m l 2 o 的1 3 种图的详细分类及用途可以参见表 3 1 。 表3 1u m l 2 o 各种模型图分类表 类型名称用途 类图描述了系统中类的属性行为,以及类与类之间的互相的各种关系 对象图描述了对系统重要的类的对象实例的配置 静组件图描述了系统中重要的组件,以及它们用于与外界交互的接口 态 可以用来描述一个类或者一个组件的内部结构,也可以用来描述类在 图 复合结构图 一个给定的上下文中的关系 包图 表示了对象和组件组的层次结构 部署图描述了系统最终将如何部署到真实世界中去的 1 4 中山大学硕士学位论文 描述了系统和用户或者外界系统之间的交互关系,用例图被广泛的应 行 用例图 用于需求和系统设计的分析阶段 为活动图描述了系统中并行和顺序进行的活动 图 描述一个类的对象的可能状态以及由于各种事件的发生而引起状态 状态图 之间的迁移 顺序图着重描述了对象之间交互的顺序的交互图 交通信图从系统中对象的关系角度描述了对象之间的交互 互 时序图从时序的角度描述对象之间的交互 图 用于将顺序、通信、以及时序图集中在一起以获取系统中一个重要的 全局交互图 交互关系 本文将只会涉及到其中几种图,下面将分章详细介绍这几种图并对这些图在 测试中的作用进行了分析。 3 1 2 1u m l 类图 类图中u m l 中一种极其重要的视图,它描述了面向对象系统中最重要的类, 以及类之间互相的各种关系。在类图的模型中可以包含几乎所有的类的静态信 息,这些信息包括:属性( 类型、可见性) 、操作( 即函数,包括了函数签名相 关的所有信息) 、关联、聚集与组成、泛化、约束规则( o c l ) 、构造型等,这 使得类图具有很强的表达能力。本文中对于类的大多数信息,以及主要的变量都 是从类图中的定义得来的。 类图可以被用于软件开发的各个不同的阶段。在项目的不同开发阶段,类图 可能表达了不同的程度的信息。处于分析阶段的类图,通常都是概念层的类图; 当开始着手软件设计时,应使用说明层类图;当考察某个特定的实现技术时,则 应该使用实现层类图。 类图模型在指导测试的过程中,具有如下的一些作用: ( 1 ) 为动态模型补充和提供有用的信息,以提高动态模型的可测试性。 ( 2 ) 类图模型同样可以用于指导类级和类簇级测试。 因此,对于本来说,将更加关注实现层的类图,因为实现层的类图可以提供 更加完备的数据定义,更加有利于产生更加完整的测试用例数据。同时,概念层 次的类同虽然不利于产生测试数据,但是同样可以作为对软件模型的验证的资料 来源,用于在设计阶段对系统的正确性进行验证,不过这不是本文关注的内容。 基于u m l 的集成测试用例自动生成方法的研究 3 1 2 2u m l 状态图 u m l 的状态图来源于有限状态机,同时也在状态机理论的基础上进行了一 些扩展,它支持了并发、层次化、事件等特性。在大多数的面向对象软件系统中, 一个对象或者系统的状态对

温馨提示

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

评论

0/150

提交评论