(计算机应用技术专业论文)基于uml的cpn模型在软件测试中的应用.pdf_第1页
(计算机应用技术专业论文)基于uml的cpn模型在软件测试中的应用.pdf_第2页
(计算机应用技术专业论文)基于uml的cpn模型在软件测试中的应用.pdf_第3页
(计算机应用技术专业论文)基于uml的cpn模型在软件测试中的应用.pdf_第4页
(计算机应用技术专业论文)基于uml的cpn模型在软件测试中的应用.pdf_第5页
已阅读5页,还剩55页未读 继续免费阅读

(计算机应用技术专业论文)基于uml的cpn模型在软件测试中的应用.pdf.pdf 免费下载

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

文档简介

太原理工大学工学硕士研究生学位论文 基于u m l 的c p n 模型在软件测试中的应用 摘要 软件测试是保证软件质量的重要手段,也是软件开发过程中一项非常重 要的工作。一直以来,国内的很多软件企业对于软件测试的重要性缺乏足 够的认识,测试水平不高,软件质量无法得到保证。质量有问题的软件会 导致无法预测的后果,因而如何保证软件质量以及如何最大限度地提高软 件质量就成为一个重要课题。 传统的测试理论与方法并不完全适合用于新兴的面向对象软件系统。随 着面向对象分析和面向对象设计的成熟,如何对面向对象软件进行测试是 一个非常值得研究的问题,也是测试领域的一个难题现代测试理论规定 软件必须在其生命周期的全过程进行测试,很多测试不能简单地靠手工测 试实现,必然会导致自动化测试的产生和应用。 u m l 在被工业界广泛接受的同时也成为学术界遵循的一种标准建模语 言。许多面向对象软件测试的研究都围绕从u m l 模型构造软件模型开展。 研究基于切l 模型的软件测试有利于把测试工作提前到软件开发周期的早 期进行。但u m l 模型属于半形式化模型,往往无法自动生成测试用例。而 p e t r i 网作为离散系统的建模和分析工具,适合于描述系统中顺序、并发、冲 突以及同步等关系,拥有丰富的系统描述手段和系统行为分析技术。将u m l 模型与p e t r i 网相结合,能够弥补其数学支持的不足。国内已有基于p e t r i 模 型的软件测试研究,但较为少见。 i 太原理工大学工学硕士研究生学位论文 国外有文献提出了c p n 模型和u m l 图表到c p n 模型的映射方法,并 将其应用于模型检测领域。我们发现c p n 模型经过改进也可以运用于面向 对象的类测试和簇级测试。 为此,本文主要做了以下几方面的工作: 首先,以基于模型的测试用例的自动化生成为主线,提出了基于u m l 的c p n 模型的测试框架。 其次,在介绍国外文献中的c p n 模型和u m l 图表到c p n 模型的映射 方法的基础上,针对软件测试的具体需要,对c p n 模型做出了相应改进, 并在时间准确性方面,进一步完善了映射的算法。 再次,在研究基于状态覆盖准则的基础上,提出了库所变迁覆盖准则, 并介绍了基于此覆盖准则的测试用例生成策略。 最后,构建了自动化测试用例生成工具,工具包括四个部分:模型转化 工具、用例生成工具、代码插装工具和信息比较工具。实验内容主要包括 使用已实现的工具,从任意包含完整信息的m d l 文件中提取有用信息生成 对应的c p n 模型。实验证明将基于u m l 的c p n 模型引入基于模型的软件 测试是可行的。 关键词:面向对象软件测试,统一建模语言,着色p e t r i 网,测试用例生成 太原理t 火学t 学硕十研究生学伊论文 a p p l i c a t i o no fs o f t r a r et e s t i n gb a s e do n c p nm o d e ld e r i v e df r o mu m lm o d e l a b s t r a c t s o f t w a r et e s t i n gi sn o to n l ya ni m p o r t a n tm e a n so fs o f t w a r eq u a l i t y a s s u r a n c e ,b u ta l s oav e r yi m p o r t a n tw o r ki ns o f t w a r ed e v e l o p m e n tp r o c e s s b e c a u s eo f l a c k i n ga d e q u a t eu n d e r s t a n d i n go f t h ei m p o r t a n c eo fs o f t w a r et e s t i n g , t h et e s t i n gl e v e li nm a n yd o m e s t i cs o f t w a r ee n t e r p r i s e si sn o th i g ha n ds o f t w a r e q u a l i t yc a nn o tb eg u a r a n t e e d s o f t w a r ew i t hq u a l i t yp r o b l e m sc o u l dl e a dt o u n p r e d i c t a b l ec o n s e q u e n c e s t h u s ,h o wt oe n s u r es o f t w a r eq u a l i t ya n dh o wt o i m p r o v es o f t w a r eq u a l i t yh a sb e c o m ea ni m p o r t a n ti s s u e a l t h o u g ho b j e c t o r i e n t e dd e s i g n i n gi m p r o v e ss o f t w a r ep r o d u c t i v i t ya n d r e l i a b i l i t yb ys o f t w a r er e u s i n g ,c h a r a c t e r i s t i c so fo b j e c t o r i e n t e ds o r w a r es u c h a se n c a p s u l a t i o n ,i n h e r i t a n c e ,p o l y m o r p h i s ma n dd y n a m i cl i n ka l s oa f f e c tt h e s t r a t e g i e sa n dm e t h o d so fs o f t w a r et e s t i n g t h et r a d i t i o n a lm e t h o do ft e s t i n g t h e o r yi sn o te n t i r e l ys u i t a b l ef o rt e s t i n go b j e c t - o r i e n t e ds o f t w a r es y s t e m s w i t h o b j e c t - o r i e n t e da n a l y s i s a n dd e s i g nh a v em a t u r e d ,t e s t i n g o b j e c t o r i e n t e d s o f t w a r ei sav e r yw o r t h w h i l er e s e a r c h m a n yt e s t i n gw o r k sc a nn o ts i m p l yr e l y o nm a n u a lt e s t i n g ,w h i c hw i l li n e v i t a b l yl e a dt ot h ea p p e a r a n c ea n d a p p l i c a t i o n o fa u t o m a t e dt e s t i n g i 太原理t 大学丁学硕十研究生学位论文 w h e nu m l ( u n i f i e dm o d e l i n gl a n g u a g e ) i sw i d e l ya c c e p t e db yt h e i n d u s t r y , i ta l s ob e c o m e so n ek i n do fs t a n d a r dm o d e l i n gl a n g u a g ew h i c ht h e a c a d e m i cc o m m u n i t yf o l l o w s m a n yr e s e a r c h e so no b j e c t - o r i e n t e ds o f t w a r e t e s t i n gf o c u so nd e r i v i n gs o f t w a r em o d e l sf r o mt h eu m ld i a g r a m s u m lo f f e r s e f f e c t i v em o d e l i n ga b i l i t y , b u tl a c k sw e l l - d e f i n e ds e m a n t i cb a s ef o ri t sn o t a t i o n a sam o d e l i n ga n da n a l y s i st o o l s ,p e t r in e ti ss u i t a b l ef o rd e s c r i b i n gt h e r e l a t i o n si ns y s t e ms u c ha ss e q u e n c e ,c o n c u r r e n t ,c o n f l i c t sa n ds y n c h r o n i z a t i o n , a n dh a sm a n ya p p r o a c h e sf o rd e s c r i b i n gs y s t e ma n da n g l i c i z i n gs y s t e mb e h a v i o r t h e r eh a v eb e e nan u m b e ro fa t t e m p t st oc o m b i n ep e t r in e t sw i t ho b j e c t o r i e n t e dc o n c e p t st op r o f i tf r o mt h es t r e n g t ho fb o t ha p p r o a c h e s ,b e c a u s ep e t r i n e t sc a l lp r o v i d eaf o r m a ls e m a n t i cf r a m e w o r kf o rt h eu m ln o t a t i o n sp l u st h e b e h a v i o r a lm o d e l i n ga n da n a l y s i ss t r e n g t h t h i sp a p e rp r e s e n t sat e s t i n gf r a m e w o r ka n dam e t h o dt h a tg e t st h ec p n m o d e l sf r o mt h eu m ld i a g r a m s t h ec o r r e s p o n d i n gc o v e r a g em e t r i ca n du s e c a s eg e n e r a t i o nb a s e do nc o v e r a g em e t r i ca r ea l s op r e s e n t e d f i n a l l y ,t h i sp a p e rc o n t a i n sf o u rm o d u l e s ,n a m e l y ,m o d e lc o n v e r s i o n ,u s e c a s e g e n e r a t i o n ,c o d e i n s t r u m e n t a t i o na n di n f o r m a t i o nc o m p a r i s o n t h e f e a s i b i l i t yo fi n t r o d u c i n gc p nm o d e ld e r i v e df r o mu m lm o d e li ns o f t w a r e t e s t i n gf i e l d sh a sb e e nv e r i f i e dt h r o u g he x p e r i m e n t k e yw o r d s :o b j e c t o r i e n t e ds o f t w a r et e s t i n g ,u m l ,c o l o r e dp e t r in e t s , t e s tc a s e sg e n e r a t i o n i v 声明 本人郑重声明:所呈交的学位论文。是本人在指导教师的指导下。 独立进行研究所取得的成果。除文中已经注明引用的内容外,本论文 不包含其他个人或集体已经发表或撰写过的科研成果。对本文的研究 做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的 法律责任由本人承担。 论文作者签名:兰l 尘丕日期:伽卵,岁、l 彦 关于学位论文使用权的说明 本人完全了解太原理工大学有关保管、使用学位论文的规定。其 中包括:学校有权保管、并向有关部门送交学位论文的原件与复印 件;学校可以采用影印、缩印或其它复制手段复制并保存学位论文; 学校可允许学位论文被查阅或借阅;学校可以学术交流为目的, 复制赠送和交换学位论文;学校可以公布学位论文的全部或部分内 容( 保密学位论文在解密后遵守此规定) o 签名:垒l 生亟日期: 砌7 上朋 导师签名:j 选日期:二望孕j l 太原理t 大学r t 学硕士研究生学伊论文 1 1 立题背景 第一章绪论 随着信息技术的日益发展,规模更大、复杂性更高的软件已应用到社会各个领域。 但只要“软件是由易犯错误的人创造的”,软件就无法避免错误和缺陷。质量有问题软件 会导致无法预测的后果,因而如何保证软件质量以及如何最大限度地提高软件质量就成 为一个重要课题。 软件测试是保证软件质量的重要手段,也是软件开发过程中一项非常重要的工作, 但作为软件工程学科的一个重要分支还未成熟。一直以来,国内的很多软件企业对于软 件测试的重要性缺乏足够的认识,测试水平不高。软件产品的质量得不到保证。 8 0 年代末开始,c + + 、j a v a 等面向对象程序设计语言逐渐被软件开发人员广泛使 用。进入9 0 年代,面向对象分析、面向对象设计己经普遍应用于大规模复杂系统的开 发。面向对象程序设计方法虽然通过软件重用提高了软件生产率和可靠性,但面向对象 软件的封装性、继承性、多态性和动态链接等新特性也影响了软件测试的策略与方法。 传统的面向功能或面向数据过程的测试理论与方法并不完全适合用于新兴的面向对 象软件系统。随着面向对象分析和面向对象设计的成熟,更多的设计模式复用,更加重 了面向对象系统的繁重的测试量。 如何对面向对象软件进行测试是一个非常值得研究的问题,也是测试领域的一个难 题。现代测试理论规定软件必须在其生命周期的全过程进行测试,很多测试不能简单地 靠手工测试实现,必然会导致自动化测试的产生和应用。引入自动化测试并对其加以强 调是软件行业变化的一个具有代表性的范例【l 】。 1 2 面向对象软件测试的特点和现状 1 2 1 面向对象软件特点对测试的影响 面向对象技术己普遍取代面向过程的开发方法,它能产生更好的系统结构,更规范 的编程风格,提高了数据使用的安全性,促进了程序代码的重用。由于面向对象技术开 太原理 j 大学t 学硕+ 研究十学付论文 发的软件代码重用率高,所以更需要严格测试。面向对象软件的封装性、继承性、多态 性和动态绑定等特性增强了软件的可扩充性和可重用性,提高了软件丌发效率,并使软 件易于维护,修改和组装。但是面向对象软件的这些特性对软件测试也产生了深刻的影 响。 1 、封装对测试的影响 封装是一种访问控制机制,保证了信息的隐蔽和模块化。类作为面向对象软件的基 本单位,把数据和数据操作的方法封装在一起,限制对象属性对外的可见性和外界对它 的操作权限。封装和信息隐藏使得类的具体实现与它的接口相分离,减低了一个类和程 序其它各部分之间的依赖,促进了程序的模块化,并在一定程度上简化了类的使用,避 免了不合理的操作。这种机制还能在最大程度上阻止错误的传播和扩散,有效地减轻系 统维护的工作量。对软件测试而言,因为封装的原因,使对对象状态的观察成为难题, 给状态的预测带来了困难。面向对象软件不仅要求验证被测实现能够产生正确的输出, 还要求验证被测实现处于或到达正确的状态。 2 、继承对测试的影响 继承使软件的复用性和开发软件的效率得到了极大的提高,同时使面向对象设计更 具自然性和直观性。继承主要通过三种机制来实现:扩展、覆盖和特例化。对于测试者 来说,由于继承结构的存在,使得父类中的方法在子类的上下文中要进行重新的测试, 这是对于继承性的最强的覆盖准则;还有一种覆盖准则就是对父类中由于继承而产生影 响的方法在子类的上下文中重新进行测试。另外,多重继承则显著地增加了产生命名冲 突和重复继承等特有错误的风险,导致一些难以发现的隐含错误。这些都在一定程度加 大了测试的难度。 3 、多态性和动态绑定对测试的影响 多态性指的是将一个消息与不止一个对象动态绑定的能力。多态性通过动态绑定来 实现,动态绑定有两种:编译时动态绑定和运行时动态绑定。运行时动态绑定是由于继 承而产生的,当继承关系存在时,因为子类重载过父类的方法或新增加了方法,发送的 消息只能在运行时根据实例对象的具体类型和相应的方法进行绑定,它用运行时的类型 检查代替了编译时的静态类型检查。动态绑定决定了一个消息只有在编译或运行时才能 够确定它的具体行为,因此多态性和动态绑定为面向对象软件测试,特别是簇级测试带 来7 t e 大的困难,加大了测试用例选取的难度和执行路径的不确定性。多态性和动态绑 太原理。t :大学1 :学硕十研究生学位论文 定给软件测试提出了新的覆盖准则,即每种可能的绑定都应该进行测试。 1 2 2 面向对象软件的测试范围划分 传统的软件测试按照范围一般划分为单元测试、集成测试和系统测试。而面向对象 的软件测试一般认为应当分为四个级别:方法级,考察一个方法中数据进行的操作;类 级,考察封装在一个类中的方法和数据之间的相互作用;簇级,考察一组协同操作的类 之间的相互作用;系统级,考察由所有类和主程序构成的整个系统。类和对象是面向对 象软件的最基本构成单位,类测试相当于单元测试。类簇指的是若干相关的共同协作完 成特定功能的一组类,簇级测试相当于集成测试。系统测试的概念和传统的结构化软件 测试相同,并且可使用相同的方法。目前针对类一级测试的研究较多,而簇级的研究较 少。 类测试是面向对象系统测试中首先要进行的测试,类测试可看作面向对象测试中的 单元测试。测试范围主要是类定义之内的属性和方法,以及有限的对外接口所涉及的部 分。类的测试按照测试阶段可以分为三部分: 1 基于方法的测试;测试类中的每一个方法; 2 基于状态的测试:考察类的实例在其生命周期各个状态下的情况;文献【2 】利用 u m l 状态图,采用基于状态的测试数据生成标准生成测试用例。其中u m l 状 态图是测试用例生成的关键部分; 3 基于响应状态的测试:从类和对象的责任出发,以外界向对象发送特定的消息 序列的方法未测试各个对象的响应状态; 除此,文献 3 还介绍了基于流图类测试的思想和方法。 对于类测试的每个部分,又包括两部分,一部分就是结构测试,也就是路径覆盖; 另外一部分就是功能测试。 簇是一组相互协作的类,它代表了其成员作为一个整体对系统承担的责任,是系统 集成的一个子系统。簇级测试的重点是其协作类之间的交互关系。类之间的关系可分为 两种:垂直集成关系和水平交互关系。类之间的交互作用是面向对象技术的核心,而这 些交互作用是面向对象中最易出错的地方之一,同时这种交互作用的复杂性增加了簇级 测试的难度。 在面向对象的迭代式增量开发过程中,通过不断的集成产生系统的可执行的版本, 太原理工大学丁学硕+ 研究生学位论文 但每一个集成的环节都可能引入错误,导致软件中存在缺陷。面向对象簇级测试的一个 主要目标是确保某个类或组件对象的消息以正确的顺序发送和接收,并确保接收消息的 外部对缘的状态获得预期影响,发现软件集成中的问题。 面向对象软件没有层次的控制结构,其构造过程中有不同层次的集成:从方法到类 的集成,类通过继承集成,类通过容器集成,类到组件的集成,组件到应用系统的集成。 因此传统的自顶向下和自底向上集成策略在面向对象测试中就没有实际意义,此外,由 于构成类的成分的直接和间接的交互,传统的增量集成方法也不可能广泛的应用。 要检验最终实现中各种集成是否与设计的集成一致,则需要对每一个集成层次进行 测试,而这里的集成分为结构集成和行为集成,所以面向对象软件的簇级测试也相应分 为结构簇级测试和行为簇级测试。结构簇级测试主要测试类的继承、类的容器、类的接 口、组件的接口中有无错误;行为簇级测试主要是类内方法交互、类间方法交互、组件 间交互是否被错误地实现。 测试工作的核心主要是生成测试用例,在面向对象软件开发过程中,系统的规约、 设计、代码是生成测试的信息来源,是软件在其生命周期不同阶段的变体,当然规约、 设计、代码在每一阶段的测试中都起相应的作用。特别地,系统规约是生成系统测试用 例的基础和系统测试的检验依据,软件代码是生成单元测试用例的基础和单元测试的检 验依据,系统设计是生成簇级测试用例和簇级测试的检验依据。系统的设计信息有助于 理解系统功能和结构,设计模型包含规约和程序结构的信息,同时也描述了系统的相应 功能片断的行为,因此也被称为灰盒。可以结合白盒测试和黑盒测试方法,从设计信息 生成簇级测试用例,测试设计模型表示的软件系统的灰盒行为1 4 1 。 1 2 3 面向对象软件测试的覆盖准则 测试覆盖准则是对软件测试充分性的度量,任何测试策略都应该有与之相对应的覆 盖准则,在此基础上选择测试用例,通过覆盖率来说明测试结果的可信性。 传统的软件测试的覆盖准则对基于代码的测试而言,主要是代码覆盖,可细分为语 句覆盖、路径覆盖、分支覆盖、判定分支覆盖,其中判定分支是最强的覆盖准则。 对于面向对象的软件测试而言,代码的覆盖只适用于方法级测试。面向对象软件测 试必须引入新的覆盖准则。继承性要求达到继承的上下文覆盖;多态性要求覆盖所有可 能的消息绑定;基于代数规约的测试要求能达到公理的覆盖:基于状态的测试要求能覆 4 太原理t 大学t 学硕十研究生学位论文 盖所有的状态和转换。 1 3 基于规约的软件测试 1 3 1 基于规约的软件测试的优点 基于规约的测试即黑盒测试,是相对于基于代码的测试而言的。基于代码的测试在 代码的基础上产生测试用例:基于规约的测试在软件规约的基础上产生测试用例。从形 式规约( f o r m a ls p e c i f i c a t i o n ) 产生以来,人们逐渐把注意力集中于研究基于规约的测试,相 对于基于代码的测试,基于规约的测试主要有三个优点: 1 基于规约的测试可以贯穿于软件开发的整个生命周期,在开发的早期阶段就可 以进行测试用例的设计,只要有了规约,不管是正式的还是非正式的,就可以 在此基础上设计测试用例;而基于代码的测试必须等代码完成后才能设计测试 用例,延长了整个软件开发的周期。 2 一个软件系统通过了基于代码的测试,只能说明程序本身是正确的,而不能说 明完成了预定的功能,所以也无法检测出功能设计的遗漏。如果按照软件的规 约产生的测试用例在运行后能得到和规约一致的结果,则表示程序功能是正确 的,因此基于规约的测试也称为功能测试。 3 形式规约的不断发展,为基于规约的测试用例自动化生成提供了坚实的理论基 础。广义的规约指的是所有对软件产品的预期行为和特性的描述。提供给测试 者的规约可以是各种非正式的文档或用某种规约语言书写的形式规约。 1 3 2 基于规约的软件测试的研究现状 在上世纪八十年代之前,针对基于规约的测试的研究还很少。三个方面的原因推动 了基于规约的测试研究的发展: 1 基于代码的测试不能取得满意的效果。业界人士都意识到即便是一个获得1 0 0 代码覆盖率的基于代码的测试,也无法证明系统功能的正确性,只能证明代码 的正确性; 2 形式规约语言的出现。最初这些规约语言在通信软件上得到推广应用,并取得 良好效果。这些规约具有完整性、一致性和非二义性,为软件自动化测试打下 太原理工大学工学硕十研究生学位论文 了坚实的基础。其中有代表性的形式规约语言有l o t o s 、e s t e l l e 等等; 3 软件规约c a s e 工具的出现使得形式规约得到广泛应用。现在一些面向对象 c a s e 工具除了具有规约的作用外,还能在此基础上自动生成测试用例或提供 一个用脚本编辑测试用例的环境。 专家们一方面完善和扩展规约语言,适应自动化测试的需要,另一方面发展测试理 论和方法。g o o d e n o u g h 和g e r c h a r t 在文献 5 】中指出基于代码的测试用例是不充分的, 他们提出了从通过条件表( c o n d i t i o nt a b l e s ) 来表达的非形式规约中生成测试用例。c h o w 提出的基于有限状态机( f i n i t es t a t em a c h i n e s ) 的测试是第一篇有关基于形式规约的测试 1 6 1 ,这篇文章对后续的基于规约的测试产生了巨大的影响。九十年代,随着正规规约的 出现和不断推广,基于形式规约测试的理论和方法得到了极大的发展,各种基于规约的 测试方法不断被提出:g a n n o n 提出了基于代数规约( a l g e b r a i cs p e c i f i c a t i o n ) 的测试;d i c k 提出了基于模型规约( m o d e l b 鹊e d ) 的测试【7 】;b n n k s m a 提出以规约语言l o t o s 为基础 的基于有限状态机( f s m b a s e d ) 的测试。 软件规约为适应面向对象方法的广泛应用也在进行不断的扩充,代数规约法从抽象 数据类型发展到支持对象类型,如面向对象的规约语言o b j e c t - z ;有限状态机发展到具 有层次机构、支持并发和消息通信的状态图,如u m l 模型。u m l 己成为面向对象建模 事实上的标准以及被o m g 所接纳的标准建模语言。基于u m l 模型的测试技术的研究, 无论是从实用性方面还是理论性方面来说都有很高的研究价值。 基于规约的面向对象测试方面的研究主要集中在基于状态的测试和基于形式规约 的测试两大方面。其中,基于状态的测试是用有限状态机来对被测试的对象行为或系统 行为建模,然后用基于有限状态机的测试方法来产生需要的测试用例。基于形式规约的 面向对象测试的研究大多数集中在类层次上 基于规约的测试数据生成是根据软件的规约文档,即形式化文档进行分析产生测试 数据的过程。最常见的有基于扩展有限状态机的e s t e l l e 和s d l 规约、代数规约o b i e c t z 、 过程代数l o t o s 等等。通过将规约说明转化为某种形式化语言描述,然后对其进行分 析推理产生测试用例。基于规约的测试往往可根据规约自动或半自动地生成测试数据, 但未必能提供充分的代码覆盖。文献 8 】提出从布尔规格说明自动生成测试数据的方法, 文献【9 】提出从关系代数查询表示的规格说明中自动生成测试用例的方法,它以软件规范 为依据选取测试数据,其正确性依赖于规范说明的正确性【l o l 。 6 太原理丁大学 :学硕十研究生学位论文 1 3 3 基于模型的软件测试 基于模型的软件测试( m o d e l b a s e ds o f t - w a r et e s t i n g ) 属于基于规约的软件测试。 随着面向对象软件开发技术的广泛应用和软件测试自动化的要求,基于模型的软件测试 逐渐得到重视】。目前软件测试中使用的典型模型有有限状态机模型、u m l 模型和马 尔可夫链模型等。 模型就是用语言把一个系统的行为描述出来,定义出它可能的各种状态,以及它们 之间的转换关系,是系统的抽象。基于模型的测试是根据模型自动生成测试用例,并执 行验证的过程,即根据实际结果和原先预想的结果的差异来测试系统,过程如图1 1 所 示。 图1 - 1 基于模型的软件测试过程 f i g 1 1p r o c e s so f m o d e l b a s e ds o f t w a r et e s t i n g 基于模型的测试的主要优点包括: 1 有利于在软件开发过程早期准备测试方案和计划测试资源( 包括时间和费用) , 尽早发现规格说明和设计中的不确定因素; 2 自动生成,运行测试用例; 3 减少需求变更带来的测试组件的变更; 4 能够评价回归测试: 5 能够达到软件质量; 以上优点使得软件测试周期缩短,成本降低,从而提高软件质量; 基于模型的测试的一般过程为: 1 建立模型; 2 生成预期输入; 3 生成预期输出; 7 太原理1 i 大学工学硕十研究生学位论文 4 运行测试,比较实际的输出和预期输出; 5 更改模型,生成更多的测试用例或停止测试,估计软件的可靠性; u m l 在被工业界广泛接受的同时也成为学术界遵循的一种标准建模语言。许多面 向对象软件测试的研究都围绕从u m l 模型构造软件模型开展。研究基于u m l 模型的 软件测试有利于把测试工作提前到软件开发周期的早期进行。 p e t r i 网作为离散系统的建模和分析工具,适合于描述系统中顺序、并发、冲突以及 同步等关系,拥有丰富的系统描述手段和系统行为分析技术。着色p e t r i 网( c o l o r e dp e t r i n e t s ,简称c p n ) 是一种高级p e t r i 网。着色p e t r i 网对原型p e t r i 网中的托肯( t o k e n ) 着以不同的颜色,其实质是对托肯进行分类。国内已有基于p e t r i 网模型的软件测试研 究【。2 1 ,但较为少见。文献【1 3 】介绍了u m l 模型向经典p e t r i 网映射的方法,但形式化程 度不高,数理逻辑的严密程度也不足。文献 1 4 】、f 1 5 提出了u m l 图表到c p n 模型的 映射方法,并将该模型运用于模型检测。我们发现c p n 模型也可以运用于面向对象的 类测试、簇级测试中。 在本文的研究内容中,我们将以基于u m l 的c p n 模型作为模型测试,设计基于 c p n 模型的面向对象软件的测试框架和相应的测试模型,并研究此模型下的测试用例自 动化生成问题。 1 4 本文主要工作和章节安排 u m l 模型属于半形式化模型往往无法自动生成测试用例。所以本文的研究目标 就是将u m l 模型与p e t r i 网相结合,弥补u m l 的数学支持的不足,属于基于规约的软 件测试的范畴。在对其深入研究的基础上,本文给出了基于u m l 的c p n 模型的测试框 架和一个从u m l 模型构造c p n 模型的算法,提出了基于c p n 模型的测试覆盖准则和 测试用例的自动生成方法。 本文以基于模型的测试用例的自动化生成为主线,首先总结了面向对象软件测试的 基本概念,介绍了基于规约测试的基本方法,重点研究并提出了基于u m l 的c p n 模型 在测试中的应用,分析了基于此模型的测试用例生成策略和覆盖准则,最后构建了自动 化测试用例生成工具。 第二章基于u m l 软件测试,总结了基于u m l 软件测试的研究现状,介绍了本文 太原理t 大学1 :学硕士研究生学位论文 研究所需要的状态图和顺序图的基本概念及其在类测试和簇级测试中的应用,最后还晚 明了根据测试需要对u m l 模型进行的必要补充。 第三章基于u m l 的c p n 模型,首先介绍了p e t r i 和c p n 的基本概念,然后详细 介绍了c p n 模型( 包括对象网模型和对象连接模型) 的结构和行为。 第四章从u m l 模型构造c p n 模型,以第三章提出的模型为基础,分析并提出了 从u m l 图表构造c p n 模型的具体步骤和算法。 第五章实现及支持工具,介绍了己经形成一套完整的理论体系的基于状态测试的 覆盖准则,并在研究基于状态覆盖准则的基础上提出了自己的测试覆盖准则,最后介绍 了基于c p n 模型的自动测试工具的实现。 第六章结论与展望,对全文进行总结。 太原理 :大学工学硕十研究生学位论文 第二章基于u m l 软件测试 2 1 基于u m l 的软件测试研究现状 u m l 是由著名的面向对象技术专家g r a d yb o o c h 、j i mr u m b a u g h 和i v a rj a c o b s o n 发起,在著名的b o o c h 方法、o m t ( o b j e c tm o d e l i n gt e c h n o l o g y ) 方法和o o s e ( o b j e c t - o r i e n t e ds o f t w a r ee n g i n e e r i n g ) 方法的基础上,广泛参考多种面向对象分析与 设计方法几经修改完成的。u m l 的1 1 版已经于1 9 9 7 年被o m g 批准作为标准,这 标志着u m l 成为软件工业中占主导地位的建模语言。目前u m l 已经发展到2 0 版,并 在此基础上产生了很多的商业化的c a s e 工具,其中最典型的、应用最为广泛的是 r a t i o n a lr o s e 。 1 6 1 u m l 严格来说应该属于一种半形式规约,因为它允许一定程度的模糊性,也不完 全要求完备性。但只要建模者严格按照u m l 的语法和语义,完全可以构造出一个完备、 一致的、非二义的规约,而这正是自动化测试所要求的基本条件u m l 的基本构成部 分是各种模型卧1 7 】它包括: 1 用例图( u s ec a s ed i a g r a m ) :展示系统外部的各类执行者与系统提供的各种用例 之间的关系; 2 类图( c l a s sd i a g r a m ) :展示系统中类的静态结构: 3 对象图( o b j e c t d i a g r a m ) 是类的实例化对象的图: 4 包图( p a c k a g ed i a g r a m ) :是一种分组机制,在u m l l 1 及以后版本中,不再被 看作是一种独立的模型图; 5 状态图( s t a t ed i a g r a m ) :描述对象所具有的所有可能的状态及其转换关系; 6 顺序图( s e q u e n c ed i a g r a m ) :展示对象之间和顺序有关的一种动态协作关系; 7 合作图( c o l l a b o r a t i o nd i a g r a m ) :从另一个角度展示对象之间的动态协作关系; 8 活动图( a c t i v i t yd i a g r a m ) ;展示系统间各种活动的执行流程; 9 构件l g l ( c o m p o n e n td i a g r a m ) :展示程序代码的物理结构: 1 0 配置i 暮l ( d e p l o y m e n td i a g r a m ) :展示软件在硬件环境中( 特别是在分布式及网络 环境中) 的配置关系。 利用u m l 对面向对象软件建模,虽然可以提高软件质量,但仍不能保证开发的软 o 太原理t 大学 :学硕士研究生学位论文 件是正确的,因此基于u m l 开发的软件必须进行测试。因为u m l 提供了软件的形式 基础,所以在u m l 建模过程中,用户可以根据u m l 描述的系统规范进行功能测试。 开发过程所产生的不同抽象层次的模型制品可以提供相关测试信息产生测试例,并支持 软件测试。 因为u m l 已经成为事实上的面向对象建模标准,研究基于u m l 的测试不仅可以 保证被测试软件与规范的一致性【1 ,而且有利于把测试工作提前到软件开发周期的早期 进行,并可以在软件开发早期进行测试计划,具有很强的现实意义。 目前,基于u m l 的软件测试研究成果主要包括: 1 基于u m l 的软件测试充分性准则研究。确定测试充分性准则是软件测试的首要 问题。现有的基于u m l 的测试充分性准则研究多数是基于状态机模型的,部分是传统 的基于数据流的测试充分性准则的扩展。 2 利用状态图对类进行测试。由于u m l 的状态图是描述类的行为的良好工具,因 此可以根据u m l 状态图进行类级测试。事实上,许多基于状态机测试的研究成果都可 以应用于u m l 状态图测试,许多研究将原有的基于e f s m 测试的研究成果应用于u m l 的状态图,为基于u m l 的状态图产生测试用例提供理论和方法的支持。 3 利用顺序图、活动图、协作图对类簇进行测试。b a s a n i e r i 等提出使用u m l 顺序 图的消息序列进行软件簇级测试,试图将现有的基于黑盒测试方法的软件簇级测试技术 结合到u m l 的框架之中。 4 利用用例图和构件图对系统进行测试。系统测试关注基于u m l 模型测试整个软 件系统,一般包括功能测试和性能测试两部分,功能测试主要关注测试软件功能,性能 测试则关注软件响应时间和资源利用情况。因此,系统测试需要依据软件u m l 规范对 软件进行测试和结果评价。基于u m l 的软件系统测试多使用u m l 的用例图生成测试 用例。 5 基于u m l 模型的软件可靠性估计。由于u m l 描述了软件的需求和设计模型, 所以已经产生了一些基于u m l 模型进行软件可靠性估计和和预测的研究成果,这些工 作多数是基于u m l 的交互图的。例如,以基于u m l 的m a r k o v 链为使用模型的统计测 试研究。 由于u m l 模型从多个方面对软件进行了描述,所以其它u m l 模型图也可以用于 软件测试工作,比如利用部署图对软硬件系统进行测试。 太原理一i :人学1 j 学硕十研究生学位论文 2 2 基于u m l 的类测试 2 2 1u m l 状态图的概念 u m l 状态图来源于d a v i dh a r d 的状态机,用于描述一个特定对象的所有可能状态 以及由于各种事件的发生而引起状态之间的迁移。通常状态机依附于类,描述了类实例 对接收事件的响应。 状态机由状态和迁移组成。状态是值的集合,一个类的状态由它的变量的所有的域 定义【1 9 1 。对象内成员变量的当前值确定了对象的当前状态,它是由以前的消息序列决定 的,同时又限制了对象可接受的消息序列和输入参数的值域。迁移代表了状态之间的一 种关系,指明了对象从一个状态到另外一个状态的通路。通常迁移是由事件激发的,通 过动作来完成。 u m l 状态图本质上是一个扩展的有限状态机( e f s m ) ,它与扩展有限状态机的区 别在于,传统的有限状态机不支持层次结构和并发,u m l 的状态图对此进行了扩展, 并支持和时间有关的转换。e f s m 是确定有限状态机( f s m ) 的扩展,f s m 的相关理论非 常成熟。基于f s m 以及状态图的测试技术自9 0 年代也取得了相当的成果,并在电信、 协议设计等领域形成了自己的标准,因此基于u m l 状态图的测试可以借鉴这些成熟的 技术,包括u i o 方法、w 方法、w p 方法等。 在u m l 中状态图表示为一个有向图,在图中各个节点( 状态) 通过状态间的有向 边( 迁移) 连接起来。状态图中的每一个状态是可达的。初始状态是对象的初始状况, 代表一个状态图的起始点,是一个伪状态,它是迁移的初始源,而不能是迁移的目标, 用一个实心的圆表示。终止状态是对象的最后的状态,代表一个状态图的终止点,它是 迁移的最后目标,而不能是迁移的源,用一个圆中套一个小实心圆表示。迁移使系统从 一个源状态到达一个目标状态,源状态和目标状态可以相同。 u m l 状态图中的状态可以有与其相关的活动,其中有三个缺省的动作:e n t r y 、e x i t 和d o 。e n t r y 动作代表在进入该状态时所产生的特定活动,e x i t 动作代表在离开该状态 时产生的特定活动,d o 动作代表在给定的状态中要执行的特定活动。u m l 状态图的状 态包括简单状态和复合状态,复合状态含其他状态作为其子状态。一个复合状态可分为 o r - 复合状态和a n d 复合状态。 一个迁移由三部分组成:事件、条件、动作,其格式如下: 太原理1 :人学1 :学硕+ 研究生学位论文 e v e n t 【g u a r d a c t i o n e v e n t 代表能使状态发生迁移的事件,【g u a r d 表示发生状态迁移必须符合的条件,a c t i o n 表示状态迁移时发生的动作。其中每一部分都是可选的。当系统处在一个状态( 当前状 态) 时,如果“事件”被接受,并且“条件”的值为真,则这个迁移被激活,就执行这个迁移 的输出“动作”,并且指定的目标状态变成当前状态。 我们可以把发生状态迁移的事件分为外部事件以及内部事件,外部事件是由对象所 处的环境或者是其他对象产生的事件,内部事件是由对象本身产生的事件。 a r g s ) ( a ) _ 互 三 珈 ( b )( c ) 图2 - 1 u m l 中的几种标记 f i g 2 - 1s l a t e sa n dt r a n s i t i o n si nu m l 图2 - l ( b ) e e 的有向边的头节点表示初始状态( i n i t i a ls t a t e ) ,初始状态是一个伪状态, 表示对象生命周期的开始,每个状态图只能且必需有唯一的一个初态;图2 - 1 ( c ) 中的终 态( f i n a ls t a t e ) 也是一个伪状态,表示对象生命周期的结束,一个状态图可能会有多个终 态;图2 - l ( a ) 中的有向边代表一个转换( t r a n s i t i o n ) ,它表示在某个

温馨提示

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

最新文档

评论

0/150

提交评论