已阅读5页,还剩82页未读, 继续免费阅读
(计算机应用技术专业论文)基于uml模型的依赖分析在回归测试中的研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
悖 v 、 n a n j i n gu n i v e r s i t yo f a e r o n a u t i c sa n da s t r o n a u t i c s t h eg r a d u a t es c h o o l c o l l e g eo fi n f o r m a t i o ns c i e n c ea n dt e c h n o l o g y 删 w i | h i i | l l i l l l li i | l j y 1 8 2 5 9 。坩。 r e s e a r c ha n d a p p l i c a t i o no fd e p e n d e n c e a n a l y s i sb a s e do nu m l m o d e li n r e g r e s s i o nt e s t a 砀e s i si n c o m p u t e rs c i e n c ea n dt e c h n o l o g ye n g i n e e r i n g b y c h e ns h u f e n g a d y i s e db y z h e n gh o n g y u a n s u b m i t t e di np a r t i a lf u l f i l l m e n t o ft h er e q u i r e m e n t s f o rt h ed e g r e eo f m a s t e ro f e n g i n e e r i n g m a r c h ,2 0 1 0 p , , 承诺书 本人声明所呈交的硕士学位论文是本人在导师指导下进 、 行的研究工作及取得的研究成果。除了文中特别加以标注和致 谢的地方外,论文中不包含其他人已经发表或撰写过的研究成 果,也不包含为获得南京航空航天大学或其他教育机构的学位 或证书而使用过的材料。 本人授权南京航空航天大学可以将学位论文的全部或部 分内容编入有关数据库进行检索,可以采用影印、缩印或扫描 等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本承诺书) 作者签名:盥蟑 日期:逊! 望! 主:! ! , 一 j j 勘 、 南京航空航天大学硕士学位论文 摘要 回归测试作为软件测试中的一个重要部分,旨在保证软件的改变不会引入新的错误。然而, 传统的基于源代码的回归测试,不仅难度大、成本高、效率低且容易出错。特别是对于面向对 象软件而言,由于继承、多态及各种关系的引入,使得传统的回归测试方法难以满足面向对象 软件的要求。随着u m l 技术的广泛应用,基于u m l 的软件测试越来越受到人们的关注。u m l 类图、顺序图是u m l 模型的重要组成部分,它们分别描述了软件系统的静态行为和动态行为, 是软件中依赖关系重要的信息来源。然而,如何精确的定位改变及受其影响的模块,以及如何 精确有效地选择测试用例,是回归测试面临的主要难题。 本文在总结国内外理论研究的基础上,分别从静态与动态的角度分析和研究了基于u m l 模型的依赖性分析及其在回归测试中的应用。首先,提出基于类图的静态依赖分析模型和基于 顺序图的动态依赖分析模型,分别通过构造类依赖图和基本消息流图来描述类间的依赖关系和 对象间动态的消息传递,并给出相关的构造算法。其次,讨论如何捕获类图与顺序图中的改变 信息,| 并基于依赖分析模型对这些改变进行影响分析,从而确定需要进行回归测试的模块。接 着,对测试用例选择技术进行研究,给出基于静态依赖分析模型的测试路径查找算法;又分别 从静态与动态角度对测试用例匹配情形进行全面分析,并给出匹配算法。最后,基于测试用例 的有效性要求,将测试用例分为可重用的、可重测的与过时的,并给出分类算法。 基于本文提出的方法,在m i c r o s o f tv i s u a lc 抖2 0 0 5 及m i c r o s o f ts q ls e r v e r2 0 0 5 平台上实 现了一个回归测试工具,并将其初步应用于对某三维模型监测系统的测试,测试结果验证了本 文提出的回归测试模型的正确性。 关键词:依赖性分析,影响分析,回归测试,类依赖图,基本消息流图 基于u m l 的依赖性分析在回归测试中的研究与应用 a b s t r a c t r e g r e s s i o nt e s t i n gi sa l li m p o r t a n tp a r to fs o f t w a r et e s t i n g i ta t t e m p t st or e v a l i d a t et h eo r i g i n a l f u n c t i o n a l i t yi n h e r i t e df r o mt h eo l dv e r s i o nd u et ot h en e wo rm o d i f i e df u n c t i o n a l i t y t r a d i t i o n a l s o u r c e b a s e dr e g r e s s i o nt e s t i n gi sn o to n l yd i f f i c u l t ,h i g hc o s t ,l o we f f i c i e n c yb u ta l s oe r r o r - p r o n e e s p e c i a l l y f o ro b j e c t - o r i e n t e ds o f t w a r e ,b e c a u s eo ft h ei n h e r i t a n c e ,p o l y m o r p h i s ma n dv a r i o u s r e l a t i o n s h i p sb e t w e e nc l a s s e s ,t r a d i t i o n a lm e t h o d sc a n n o td e a lw i t ho b j e c t - o r i e n t e ds o f t w a r e c l a s s d i a g r a ma n ds e q u e n c ed i a g r a mo fu m lm o d e ld e s c r i b et h es t a t i ca n dd y n a m i ca c t i o no fs o f t w a r e s y s t e mr e s p e c t i v e l y , a n dt h e ya r ea l s oi m p o r t a n ts o u r c eo fd e p e n d e n c ei n f o r m a t i o n h o w e v e f ,h o wt o d e t e c tm o d e lc h a n g e sa n dt h e i rc o n s e q u e n ti m p a c t ,a n dh o wt os e l e c tat e s tc a s em o r ea c c u r a t e l y , a r e t h em a i np r o b l e m so f r e g r e s s i o nt e s t i n g t h i sp a p e rm a k e sad e e pa n a l y s i sa n dr e s e a r c ho nd e p e n d e n c ea n a l y s i sb a s e do nu m lm o d e l s a n di t sa p p l i c a t i o ni nr e g r e s s i o nt e s t i n g f i r s t l y , c l a s sd i a g r a mb a s e ds t a t i cd e p e n d e n c ea n a l y s i sm o d e l a n ds e q u e n c ed i a g r a mb a s e dd y n a m i cd e p e n d e n c ea n a l y s i sm o d e la r ep r o p o s e dr e s p e c t i v e l y , a n dc l a s s d e p e n d e n c eg r a p ha n db a s i cm e s s a g ef l o wg r a p ha r ee m p l o y e dt od e s c r i b et h ed e p e n d e n c e r e l a t i o n s h i pb e t w e e nc l a s s e sa n dd y n a m i cm e s s a g et r a n s m i s s i o n b e t w e e no b j e c t s ,a n dt h e i r c o n s t r u c t i o na l g o r i t h m sa r ep r e s e n t e d s e c o n d l y , t h ep r o b l e mo fh o wt oc a p t u r ea l lk i n d so fc h a n g e s i nc l a s sd i a g r a ma n ds e q u e n c ed i a g r a mi sd i s c u s s e d o nt h eb a s i so fd e p e n d e n c ea n a l y s i sm o d e l , c h a n g ei m p a c ta n a l y s i sc a nb ei m p l e m e n t e d ,s ow h i c hm o d u l e sn e e dt ob er e t e s t e dc a nb ea b t a i n e d b e s i d e s ,ad e e pr e s e a r c ho nt e s tc a s es e l e c t i o nt e c h n i q u ei sm a d e t h et e s tp a t hs e a r c ha l g o r i t h m b a s e do ns t a t i cd e p e n d e n c ea n a l y s i sm o d e li si n t r o d u c e d t h e nt h i sp a p e rm a k e sf u l la n a l y s i so ft e s t c a s em a t c ha n dp r o p o s e st e s tc a s em a t c ha l g o r i t h m f i n a l l y , f o rt e s tc a s e s v a l i d i t y , t e s tc a s e sa r e c l a s s i f i e di n t ot h eo b s o l e t e ,t h er e t e s t a b l ea n dt h er e u s a b l e b a s e do nm sv i s u a lc + + 2 0 0 5a n dm i c r o s o f ts q ls e r v e r2 0 0 5p l a t f o r m ,at o o lw h i c ha p p l i e s t h em e n t i o n e dm e t h o di sd e v e l o p e d ,a n di ti su s e do nt h et h r e e - d e m e n s i n a lm o d e lm o n i t o r i n gs y s t e m s r e g r e s s t i o nt e s t i n g t h et e s t i n gr e s u l t sp r o v et h a tt h er e g r e s s i o nt e s t i n gm e t h o ds t u d i e di nt h i sp a p e ri s c o r r e c t ,h i i g he f f e c t i v e k e yw o r d s :d e p e n d e n c ea n a l y s i s ,i m p a c ta n a l y s i s ,r e g r e s s i o nt e s t i n g ,c l a s sd e p e n d e n c eg r a p h ,b a s i c m e s s a g ef l o wg r a p h 7 0 , 南京航空航天大学硕士学位论文 目录 第一章绪论。l 1 1 课题研究背景l 1 2u m l 模型与软件测试2 1 2 1 常用u m l 图对测试的影响2 1 2 2u m l 模型在软件测试中的优势2 1 3 回归测试3 l - 3 1 回归测试的概念3 1 3 2 回归测试的分类4 1 3 3 回归测试的研究现状和主要问题。5 1 4 依赖性分析6 :1 4 1 依赖性分析的基本概念。6 1 4 2 依赖性分析在软件测试中的应用7 1 4 3 依赖性分析的研究现状和主要问题7 1 5 本文的研究内容和组织结构8 1 5 1 本文的研究内容8 1 5 2 本文的组织结构9 第二章基于u m l 的回归测试总体框架设计1 0 2 1 系统需求分析1 0 2 2 系统框架设计1 1 2 3 关键技术。1 3 2 3 i 基于u m l 的依赖性分析1 3 2 3 2 测试用例的选择1 3 2 3 3 测试用例维护1 4 2 4 系统流程设计1 5 2 5 系统特点。1 6 2 6 本章小结1 7 第三章基于u m l 模型的依赖性分析。18 3 1u m l 类图中的依赖关系1 8 3 1 1 关联、聚合及组合中的依赖1 9 i i l 基于u m l 的依赖性分析在回归测试中的研究与应用 3 1 2 继承体系中的依赖2 0 3 1 3 一般依赖2 1 3 2 构建类依赖关系图2 1 3 2 1 类依赖关系图的定义2 l 3 2 2 从u m l 类图到c d g 2 2 3 3u m l 顺序图中的依赖关系2 5 3 4 构建基本消息流图2 7 3 4 1 基本消息流图的定义2 7 3 4 2b m f g 构建算法2 8 3 5 本章小结3 0 第四章基于依赖分析的回归测试及算法设计3 l 4 1 软件改变的影响分析:3l 4 1 1 两个版本的u m l 类图之问改变的影响分析3 1 4 1 2 两个版本的u m l 顺序图之间改变的影响分析3 4 : : 4 2 测试用例选择3 6 4 2 1 建立测试用例与u m l 模型之间的关联3 6 4 2 2 基于类图的测试用例选择3 7 4 2 - 3 基于顺序图的测试用例选择4 l 4 3 测试用例维护4 3 4 3 1 测试用例的分类4 3 4 3 2 基于类图的测试用例分类算法4 4 4 3 3 基于顺序图的测试用例分类算法4 5 4 4 本章小结4 7 第五章系统实现及应用4 8 5 1 项目背景4 8 5 2 系统开发环境4 9 5 2 1m f c 简介4 9 5 2 2a d o 数据库访问技术:5 0 5 3 系统实现51 5 3 1 系统整体结构设计5 l 5 3 2 依赖性分析实现5 2 5 3 3 测试用例选择与管理5 6 i v j 了 南京航空航天大学硕士学位论文 5 3 4a p a c h ex e r c e s c + + x m l 解析5 7 5 4 系统应用5 9 5 5 本章小结6 3 第六章总结与展望6 5 6 1 总结。6 5 6 2 展望6 6 参考文献6 7 致谢7 2 在校期间的研究成果及发表的学术论文7 3 v 基于u m l 的依赖性分析在回归测试中的研究与应用 图表清单 图1 1 回归测试的生命周期示意图4 图2 1 回归测试系统的用例图1 0 图2 2 基于依赖分析的回归测试总体框架1 2 图2 3 回归测试流程1 5 图3 1 三维模型监测系统一建立隧道模块类图1 9 图3 2 一般继承2 0 图3 3 接口实现2 1 图3 4 各种依赖关系在c d g 中的表示方式2 2 图3 5 三维模型监测系统部分模块类图对应的c d g 2 4 图3 6c d g 生成算法示意图2 5 图3 7 同一个用例对应不同的场景2 6 图3 8 三维模型监测系统建立隧道的顺序图2 7 图3 9 基本消息流图的生成流程2 9 图3 1 0 建立隧道模型的b m f g j 3 0 图4 1 类a 的两个版本3 2 图4 2 删除c d g 中的一条边( 依赖关系) 产生的影响3 3 图4 3u m l 类图中,类改变时影响的传递方向3 4 图4 4 两个版本顺序图的改变3 5 图4 5 静态测试用例选择流程3 7 图4 6 测试路径查找算法示意图3 8 图4 7 测试用例与测试路径匹配的四种情形3 9 图4 。8 动态测试用例的选择流程。4 l 图4 9 删除角色( 对象) 对测试用例选择的影响4 2 图4 1 0 删除消息对测试用例选择的影响4 3 图4 1 l 静态测试用例的分类流程4 5 图4 1 2 动态测试用例的分类算法流程4 6 图5 1 三维隧道监测系统一建立隧道示意图4 8 图5 2a d o 同o l ed b 、数据库应用以及数据源之间的关系5 0 图5 3 回归测试系统总体结构5 l 图5 4 静态模块设计的类图5 3 图5 5 动态模块的类图。5 6 图5 6 测试用例模块的类图5 7 图5 7 三维模型监测系统一建立隧道模块修改前类图6 0 图5 8 三维模型监测系统一建立隧道模块修改后类图。6 0 图5 9a r t u m l 对类图分析的结果。6 1 图5 1 0a r t u m l 静态回归测试用例选择6 2 图5 1 la r t u m l 测试用例管理界面6 3 v i 南京航空航天大学硕士学位论文 表1 1 渐增性回归与改错性回归的区别4 v i i , 矗 南京航空航天大学硕士学位论文 第一章绪论 随着计算机应用领域的迅速扩展,软件在人们的日常生活中已无处不在,软件产品的质量 也日益凸现出其重要性。软件的失效有可能造成巨大的经济损失,甚至危及人的生命安全。由 于软件错误导致系统失效,酿成重大损失的事例不胜枚举【l 】。人们逐渐认识到如何保证软件产 品的质量和可靠性成为必须解决的一个重要问题。作为软件测试中一个重要环节的回归测试, 其在软件测试中所占的比重也随之增加,特别是在迭代开发过程中,新版本的连续发布使回归 测试进行的更加频繁,而在极限编程方法中,更是要求每天都进行若干次回归测试。所以,针 对如何减少回归测试成本、提高回归测试效率的研究具有十分重要的意义。同时,在软件测试 的各个环节中,测试用例的选择与维护是软件测试活动中重要的工作之一。 1 1 课题研究背景 回归测试是软件测试中一个很重要的环节。其目的是保证对软件的改变,如新功能的添加 或对现有功能的修正,不会引入新的错误【4 】【5 1 。而随着软件规模的日益扩大,回归测试的成本 也相应增大,甚至达到了整个测试成本的一半以上。所以,回归测试已经成为整个软件测试的 关键,是软件质量的重要保证。 面向对象技术的应用,给软件测试提出了新挑战。在面向对象软件中,各个模块( 类) 之 间存在复杂的依赖关系,一旦一个模块( 类) 发生了改变,就会影响依赖于它的模块( 类) ,从 而加大了回归测试的难度。为准确捕获被测试软件各模块之间复杂的依赖关系、提高对被测软 件信息的理解、测试的完全性和效率,软件测试人员需要合适的描述大型复杂系统特征的模型 和工具。 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 m l 通过图形的方式描述软件模型,从不同的角度表达模型 的结构( 静态特征) 和行为( 动态特征) 。u m l 为工业界提供了一种沟通设计与分析信息的公 共平台,其作用域不只限于支持面向对象的分析与设计,还适用于系统开发过程中不同阶段测 试的需要。因为u m l 模型能够反映被测试软件系统真实的信息,从而使测试人员充分地理解 被测的软件系统,有利于提高获得测试用例的效率和覆盖率,同时提高软件产品质量和降低软 件产品开发的时间和成本。 针对面向对象软件,本文分别从软件的静态模型( u m l 类图) 与动态模型( u m l 顺序图) 出发,分析软件各模块之间的依赖关系及其在回归测试中的应用。 基于u m l 的依赖性分析在回归测试中的研究与应用 1 2i m ,模型与软件测试 针对面向对象的特点及u m l 的应用,越来越多的学者开始将u m l 应用于面向对象软件的 测试中。如o n e s i 在文献【2 3 中基于u m l 状态图提出了生成测试用例的算法及实现:yc h e n 在 【2 5 】中基于活动图的依赖性分析提出了测试用例生成方法,【2 6 】在中将控制流图( c f g ) 应用到活 动图,提出了一种基于风险分析的测试用例选择策略;b r i a n d 在 2 0 1 1 2 1 1 1 2 2 1 中提出了基于类图、 顺序图与用例图的测试用例选择方法;o f f u t t 和a b d u i a z i k 在文献【5 8 】第一次提出了基于状态规 格的从u m l 状态图生成测试用例的机制;eb o u q u e t 等在文献 3 5 1 中介绍了基本的基于u m l 模型的的覆盖度而生成测试用例的方法;a l i r e z a 等在文献【6 5 】中,对基于u m l 模型的回归测 试的研究热点进行了调查分析,讨论了基于不同u m l 图的回归测试方法。有关基于u m l 的软 件测试研究还有很多。下面,本文从u m l 模型对软件测试的影响及其在测试中的优势两个方 面进行讨论。 1 2 1 常用u m l 图对测试的影响 u m l 是一种图形化的设计语言,它使用不同类型的图从不同的角度和抽象层次来描述系统 模型。在使用u m l 进行软件设计建模时,设计者必须根据要描述的对象和系统动作选择适当 的u m l 图,以达到设计效果。同样在软件测试过程中,在不同的测试阶段,根据不同的测试 目的,必须选择不同的u m l 图。以下分析了几种常用的u m l 图形的特点及其对软件测试的影 响: ( 1 ) 类图:类图表述系统中各个对象的类型以及其间存在的各种静态关系【2 】1 3 】1 4 9 1 。它是面向对 象建模最为常见的图形,描述了系统的静态设计视图。类图可以详尽、全面地描述面向 对象系统中的类及类之间的关系,能够帮助测试者全面掌握系统中的类结构,因此,可 以很好地辅助类测试及其它测试。 ( 2 ) 顺序图:顺序图是一种强调消息的时间顺序的交互图【2 】【3 1 1 4 9 1 ,反映了系统的动态特征。从 测试的角度来看,顺序图中可能存在一些错误,其中包括约定的冲突、不能创建正确的 对象、图中没有关系的发送者和接收者之间的消息传递等。 ( 3 ) 用例图:用例图展现了一组用例、参与者,以及它们之间的关系陬3 1 1 4 9 。它给出了系统静 态用例视图。用例图往往是在一个较高的抽象层次描述系统的行为和各个组件之间的关 系,所以能够帮助测试者全面地把握系统的运行情况及各个功能之间的关系,是集成测 试和系统测试的重要参考工具。 1 2 2u m l 模型在软件测试中的优势 u m l 不仅是软件开发的重要工具,同时也是指导测试的重要模型。使用u m l 模型在软件 2 南京航空航天大学硕士学位论文 测试中具有如下优势: 1 ) 通用性:u m l 作为标准建模语言,具有广泛的适用性,目前己被软件开发界广泛采用, 支持从软件需求分析到设计实现部署的各阶段。并有大量商业工具支持。 2 ) 形式化:u m l 模型具有严格的定义,提供了获得对象结构和行为的表示方法。这种形 式化特性使得测试信息的提取和自动化变得容易。 3 ) 强大的描述能力:u m l 模型集众家之长,具有强大的描述能力。u m l 包括一系列视图 和模型,他们从不同的层次和角度描述了软件系统的结构、行为以及软件的使用。 4 ) 强大的管理能力:u m l 模型通过提供不同层次的视图和包机制等,具备了强大的管理 能力,解决了模型维护和管理的问题。同时通过分层等方法在一定程度上解决了状态空间爆炸 的问题。 5 ) 可重用性:u m l 模型支持在软件开发的各阶段、从不同的抽象层次对系统各方面的相 关信息进行建模。这些模型不仅可以用于软件开发阶段,还可以用于指导测试,因此避免了专 门为测试构造模型,实现了软件分析和设计阶段制品的重用,同时也将测试活动与开发过程集 成起来。 6 ) 可迭代性:可以尽早开始测试活动( 包括测试计划的制定、测试大纲与测试用例的设计 等) ,并随着设计活动的细化不断细化生成的测试制品。这样,软件开发与测试开发可以并行进 行,并在整个测试过程中进行持续测试活动。众所周知,越早开始测试越好。 特别地,为了使u m l 模型在软件测试中得到更好的应用,针对u m l 模型本身的测试也渐 渐得到人们的注意。如p i l s k a l n x 在文献【3 6 】【3 7 】【3 8 】中研究了针对u m l 模型本身进行的测试, 同样a t i f a h 等在 4 7 d o 也讨论了u m l 模型本身的回归测试。b a u d r y 在【4 0 】中分析了类图的可测 试性,等等。 1 - 3 回归测试 1 3 1 回归测试的概念 在软件生命周期中的任何一个阶段,只要软件发生了改变,就可能给该软件带来问题。软 件的改变可能是源于发现了错误并做了修改,也有可能是因为在集成或维护阶段加入了新的模 块。当软件中所含错误被发现时,如果错误跟踪与管理系统不够完善,就可能会遗漏对这些错 误的修改;而开发者对错误理解的不够透彻,也可能导致所做的修改只修正了错误的外在表现, 而没有修复错误本身,从而造成修改失败;修改还有可能产生副作用从而导致软件未被修改的 部分产生新的问题,使本来工作正常的功能产生错误。同样,在有新代码加入软件的时候,除 了新加入的代码中有可能含有错误外,新代码还有可能对原有的代码带来影响。因此,每当软 件发生变化时,我们就必须重新测试现有的功能,以便确定修改是否达到了预期的目的,检查 3 基于u m l 的依赖性分析在回归测试中的研究与应用 修改是否损害了原有的正常功能。同时,还需要补充新的测试用例来测试新的或被修改了的功 能。为了验证修改的正确性及其影响就需要进行回归测试。回归测试贯穿于整个软件开发过程 中,下图1 1 描述了回归测试在整个软件开发过程中的生命线。 初始版本新版本下一个新版本 开发缺陷修复、更新缺陷修复、更新 图1 1 回归测试的生命周期示意图 1 3 2 回归测试的分类 l e u n g 和w h i t e 根据程序的规格说明是否发生修改,而将回归测试分为渐进性( p r o g r e s s i v e ) 回归测试和纠正性( c o r r e c t i v e ) 回归测试【6 1 ,这两种类型的回归测试比较如下表所示: 表1 1 渐增性回归与改错性回归的区别 渐进性回归测试纠正性回归测试 今规格说明发生改变夺规格说明没有改变 夺 涉及主要的代码修改:添加或删除模块 令 涉及次要的代码修改:添加或删除语句 通常发生在适应性与完善性维护中夺通常发生在开发中和纠正性维护中 大部分测试用例不可重用,需要添加新的夺大部分的测试用例可以重用,不需要添 测试用例加新的测试用例 定时进行夺不定时地进行 g o o d e n o u g h 和g e r h a r t 1 0 】根据对回归测试用例集的选择方式,将回归测试分成全部回归和 选择性回j 臼【1 0 1 。全部回归假设程序的一处改变可能会影响到程序的任何其它部分,致使代码的 任何地方都可能会有错误引入,因此需要对现有系统进行全面的重新测试。这种方法适用于系 ,统规模较小或改动较大的情形【1 2 】,但是对于测试数据较大,系统改动较小的情况,测试所有的 用例会带来时间和人力的浪费,有时是不可能做到的。相反,选择性回归假设并不是所有的部 分受到修改的影响【2 引。采用选择性的方法,会大大减少时间和人力的开销,同时又能保证系统 的质量。 选择性回归测试的方法有很多种,r o t h e r m e l 与h a r r o l d l l l l 、e l b a u m t l 5 】分别总结了1 1 种有 代表性的方法,包括线性方程技术、符号执行技术、路径分析技术、基于程序流图的技术等。 大多数技术都采用对程序结构进行再分析,找出改动了的程序部分与原有部分的关系,选取相 4 南京航空航天大学硕士学位论文 关性最大的部分设计测试用例。这样又会有一个新的问题,就是对程序进行分析的花费与运行 程序相比,哪一种代价更小。据此,他们提出了一种搜索算法用于寻找源程序和改变了的程序 之间的变化之处。利用程序得到源程序和变化后的程序的控制流图( c f g ) 【们,以深度优先进行分 别搜索,得到变化( 增加的或改变的) 顶点,选取原测试包中所有达到该顶点的测试用例进行 重新再测试。 对于面向对象软件而言,由于其本身的特点( 抽象、继承、封装、多态等等) ,使得传统的 针对结构化程序的回归测试方法已不能满足面向对象软件。因此,回归测试也可分为结构化软 件的回归测试与面向对象软件的回归测试。文献【5 ,6 ,9 1 2 ,l s 是针对结构化程序的,文献 【7 - - - 9 ,1 3 ,1 4 ,2 0 - - - 2 6 ,2 8 ,3 0 ,3 3 ,3 4 ,4 3 ,4 6 ,4 7 ,5 2 ,5 6 - 5 8 ,6 3 ,6 5 都分别研究了面向对象软件的回归测试。 1 3 3 回归测试的研究现状和主要问题 回归测试作为软件测试的一个重要方面,吸引了很多学者对其进行研究。特别是随着面向 对象技术的广泛应用,人们开始将回归测试的研究转向面向对象软件。但由于面向对象软件的 独有特性,如抽象、继承、封装、多态等等,使得面向对象软件各模块之间的关系变得复杂, 同时对软件测试的策略和战术在很大程度上不同于传统的软件测试,测试的焦点也从过程移向 了类、类族,传统的软件测试技术不能直接应用于面向对象的软件测试。因此,对于面向对象 软件的测试,其测试策略或方法都需要相应的变革或更新。我们必须结合面向对象技术的特点, 研究新的面向对象软件的测试理论、方法来与之适应。 回归测试中有四个基本问题:1 ) 如何鉴别修改的影响部分,即进行改变的影响分析;2 ) 采取什么策略来重测改变的部分;3 ) 重测部分的覆盖准则是什么? 4 ) 如何选择和修改现有的 测试用例和生成新的测试用例。回归测试的研究范围很广,如测试用例选择技术、测试的覆盖 率、测试用例的优化与测试用例的维护。 作为回归测试研究的重点,回归测试用例选择技术通过从现有的测试用例包中选择测试用 例来测试修改的程序减少了回归测试的代价i l3 1 。目前,有许多学者在这方面做出了研究。 r o t h e r m e l 和h a r r o l d 在文献【1 l 】【1 2 】【1 3 】中也讨论了测试用例选择的问题。其中,文献【1 2 】研究 了基于控制流图( c f g ) 的安全高效的测试用例选择方法,并给出测试c f g 的构造算法,但该 方法是针对结构化程序的;文献【1 3 】将控制流图方法应用到面向对象软件,提出了针对c + + 软 件的测试用例选择。g r a v e s 和h a r r o l d 等在【1 7 】中讨论了回归测试用例的优化。为了方便测试用 例的选择,l e u n g 和w h i t e 在文献【6 】提出将原始的测试用例分为可重用的、可重测的、过时的、 新增加与程序结构相关的、新增与规格说明相关的测试用例;在文献【5 7 】【5 7 】首次提出了类防火 墙( c l a s sf i r e w a l l ) 方法,并将之应用到回归测试及测试用例选择。y k j a n g 6 3 1 等基于l e u n g 和w h i t e 提出的类防火墙( c l a s sf i r e w a l l ) 方法,分析了类内部成员之间的依赖关系,研究了 5 基于u m l 的依赖性分析在回归测试中的研究与应用 如何找出类成员级改变的影响,从而确定哪个类方法需要单元级的回归测试,哪个方法需要集 成级的回归测试。t r a o n 等在文献【2 8 】中提出了测试依赖图( t e s td e p e n d e n c yg r a p h ) 模型,应 用此模型可以产生回归测试的类序列及用于集成测试的类方法序列。y w u 【3 0 】等利用程序的静 态信息与动态动态进行测试用例选择,其中静态信息是通过分析程序结构获得,动态信息通过 跟踪方法调用图( f u n c t i o nc a l l i n gg r a p h ) 获得。然而,以上都是基于源代码的,基于u m l 模 型的测试用例选择比较少。b r i a n d 在文献 2 0 a e ,通过对u m l 类图、顺序图和用例图进行改变 的影响分析,研究了面向对象软件的回归测试用例选择,并基于l e u n g 和w h i t e t 6 提出的测试 用例分类,将测试用例精减为可重用的、可重测的与过时的三类。g a r o u s i 在【5 2 】研究了顺序图 中的消息流,提出了并行消息流分析( c c f a ) 及并行消息流图( c c f g ) ,介绍了如何用活动 图表示并行消息流。a t i f a h 等在中对g a r o u s i 5 2 1 提出的并行消息流图进行扩展,提出扩展的并 行消息流图( e c c f g ) ,利用e c c f g 可以辅助测试用例的选择、分类。而本文则是对顺序图中 的基本消息流进行分析,提出基本消息流图b c f g ( 见3 4 节) ,虽然并不能像c c f g 和e c c f g 那样有较高的精度,但仍能描述一般的消息流,本文称这种消息流中消息的逻辑顺序为动态依 赖。 : : 1 4 依赖性分析 1 4 1 依赖性分析的基本概念 依赖性分析反映了程序中语句、模块之间的执行顺序和相互调用关系,是一种重要的程序 分析和理解方法,广泛应用于程序分析、优化、调试、测试、度量、程序变换、模型检查、软 件安全、软件维护和软件再工程的各个方面。 一般而言,人们采用两种方法进行依赖性分析。一种是沿着程序执行流则前至后的正向分 析方法,一种是则程序中某个特定点开始逆着执行流由后向前的逆向分析方法。通常,前者用 于分析整个程序的依赖关系,而后者用来计算程序中某一特定点对其余部分的依赖关系。虽然 程序能表示计算机的执行序列,但却难以向软件开发人员提供系统的体系结构,如数据、模块 之间的依赖关系。另一方面,在软件维护时,经常需要对某程序块进行修改,如何确定修改对 模块的其余部分和其他模块造成的影响,也是维护人员所必须解决的问题。通过程序依赖性分 。 析,可以获得解决以上问题所必需的信息。 然而,大多的依赖性分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业开除员工合同范本
- 社区干部劳务合同范本
- 礼品红酒采购合同范本
- 关于教师节主题班会教案
- 衣柜木板买卖合同范本
- 人民邮电版·2016教学设计-2025-2026学年中职中职专业课计算机-辅助设计类71 电子与信息大类
- 本单元复习与测试教学设计-2023-2024学年小学信息技术(信息科技)五年级下册青岛版(六三制)
- 加强用户教育与引导体系建设
- 酒店制作窗帘合同范本
- 酒店出资装修合同范本
- 丙型肝炎防治指南
- 2025年基层党支部书记述职报告
- 中国稀土镁合金治炼项目投资可行性研究报告
- GB/T 30340-2025机动车驾驶员培训机构业务条件
- 传统文化经典教案范例分享
- 2025艺术品买卖合同范本
- 新保密教育线上培训考试试题及答案
- 2025年幼师考编真题及答案
- 科技企业员工绩效考核管理办法
- 2025年潜水泵行业分析报告及未来发展趋势预测
- 2025低空经济无人机网络安全事件案例分析报告
评论
0/150
提交评论