已阅读5页,还剩67页未读, 继续免费阅读
(计算机应用技术专业论文)基于测试顺序的类集成测试方法研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上海师范大学硕上研究生学位论文 基于测试顺序的类集成测试方法研究与应用 摘要 随着软件技术的发展和软件项目规模的不断扩大,软件测试的作用越来越重 要。面向对象技术给软件测试带来了新的挑战,而面向对象软件的集成测试是面 向对象软件测试必不可少的部分。目前虽然有一些面向对象软件的集成测试方法 被提出并使用,但仍存在着一些问题。在此背景下,本文对基于测试顺序的类集 成测试方法进行了研究,并提出了新的基于对象模式关系图的集成测试策略。 本文首先介绍了软件测试技术和测试顺序。对于软件测试技术,介绍了软件 测试的概念、阶段划分,并概括介绍了集成测试技术。对于测试顺序,介绍了测 试顺序的概念、类集成测试策略中测试顺序的必要性:介绍了基于对象关系图的 集成测试策略,同时分析了所存在的不足。 接着,提出了对象模式关系图( o m r d ) ,o m r d 是在对象关系图( o r d ) 的基础 上结合了设计模式的新的对象关系图。针对o m r d 的构造需求,分析了u m l 类图 中存在的类依赖关系,提出了u m l 类图中类的依赖性如何决定类测试顺序的四个 测试依赖性定理,在此基础上,总结归纳了常用设计模式内部的类测试顺序。提 出了u m l 类图在构建测试桩基础上的的环路破除算法,并用实例说明0 m r d 的生 成方法。 然后,在o m r d 生成的基础上,提出了基于o m r d 的测试顺序生成方法( o m r d 法) 。在分析o m r d 法的主要思想、主要过程的基础上,定义了可能存在间接依赖 关系的模块问完整测试顺序的计算准则,并构建排序树来计算类测试顺序;并用 实例说明基于o m r d 的测试顺序生成方法。 最后,本文将o m r d 法应用于上海市经委市重点产业技术产学研联合攻关项 目“s d 空运物流进出口业务处理系统”,并将该方法与其它测试顺序生成方法进 行比较,给出了实验结果和结果分析。实验证明,基于对象模式关系图的集成测 试策略在集成测试的类测试顺序产生上,是一种比较完善的方法,具有一定的实 用价值。 关键词:集成测试,测试顺序,对象模式关系图,间接依赖,排序树 上海师范大学硕士研究生学位论文基于测试顺序的类集成测试方法研究与应用 a b s t r a c t w i t ht h ed e v e l o p m e n to fs o f t w a r et e c h n o l o g ya n dt h ei n c r e m e n to fs o f t w a r e p r o j e c ts c a l e ,t h ee f f e c to fs o f t w a r et e s t i n gb e c o m e sm o r ea n dm o r ei m p o r t a n t o b j e c t o r i e n t e dt e c h n o l o g yb r i n g sn e wc h a l l e n g e st os o f t w a r et e s t i n ga n do b j c c t - o r i e n t e di n t e g r a t i o nt e s t i n gi sn e c e s s a r yt oo 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 a tp r e s e n t , s o m eo b j e c t - o r i e n t e di n t e g r a t i o ns t r a t e g i e sa r ep u tf o r w a r d ,b u tt h e ys t i l lh a v es o m e q u e s t i o n s t h i sp a p e rf o c u s e so nt h ec l a s si n t e g r a t i o nt e s t i n gs t r a t e g yb a s e do nt e s t o r d e ra n db r i n g sf o r t han e wi n t e g r a t i o nt e s t i n gs t r a t e g yb a s e do no b i e c tm o d e l r e l a t i o nd i a g r a m a tt h eb e g i n n i n g , t h i sp a p e ri n t r o d u c e st h es o f t w a r et e s t i n gt e c h n o l o g ya n dt e s t o r d e r o nt h es o f t w a r et e s t i n gt e c h n o l o g y ,w e :i n t r o d u c et h ec o n c e p t sa n dp h a s e sa n d g e n e r a l i z et h ei n t e g r a t i o nt e s t i n gs t r a t e g y o nt h et e s to r d e r , w ei n t r o d u c et h ec o n c e p t s a n dt h ee s s e n t i a lt ot e s to r d e r w ea l s oi n t r o d u c et h ei n t e g r a t i o nt e s t i n gs t r a t e g yb a s e d o no b j e c tr e l a t i o nd i a g r a ma n da n a l y z et h ef a u l t s e c o n d l y , t h ep a p e rp r o p o s e so b j e c tm o d e lr e l a t i o nd i a g r a m ( o m r d ) o m r dt h a t i sb a s e do nt h eo b j e c tr e l a t i o nd i a g r a m ( o r d ) c o m b i n e sw i t hd e s i g nm o d e lt of o r ma n e wo b j e c tr e l a t i o nd i a g r a m a c c o r d i n gt ot h er e q u i r e so fo m r d ,w ea n a l y z et h e c l a s sd e p e n d e n c yr e l a t i o n si nu m la n dp u tf o r w a r dh o wc l a s sd e p e n d e n c yr e l a t i o n s d e t e r m i n et ot h et e s to r d e ri nu m lt h e nw es l i mu pt h et e s to r d e ro fs t a p l ed e s i g n m o d e l s w ed i s c u s sc y c l eb r e a k i n ga r i t h m e t i cb a s e do nt e s ts t u ba n di l l u s t r a t et h e g e n e r a t i o no fo m r d t h i r d l y , o nt h eb a s i so fo m r d ,w ep r o p o s et h et e s to r d e rg e n e r a t i o nb a s e do n o m r d w ea n a l y z et h et h o u g h t , p r o c e s sa n dd e f i n ee n m p l e r et e s to r d e ri nm o d u l e s t h a tp r o b a b l yp o s s e s si n d i r e c td e p e n d e n c yr e l a t i o n s t h e nw ec o n s t r o c ts o r t i n gt r e et o c a l c u l a t et e s to r d e ra n di l l u s t r a t et h et e s to r d e rg e n e r a t i o nb a s e do no m r d f i n a l l y , t h ep a p e ru s e st h i sm e t h o di n s da i rl o g i s t i c si m p o r ta n de x p o r t m a n a g e m e n ts y s t e m a n dc o m p a r e si tw i t ho t h e rm e t h o d s t h e nw eg i v eo u tt h e e x p e r i m e n tr e s u l t s t h er e s u l t sp r o v et h a ti n t e g r a t i o nt e s t i n gs t r a t e g yb a s e do no b j e c t m o d e lr e l a t i o nd i a g r a mc a l lg e n e r a t ec o m p l e t et e s to r d e ra n di sar e l a t i v ep e r f e c t m e t h o d t h em e t h o dh a ss o m ep r a c t i c a lv a l u e sa n di sv a l u a b l et ob ei n v e s t i g a t e d f u r t h e r k e y w o r d s :i n t e g r a t i o nt e s t i n g , t e s to r d e r , o b j e c tm o d e lr e l a t i o nd i a g r a m ,i n d i r e c t d e p e n d e n c y , s o r t i n gt r e e i i 论文独创性声明 本论文是我个人在导师指导下进行的研究工作及取得的研究成果。论文中除 了特别加以标注和致谢的地方外,不包含其他人或机构已经发表或撰写过的研究 成果。其他同志对本研究的启发和所做的贡献均已在论文中做了明确的声明并表 示了谢意。 作者签名书研魄冲川r 论文使用授权声明 本人完全了解上海师范大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其它手段保存论文。保密的论文在解密后遵守此 规定。 储签印刷醛 日飙刎一,f 彩刀j - i d 上海师范大学硕士研究生学位论文基于测试顺序的类集成测试方法研究与应用 1 1 论文研究背景 第一章绪言 随着计算机科学技术的飞速发展,作为计算机的灵魂,软件起着举足轻重的 作用,软件的失效可能造成巨大的经济损失甚至危及生命安全。人们对软件测试 重要性的认识越来越深刻,软件测试阶段在整个软件开发周期中所占的比重日益 增大。对于某些性命攸关的软件,其测试费用甚至高达所有其它软件工程阶段 费用总和的3 到5 倍。美国微软公司软件测试人员与开发人员的比例为2 比1 0 1 。 从1 9 8 2 年在美国北卡罗来纳大学召开首次软件测试的正式会议以来,软件测试 理论迅速发展,并相应地出现了各种软件测试方法,推动了软件测试技术的前进。 2 0 世纪9 0 年代以来开始流行的面向对象( 0 0 ) 技术是一种全新的软件开发 技术,正逐渐代替被广泛使用的面向过程的开发方法,被看成是解决软件危机的 新兴技术。面向对象技术产生了更好的系统结构,更规范的编程风格,极大地优 化了数据使用的安全性,提高了程序代码的重用性和可维护性“1 。有些人因此而 乐观地认为:随着面向对象分析( o o a ) 和面向对象设计( o o d ) 技术的成熟,将更好 地减轻面向对象系统繁重的测试。但是,软件工程实践经验表明:面向对象开发 方法本身并不能保证生产出高质量的软件产品,这是因为无论采用什么样的开发 方法和技术,开发人员的错误都是难以避免的。1 。而且面向对象软件强调可重用 性,因此面向对象软件对测试工作提出了更高的要求。如b i n d e r 讨论该问题时认 为:每次复用都是一个新的语境,要谨慎地重新测试”1 。为了获得面向对象系统 的高可靠性,似乎将要更多而不是更少的测试。目前,尽管研究人员在软件测试 领域取得了丰富的成果,但是还缺少较成熟的、有效的面向对象软件测试技术, 还有许多问题有待于进一步的研究解决。 在面向对象的软件测试中,虽然可以继续延用传统软件测试的概念,但测试 的方法和过程都发生了改变。由于面向对象软件的单元是类同时面向对象软件 又存在继承、多态等特性,导致面向对象软件的测试不同于原来面向过程软件的 测试,而有着自己独特的测试技术。类的测试被看作是0 0 软件的单元测试,目前 已有很多方法针对类的单元测试提出。相对于类的单元测试来说,面向对象软件 的集成测试在整个测试过程中占有更重要的位置,因为不同的集成测试策略将导 致不同的测试工作量,从而决定着测试效率。本文将在现有的面向对象软件集成 测试技术的基础上进行研究,讨论适合面向对象软件的集成测试技术。 面向对象软件的集成测试中,由于面向对象软件没有层次的控制结构,体现 调用关系的静态视图是一个错综复杂的网络结构。传统的增量集成测试方法经常 是不可能的,这是因为构成类的成分之间具有直接或间接的交互,构造集成测试 七海师范大学硕士研究生学位论文基于测试顺序的类集成测试方法研究与应用 中的测试桩和测试驱动器需要花费很大的代价。因此传统的自顶向下和自底向上 的集成测试策略已不适应,我们必须研究新的适合于面向对象的集成测试策略。 从现有的文献看,b i n d e r 提出了基于线程的集成测试策略和基于使用的集成测 试策略”3 ,m c g r e g o r 提出了集群测试策略”1 。h a r r o l d 提出了基于类层次的增量 测试策略嘲。这些方法一定程度上考虑了面向对象软件的特点,但是这些方法有 的难于实现,有的仍需要构造大量的测试桩和测试驱动器”1 。 k u n g 和t a i 提出了基于对象关系图的集成测试策略嗍。这种基于对象关系 图的集成测试策略是以构造集成测试中类的测试顺序为主要思想,以尽可能的减 少测试桩的使用为目的的。但基于对象关系图的集成测试策略存在以下不足: ( 1 ) 对象关系图丢失了u m l 类图中设计模式的信息。 ( 2 ) 基于对象关系图生成的测试顺序在某些方面不完整,因此影响集成测试 结果的正确性。 ( 3 ) 在环路解决问题上,仍然存在不完善的地方。 本文将在基于对象关系图的集成测试策略的基础上,改进k u n g 提出的对象 关系图,提出新的对象模式关系图,并在此图的基础上提出构造类测试顺序的新 方法基于对象模式关系图的测试顺序生成方法。该方法可以在一定程度上解决 基于对象关系图的集成测试策略的不足,得到更加完整的测试顺序,从而更好的 保证了集成测试的正确性。 1 2 论文的主要工作 本文主要研究了以下几方面的内容: ( 1 ) 研究了基于对象关系图的测试顺序生成方法,分析了该方法的优劣性。 首先研究k u n g 和t a i 的基于对象关系图的测试顺序生成方法,分析了存在的 不足:对象关系图丢失设计模式信息;得到的测试顺序不够完整;破环算法仍存 在问题等。针对这些不足进行研究,为提出本文的基于对象模式关系图的测试顺 序生成方法奠定了基础。 ( 2 ) 研究了基于设计模式的对象模式关系图( o m r d ) 的生成方法。 对象模式关系图( 0 m r d ) 是在对象关系图( o r d ) 的基础上,引入设计模式的 概念,将o r d 与设计模式相结合的一种新的对象关系图。为了构造0 m r d ,本文 提出了u m l 类图中类的依赖性如何决定类测试顺序的四个测试依赖性定理,并在 此基础上总结了常用设计模式内部的类测试顺序。本文构造的o m r d 是在u m l 类 图破环基础上进行的,为此讨论了u l l 类图中环路的破除问题,提出了在构建测 试桩基础上的破环算法。 ( 3 ) 研究了基于对象模式关系图的测试顺序生成方法0 m r d 法。 上海师范丈学硕士研究生学位论文 基于测试顺序的类集成测试方法研究与应用 o m r d 法是使用o m r o 中的依赖关系来获得类测试顺序,进行类集成测试的一 种方法。为了得到最终完整的类测试顺序,本文定义了可能存在间接依赖关系的 模块间完整测试顺序的计算准则,并构建排序树来计算类测试顺序。根据构建的 排序树,得到最终完整的类测试顺序。 ( 4 ) 进行了详细的实验和数据分析。 为了验证基于对象模式关系图的集成测试策略的实用性,本文将o m r o 法应 用于上海市经委市重点产业技术产学研联合攻关项目“s d 空运物流进出口业务 处理系统”( 编号:0 6 2 6 ) ,将该方法与基于对象关系图的集成测试策略在测试 顺序完整性、构建测试桩数量方面进行比较,得到了实验结果和结果分析与比较。 实验证明,基于对象模式关系图的集成测试策略在集成测试的类测试顺序产生 上,是一种比较完善的方法,具有一定的实用价值。 1 3 课题来源 本课题来源于上海市经委市重点产业技术产学研联合攻关项目“s d 空运物流 进出口业务处理系统”( 编号:0 6 2 6 ) 和上海市自然基金项目:“基于组件的软件 系统的可靠性计算方法研究”( 编号:0 4 z r l 4 1 0 5 ) 。此外课题还来源于参与设计 和实现的上海航天汽车机电股份有限公司“电子风扇控制器试验台程序”。 1 4 论文创新点 论文的创新点如下: ( 1 ) 提出了u m l 类图中类的依赖性如何决定类测试顺序的四个测试依赖性定 理,并在此基础上总结了常用设计模式内部的类测试顺序。 ( 2 ) 提出了u 眦类图中在构建测试桩基础上的环路破除算法。 ( 3 ) 在对象关系图的基础上,结合设计模式,提出了基于设计模式的对象模 式关系图。 ( 4 ) 在对象模式关系图的基础上,提出了测试顺序生成的新方法,即基于对 象模式关系图的测试顺序生成方法伽d 法。 1 5 论文结构 本文的章节安排如下: 第一章绪言。介绍了论文的研究背景、主要工作、课题来源、论文创新点 及论文结构。 第二章软件测试技术与测试顺序。着重介绍了组成文章的两个方面:软件 测试和测试顺序。在软件测试技术部分,介绍了软件测试技术中的概念、阶段划 上海师范大学硕上研究生学位论文基于测试顺序的类集成测试方法研究与应用 分,并概括介绍了集成测试技术。在测试顺序部分,介绍了测试顺序的概念、类 集成测试策略中测试顺序的必要性;并简单介绍了基于对象关系图的测试顺序生 成方法,同时分析了所存在的不足。 第三章基于设计模式的o m r d 生成方法。分析了u m l 类图中存在的类依赖关 系;提出了u m l 类图中类的依赖性如何决定类测试顺序的四个测试依赖性定理: 并在此基础上总结归纳了常用设计模式内部的类测试顺序。提出了u m l 类图中在 构建测试桩基础上的环路破除算法。最后用实例介绍了o m r d 的生成方法。 第四章基于o m r d 的测试顺序生成方法。提出了基于o m r d 的测试顺序生成 方法,详细研究了o m r d 法的主要思想、主要过程。定义了o m r d 中可能存在间接 依赖关系的模块间完整测试顺序计算准则;最后通过实例介绍了基于o m r d 的测 试顺序生成方法。 第五章测试实例及分析。将o m r d 法应用于上海市经委市重点产业技术产学 研联合攻关项目“s d 空运物流进出口业务处理系统”,将该方法与其它测试顺序 生成方法进行比较,最后给出实验结果和结果分析与比较。实验证明,基于对象 模式关系图的集成测试策略在集成测试的类测试顺序产生上,是一种比较完善的 方法,具有一定的实用价值。 第六章总结与展望。对本文的工作进行了总结并提出下一步的工作。 4 上海师范大学硕士研究生学位论文 基于测试顺序的类集成测试方法研究与应用 第二章软件测试技术与测试顺序 2 1 软件测试技术 2 1 1 软件测试技术概述 软件测试是软件开发的重要环节。软件测试的目的在于按照规定的步骤,采 用适当的方法,对软件进行严格的检查,以发展和改正软件的错误,使软件的质 量在测试过程中不断提高,逐渐达到规定的要求,能够交付用户使用“”。软件开 发的经验表明,软件测试需要消耗大量的资源,软件测试所需工时通常高达开发 期总工时的4 0 一5 0 。美国n a s a 的a p o l l o 登月计划,更是有约8 0 的经费用于 系统测试中“。由此可见,软件测试不仅仅是软件开发中的一个技术措施,软件 测试对于整个项目能否顺利实施具有非常重要的作用。随着人们对软件系统的期 望值日益提高,软件的规模和软件的复杂程度也会日益增加,软件测试所占的比 重和地位也会越来越高。 近年来,尽管软件测试技术有了长足的进步,但总的来说,仍然和软件开发 实践提出的要求有相当大的距离。测试手段的进展也远远没有达到令人满意的程 度。 2 1 2 软件测试的阶段划分 软件测试阶段包括单元测试、集成测试、系统测试、验证和确认以及回归测 试1 ( 1 ) 单元测试。单元是程序的最小组成单位,单元测试是检验程序最小单位 有无错误。主要检查单元接口、局部数据结构、重要执行路径、错误处理、边界 这五方面的内容。 ( 2 ) 集成测试。集成测试是在单元测试基础上,对软件进行集成的过程中进 行测试。 ( 3 ) 系统测试。系统测试是将软件作为一个计算机系统的组成成分,与计算 机硬件、外设、支撑软件、数据、人员等其他系统成分结合进行测试。系统测试 包括功能测试、性能测试、压力测试、安全测试、恢复测试等。 ( 4 ) 验证和确认。验证测试是为了确定给定开发阶段产品是否满足该阶段开 始时提出的条件而对软件进行的测试过程,它说明了软件是否正确。确认测试是 指在开发过程期间或结束时,为确定软件是否满足规定的需求而对软件进行测试 的过程。它说明了软件是否与需求一致。 ( 5 ) 回归测试。回归测试就是针对已测试并进行错误修改的功能模块及可能 上海师范大学硕士研究生学位论文 基于测试顺序的类集成测试方法研究与应用 受到影响的模块子集进行重新测试,它能够发现耦合度较高的模块间,由于其中 一模块更改而产生的相关联的错误。 2 1 3 集成测试简介 集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规 格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相 应技术指标及要求的活动。所有的软件项目都不能摆脱系统集成这个阶段。不管 采用什么开发模式,具体的开发工作总得从一个一个的软件单元做起,软件单元 只有经过集成才能形成一个有机的整体。 集成测试的必要性在于一些模块虽然能够单独地工作,但并不能保证连接起 来也能正常工作。程序在某些局部反映不出来的问题,有可能在全局上会暴露出 来,影响功能的实现。此外,在某些开发模式中,如迭代式开发,设计和实现是 迭代进行的。在这种情况下,集成测试的意义还在于它能间接地验证概要设计是 否具有可行性。 集成测试的目的是确保各单元组合在一起后能够按既定意图协作运行,并确 保增量的行为正确。它所测试的内容包括单元间的接口以及集成后的功能“”。 2 2 测试顺序 2 2 1 测试顺序的概念 测试顺序是在面向对象软件的类簇测试中,由于类之间存在着依赖性,而由 依赖性所决定的类被先后测试的顺序。最早由k u n g 在文献 1 中提出,应用于回 归测试中的类簇测试,它代表了在一个类簇中,当有类由于代码改变时,受影响 的类需要被重新测试的先后顺序。后来,测试顺序的思想被用于面向对象软件的 集成测试,它代表了在集成测试中,类被测试的先后顺序。 使用测试顺序进行集成测试的主要思想是先测试不依赖于任何类的类,然后 测试那些依赖于前面己测试过的类的类。这样可以在一定程度上有效的减少测试 桩和测试驱动器的使用,从而大大降低了测试的成本。 2 2 2 类集成测试策略中测试顺序的必要性 传统的集成测试策略是与以功能分解为特征的结构化开发方法相适应,其前 提是系统具有层次化的模块结构。面向对象程序在组织结构上与用传统的面向过 程的语言开发的程序是不同的。面向对象程序中的对象之间以消息的形式进行通 信,多个对象协同配合共同完成一个任务。基于消息传递的交互使一个对象在执 行一个操作时很可能要向其它对象发送信息,请求其它对象协助,而接收消息的 上海师范大学硕士研究生学位论文 基于测试顺序的类集成测试方法研究与应用 对象同样会向另外的对象发送消息。因此,一条消息会引起连锁反应,形成一条 方法调用链“。面向对象的程序没有明显的层次结构,体现调用关系的静态结构 是一个错综复杂的网状结构。显然,基于功能分解的自项向下、自底向上和三明 治式的集成测试策略已经显得力不从心,需要研究符合面向对象程序特点的新的 集成测试策略。 集成测试需要利用测试驱动器和测试桩,然而为面向对象程序构造测试驱 动器和测试桩的工作量非常大。因为在面向对象的系统中,对象行为依赖于对象 当前状态,而一个任务的执行需要涉及到多个对象,所以要准确地模拟一个对象 行为需要理解所有与之有关的对象行为1 。因此可以看出,在o o 的集成测试中, 测试桩构造的代价非常昂贵。如何减少0 0 集成测试中测试桩的数目,成为0 0 集成 测试中的关键问题。k u n g 提出了在0 0 的回归测试中,应用测试顺序的思想。后来 测试顺序被应用到集成测试中,先构造类的测试顺序,然后按照类的测试顺序来 进行集成测试的方法,可以在一定程度上减少测试桩的数量“1 。 所以,在研究面向对象软件的集成测试策略时,我们已经不能仅局限于传 统的集成测试策略,而应该充分考虑面向对象软件的特点,采用适合面向对象软 件特点的集成测试策略。本课题将在已有的基于对象关系图的集成测试策略的基 础上,进一步研究,提出基于对象模式关系图的集成测试策略。 2 3 对象关系图o r d 2 3 1o r b 的概念 o r d ( o b j e c tr e l a t i o n d i a g r a m ) ,即对象关系图,由k u n g 在文献 1 中提出。 o r d 是一种反映类对象之间关系的图。一个程序p 的o r d 是一个有向图,其中图 中每个节点代表着p 中的一个类,每条边代表着类与类之间继承( i n h e r i t a n c e ) 、 聚合( a g g r e g a t i o n ) 和关联( a s s o c i a t i o n ) 关系中的一种。它可以从u m l 类图直接 转化得到。图2 - 1 显示了一个典型的0 r d 。 图2 - 1 一个典型的o r d 上海师范大学硕士研究生学位论文 基于测试顺序的类集成测试方j 去研究与应用 从上图看出,对于任意的两个类c 和c 。: ( 1 ) 从c 1 到c 2 存在着条标记着i 的边,表示c 1 是c 2 的子类。 ( 2 ) 从c 1 到c 2 存在着一条标记着a g 的边,表示c l 是c 2 的一个聚合类( c 1 包含了1 个或多个c 2 的对象) 。 ( 3 ) 从c 1 到c 2 存在着一条标记着a s 的边,表示c 1 同c 2 有关联。 2 3 20 r d 的生成方法 常用的0 r d 的生成方法有两种。一种是k u n g 在文献 1 中提出的通过代码的 逆向工程得出,但这种方法很复杂,不易实施。还有一种简单的方法,就是从 u m l 类图转换得到。转换的过程如下: ( 1 ) 将u i j l 类图中的每个类用简写的字母表示,注意不能重复。 ( 2 ) 将u m l 类图中的类与类之间的关系转换为0 r d 中的关系,方式如下: 1 ) u m l 类图中类之间的继承关系,在0 r d 中用标记i 表示。 2 ) u m l 类图中类之间的关联、依赖关系,在0 r d 中用标记a s 表示。 3 ) u m l 类图中类之间的聚合、合成关系,在0 r d 中用标记a g 表示。 如图2 - 1 所示,0 r d 就是从u m l 类图中直接转化过来的。因此,u m l 类图中 存在的类与类之间的关系,同样在0 r d 中也存在,并且可以被使用到计算类测试 顺序的过程中。 2 4 基于o r d 的k u n g 的测试顺序生成方法 2 4 1 类防火墙c 开( x ) 类防火墙( c l a s sf i r e w a l l ) 是k u n g 在回归测试中为了保证测试的充分性 同时又不造成测试的重复性提出的“1 。类防火墙表示为c f w ( x ) ,其含义表示当类 x 发生改变时,受x 改变影响而需要被重新测试的类的集合。为了保证测试的充 分性,f f w ( x ) 必须包括:x 的子类、x 的聚合类和x 的关联类。因此计算c f w ( x ) 。 就通过使用在0 r d 中存在的有向边的二元关系的传递性来得到。 r = i l 在0 r d 中c 和c :之间存在一条有向边 r 就表示了类和类之间存在着继承、聚合和关联关系。那么, c f w ( x ) = c kl = 2 ) 条有向边依次进行传递联系,每条有向边 表示关系r :d 1 :s n 。1 1 1 个关系可表示为:r :( d 1 ) 。:( s n ) 。( 1 = i - m ) ,其中r 。 ( a g ,a s ,r = 第i 个关系的关系类型 ;( d 1 ) ;= 第i 个关系上依赖模块d 内部 测试顺序为1 的类ll 因i 不同而不同 ;( s n ) l - ( 第i 个关系上被依赖模块s 内 部测试顺序为n 的类l1 1 因i 不同而不同) 。任意两个相邻的关系都要满足: r 。:( d 1 ) 。:( s n ) 。中的s n 要和r :( d 1 ) :( s n ) ;中的d 1 相同。( 图3 2 1 中( d 1 ) 。 为a i ,( s 1 ) 为b j ,m = 2 ) 厂1a 5 :a i :c i 【厂 a s :c k 测厂 a 卜一 c 卜_ 叫 b l j l - - j l - - _ j 图3 2 10 i r d 中传递依赖例图 ( 3 ) 问接依赖:0 m r d 中的两个模块a 、b ,若a i 直接依赖于b m ( a i 为a 模块 中测试顺序为i 的类,b j 为b 模块中测试顺序为m 的类) ,且b 中存在b 的子类 b j ,根据类关系中间接依赖的定义,则a i 也同样依赖于b j 。这种情况下称类a i 间接依赖于类b j ,表示为a i e b j ,示例如图3 2 2 。 厂坐堂麴,厂 l 全卜a s :a i :b j 一兰j 图3 2 20 衄d 中间接依赖例图 3 1 上海帅范丈学硕士研究生学位论文基于测试顺序的类集成测试方法研究与应用 第四章基于o m r d 的测试顺序生成方法 4 1o m r d 法的主要思想 o m r d 法是结合o m r d 中的依赖关系来获得类测试顺序、进行类集成测试的一 种方法。它的主要思想是,首先使用3 3 3 节中的破环算法将u m l 类图中的环路 破除。然后,计算设计模式内部的类测试顺序,并将u m l 类图转化为o m r d 。接 着,计算o m r d 中的直接依赖和传递依赖集合,并根据依赖集合构造初始排序树。 最后,计算可能存在间接依赖关系的模块问的完整测试顺序,并调整初始排序树, 得到最终的类测试顺序。 0 m r d 法的优点如下: ( 1 ) 提高了设计模式内部的类测试顺序的复用性和类测试顺序产生效率。在 设计模式内部,其实存在着明确的类依赖先后关系,尽管它们内部类的数量不等、 关系复杂程度不同,但其基本形式是一致的。所以o m r d 法在设计类的测试顺序 时先对设计模式内部的类排序,再将设计模式作为一个整体放入u m l 类图,形成 o m r d 。在o m r d 中再设计类的测试顺序。这样可以提高设计模式内部类测试顺序 的复用性和整个类测试顺序的产生效率。 ( 2 ) 充分考虑了由继承和多态引起的间接依赖,保证了最终得到的类测试顺 序的完整性。在计算设计模式内部的类测试顺序时,根据3 2 2 4 节的测试依赖 性定理四,充分考虑了面向对象程序中继承和多态的特点,得到了设计模式内部 完整的类测试顺序。同时在计算类测试顺序时,分析了可能存在间接依赖关系的 模块间的完整测试顺序,并以此测试顺序来调整捧序树( 详见4 5 ) 。这都保证 了最终类测试顺序的完整性。 ( 3 ) 在破环问题上,使用了测试桩并考虑最后加入回归测试来补充破除环路 时所删除的关系,从而使得到的测试顺序更加完整。环路破除使得测试顺序得以 产生,但是无论通过何种方法来破坏,在实际中,由于破除环路所删除的关系依 然是存在的,所以本文所提出的在构建测试桩基础上的破坏算法,最后加入回归 测试来补充此删除的关系,保证了得到的测试顺序的完整性。 4 20 m r d 法的主要过程 使用o m r d 法计算类测试顺序主要包括以下几个过程: 步骤一:输入设计阶段的u m l 类图,判断u m l 类图中是否存在环路,若有则 破除环路,建立测试桩,进入步骤二。若无则直接进入步骤二。 步骤二:查找u m l 类图中存在的设计模式,计算设计模式内部的类测试顺序。 步骤三:根据3 4 节o m r d 的生成方法将t i m 类图转换为o m r d 。 上海师范丈学硕士研究生学位论文基于测试顺序的共集成测试方法研究与应用 步骤四:在o m r d 中直接计算o m r d 中的直接依赖和传递依赖关系。 步骤五:根据步骤四得到的依赖关系构造初始排序树。 步骤六:计算o m r d 中可能存在自】接依赖关系的模块之间的完整测试顺序。 步骤七:根据得到的模块问的测试顺序调整初始排序树,得到最终的排序树。 步骤八:根据排序树计算出o m r d 中各模块的测试顺序,并得出最终的类集成 测试顺序。 o m r d 法的整个流程图如图4 1 所示: 图4 - 1 伽r d 法的基本流程图 对于o m r d 法,我们需要考虑的重点问题如下: ( 1 ) 破除环路所造成的测试不完整的问题。 在3 4 节提供了嘣r d 的生成方法。但这种方法产生了一个问题:由于实际 的类关系中环路确实存在,而在计算测试顺序时因需要破除了环路,则可能存在 有类没有经过完整测试就作为其它类进行测试的前提条件,因此这样产生的类测 试顺序结果是不完整的。因此,在本文提出使用构建测试桩来破除环路的基础上, 在所有类测试完毕后,再对测试桩所替代的类进行回归测试,以弥补构建测试桩 所造成的测试不完整问题。 上海师范人学硕士研究生学位论文 基于测试顺序的类集成测试方法研究与应用 ( 2 ) 查找u m l 类图中存在的设计模式,计算设计模式内部的类测试顺序,将 u m l 类图转换为o m r d 。 该部分是整个方法的基础,只有在o m r d 生成正确的前提下,才能最终得到完 整的测试顺序。本部分包括三个重要方面: 1 ) 查找u m l 类图中存在的设计模式。根据u m l 类图的特点和设计模式的 基本定义,将u m l 类图中存在的设计模式查找出来。 2 ) 计算设计模式内部的类测试顺序。对于查找到的u m l 类图中的设计模 式,使用3 2 4 节中列出并证明的设计模式类测试顺序分类计算方法得到它 们内部各个类的测试顺序。 3 ) 将u m l 类图转换为o m r d 。最后,根据3 4 节中o m r d 的生成方法,将 u m l 类图转换为o m r d ,后面进行的类测试顺序计算都将围绕0 m r d 来进行。 ( 3 ) 计算o m r d 中存在的依赖关系。 u m l 类图中类的直接依赖和传递依赖关系可以通过o m r d 中直接依赖和传递依 赖的定义直接得到。u m l 类图中类之间的间接依赖关系,代表了面向对象程序中 动态的依赖关系,该关系直接决定了最终类测试顺序的完整性。间接依赖关系并 不能直接得到,因此我们利用o m r d 中间接依赖的定义和设计模式内部测试级别 关系,通过对可能存在间接依赖关系的模块进行分析,引入回归测试的方法,得 到可能存在间接依赖关系的模块间完整测试顺序,从而为得到最终完整的类测试 顺序打下基础。 ( 4 ) 构造排序树,得到完整的类测试顺序。 根据直接依赖和传递依赖集合,构造初始排序树。但此时由初始排序树得到 的类测试顺序是不完整的,因为没有考虑到类之间的间接依赖关系。所以利用可 能存在间接依赖关系的模块间的完整测试顺序调整初始排序树,得到最终的排序 树。此时由排序树可以得到完整的类测试顺序。有关排序树的构造及调整详见 4 5 节。 4 3 可能存在间接依赖关系的模块间完整测试顺序计算准则 根据3 4 3 节中的介绍,o m r d 中存在着直接依赖、传递依赖和间接依赖这 三种关系。由于直接依赖和传递依赖是可以通过o m r d 直接计算出来的,而间接 依赖由于其继承性、多态性和隐蔽性,从o m r d 中不能直接得到,因此必须提出 一种准则能够计算出可能存在间接依赖关系的模块之间的完整测试顺序。根据 o m r d 中各模块之间依赖关系的特点,我们将0 m r d 中的关系分为如下三大类: ( 1 ) 独立类与独立类之间的依赖关系。 1 ) 独立类a 依赖于独立类b 。 上海师范大学硕士研究生学位论文基于测试顺序的类集成测试方法研究与应用 2 ) 独立类a 与独立类b 相互依赖。 ( 2 ) 模式与独立类之间的依赖关系。 1 ) 模式a 中的一个或多个类依赖于独立类b 。 2 ) 独立类a 依赖于模式b 中的一个或多个类。 3 ) 模式a 中既有类依赖于独立类b ,又有类被独立类b 依赖。 ( 3 ) 模式与模式之阀的依赖关系。 1 ) 模式a 中的一个或多个类依赖于模式b 中的一个或多个类。 2 ) 模式a 中既有类依赖于模式b 中的类,又有类被模式b 中的类依赖。 根据3 4 3 节o m r d 中间接依赖关系的定义,对上述各种模块之间关系进行分 析,可能存在间接依赖关系的模块关系如下: ( 1 ) 独立类a 依赖于模式b 中的一个或多个类。 ( 2 ) 模式a 中既有类依赖于独立类b ,又有类被独立类b 依赖。 ( 3 ) 模式a 中的一个或多个类依赖于模式b 中的一个或多个类。 ( 4 ) 模式a 中既有类依赖于模式b 中的类,又有类被模式b 中的类依赖。 为了能够得到o m r d 中类的完整测试顺序,必须分析如上可能存在间接依赖关 系的模块之间的完整测试顺序。我们根据3 2 2 节测试依赖性定理和3 2 4 节常 用设计模式内部的类测试顺序分类定义了一套o m r d 中可能存在间接依赖关系的 模块间完整测试顺序计算准则。下面,我们就以关系中的“关联”关系为例( 对 于在o u r d 中的“聚合”关系,定义的测试顺序计算准则同样适用) ,详细介绍 0 m r d 中可能存在间接依赖关系的模块间完整测试顺序计算准则。 4 3 1 独立类依赖于模式中的一个或多个类 如图4 - 2 是该情况的表示图。有两个模块m 和p ,其中m 代表了一个设计模 式类簇,它内部类的测试顺序共有n 个;p 是一个独立类。p 依赖于m 中的多个 类( m i ,町) ( 1 = i = j = n ) ,即m 与p 之间存在依赖a s :p 1 :( m i ,m j ) 。 i 竺p 警:i m 一模式 p 一独立类 图4 - 2 独立类依赖于模式中的一个或多个类 由a s :p 1 :( m i ,m j ) 可知,类p 必须在( m i ,m j ) 之后测试。又因为根 据帜d 中间接依赖的定义和测试依赖性定理四,如果m 中存在类继承于类 ( m i ,m j ) ,则p 必须在该类之后测试。为保证测试完整性,在测试完m n 之 后,再对p 进行测试。因此对于图4 2 所示情况,定义测试顺序如下: 上海师范大学硕士研究生学位论文 基于测试顺序的类集成测试方法研究与应用 4 3 2 模式中既有类依赖于独立类,又有类被独立类依赖 如图4 3 是该情况的表示图。有两个模块m 和p ,其中m 代表了一个设计模 式类簇,它内部类的测试顺序共有r 1 个;p 是一个独立类。p 直接依赖于m 中的 类( m i ,m j ) ,且m 中的类( m k ,m 田) 直接依赖于p ( 1 = i = j ( k :珊 = n ) , 即m 、p 之间存在依赖关系a s :( m k ,洳) :p i 和a s :p i :( m i ,肼j ) 。 厂坐! f 丛垒:z 丛墅! ! 里k 广 m i 坐:! ! ! ( 丛生:蛳) f 9 f l - - - - -
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国金属基复合材料航空航天领域渗透率提升研究报告
- 2026疫苗生产设备智能化升级与数字化工厂建设指南
- 2026消费电子行业技术变革与市场格局重塑报告
- 2026中国茶咖混饮口味测试与核心用户画像分析报告
- 2026中国新能源电池材料市场增长潜力与投资价值分析
- 2026酒精饮品品牌营销创新与技术工艺革新应用前景研究报告
- 2026当代茶空间设计中实木元素应用趋势与商业价值
- 2026电烤炉行业市场现状供需格局及投资战略研究报告
- 2026饮料行业KOL营销效果监测与ROI测算模型报告
- 2026电气装备电线电缆行业产品差异化与竞争策略分析报告
- 2026年传染病控制副高真题及答案
- 中国电信湖南校招笔试题
- 托育食品安全课件
- 人工智能与未来 课件 8.2 计算机视觉概述
- 2025 初中一年级语文下册《台阶》细节描写作用课件
- 彩票合伙合同协议书
- 企业管理-采购腹腔镜训练器的申请报告
- T-CICC 35007-2025 金属材料 疲劳试验小样本数据统计分析方法
- HJ 169-2018建设项目环境风险评价技术导则
- 机械表维护知识培训课件
- GJB1406A-2021产品质量保证大纲要求
评论
0/150
提交评论