




已阅读5页,还剩71页未读, 继续免费阅读
(计算机软件与理论专业论文)基于形式规格说明的面向方面测试的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基丁形式规格说明的面向方面测试的研究 摘要 论文题目: 专业: 硕士生: 指导教师: 基于形式规格说明的面向方面测试的研究 计算机软件与理论 牛言涛 周晓聪副教授 摘要 面向方面编程a o p 是一种全新的软件开发技术,它解决了在面向对象编 程中有横切关注点所引起的代码分散和代码纠缠问题。由于a o p 引入了新的语 言机制:连接点、切入点和通知等,这影响了程序的状态和行为,导致方面和 类之间的交互复杂化。因此,开发适合面向方面的新的软件测试技术是a o p 的 一项迫切而艰巨的任务。 在本文中,我们提出一种基于a - f r e e 模型的面向方面测试技术。a - f r e e 是对f r e e 状态模型的扩展,通过基于现有的面向方面建模技术,添加横切关 注点、横切特性、横切接口、横切元素等a o p 特性而得到。我们通过分析方面 对类的影响,提出一种编织机制,进而得到编织状态模型w s m 。 方面转换树a t t 基于a - f r e e 模型并通过转换规则得到。本文中,我们 扩展了以往显式路径转换树的方法,提出多条件覆盖a - t t 规则和n + 测试a - t t 规则,分别用来识别潜行路径和状态控制错误。其中,我们详细分析了状态控 制错误如何导致基于a f r e e 模型测试的失败,并研究了基于a - f r e e 模型的 测试如何能够检测方面错误。另外,由于测试用例是软件测试的核心和关键, 我们研究了测试用例的重用规则,并以改进的迭代松弛法自动产生测试数据。 最后,我们提出基于a f r e e 模型测试框架a f m a t ,基于框架我们从三 个方面扩展已有的基于模型的方面类检测和测试工具m a c t ,并以扩展的 m a c t 来实验、评估基于a - f r e e 模型的面向方面测试技术。 关键词:a - f r e e 状态模型、n + 测试策略、形式规格说明、面向方面测试 基于形式规格说明的面向方面测试的研究 a b s t r a c t t i t l e : m a j o r : n a m e : s u p e r v i s o r : r e s e a r c ho f a s p e c t - o r i e n t e dt e s t i n gb a s e do nf o r m a ls p e c i f i c a t i o n c o m p u t e rs o f t w a r ea n dt h e o r y y a n - t a on i u a s s o c i a t ep r o f x i a o c o n gz h o u a b s t r a c t a s p e c t - o r i e n t e dp r o g r a m s ( a o p ) i s an e w t e c h n i q u eo fs o f t w a r ed e v e l o p m e n t , w h i c hc a nu s e dt os o l v ec o d es c a t t e ra n dc o d et a n g l i n gp r o b l e m sc a u s e db y c r o s s c u t t i n gc o n c e r n st h a t w i l lo c c u ri no b j e c t - o r i e n t e dp r o g r a m s a o pi n t r o d u c e s o m en e wl a n g u a g em e c h a n i s m s :j o i np o i n t ,p o i n t c u t ,a d v i c ea n ds oo n , w h i c hn o t o n l yc h a n g et h es o f t w a r ed e v e l o p m e n tp r o c e s s ,b u ta l s os e r i o u s l ya f f e c tt h ep r o g r a m s t a t ea n db e h a v i o r , s ot h a tt h ei n t e r a c t i o nb e t w e e na s p e c t sa n dc l a s s e si sm o r e c o m p l i c a t e d t h e r e f o r e ,t h er e s e a r c ho f a o pt e s t i n gi sa nu r g e n ta n da r d u o u st a s k i nt h i sp a p e r , w ep r o p o s ea na - f r e em o d e l - b a s e da s p e c t o r i e n t e dt e s t i n g a - f r e ei sa ne x p a n s i o no ff r e e ( f l a t t e n e dr e g u l a re x p r e s s i o n s ) s t a t em o d e l , w h i c hi sc o n s t r u c t e db yu s i n ge x i s t i n ga s p e c t - o r i e n t e dm o d e l i n gt e c h n i q u e ,a n d c o m p o s i n ga o pf e a t u r e ss u c ha sc r o s s c u t t i n gc o n c e r n s ,c r o s s c u t t i n gf e a t u r e s , c r o s s c u t t i n gi n t e r f a c ea n dc r o s s c u t t i n ge l e m e n t s t h r o u g ha n a l y z i n gt h ei m p a c to f a s p e c t so nc l a s s e s ,w ei n t r o d u c eaw e a v i n gm e c h a n i s m ,w h i c hc o n s t r u c t saw o v e n s t a t em o d e l ( w s m ) a s p e c t o r i e n t e dt r a n s i t i o nt r e e ( a - t t ) i sb a s e do na - f r e em o d e l a n d c o n s t r u c t e db yt r a n s i t i o nr u l e s i nt h i sp a p e r , t h r o u g he x t e n d i n gt h ee x p l i c i tp a t h t r a n s i t i o nt r e e ( t 1 ) ,w ep r o p o s et h em u k c o n d i t i o n a lc o v e r a g ea - t tr u l e su s e dt o i d e n t i f yt h es n e a kp a t h sa n dt h en + t e s ts t r a t e g ya - t tr u l e su s e dt oi d e n t i f yt h es t a t e c o n t r o lf a u l t s w ea n a l y z eh o ws t a t ec o n t r o lf a u l t sc a nl e dt ot h ef a i l u r eo fa - f r e e m o d e l - b a s e dt e s t i n g ,a n ds t u d yh o wa f r e em o d e l - b a s e dt e s t i n gc a nd e t e c ta s p e c t f a u l t s i na d d i t i o n , b e c a u s et e s tc a s eg e n e r a t i o ni st h ek e ya n dc o r eo fs o f t w a r e t e s t i n g ,w es t u d yt h er e u s er u l e so ft e s tc a s e ,a n di m p r o v et h ei t e r a t i v er e l a x a t i o n m e t h o dt oa u t o m a t i c a l l yg e n e r a t et e s td a t e f i n a l l y , w ep r o p o s eaf r a m e w o r ko fa f m a t ( a - - f r e em o d e l - - b a s e da s p e c t 慕丁形式规格说明的面向方面测试的研究a b s t r a c t t e s t i n g ) b a s e do nt h ef i a m e w o r kw ee x t e n dt h et o o lo fm a c t ( m o d e l b a s e d a s p e c t c l a s sc h e c k i n ga n dt e s t i n g ) f o r mt h r e ea r e a s ,a n dw ee x p e r i m e n ta n d e v a l u a t et h ea - f r e em o d e l b a s e da s p e c t - o r i e n t e dt e s t i n gt e c h n o l o g y k e y w o r d s :a f r e es t a t em o d e l ,n + t e s ts t r a t e g y , a s p e c t o r i e n t e dt e s t i n g ,f o r m a l s p e c i f i c a t i o n i l l 论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独 立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论 文不包含任何其他个人或集体已经发表或撰写过的作品成果。对本文 的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。本 人完全意识到本声明的法律结果由本人承担。 学位论文作者签名:孕三童牡 日瓤且乒皿 学位论文使用授权声明 本人完全了解中山大学有关保留、使用学位论文的规定,即:学 校有权保留学位论文并向国家主管部门或其指定机构送交论文的电 子版和纸质版,有权将学位论文用于非赢利目的的少量复制并允许论 文进入学校图书馆、院系资料室被查阅,有权将学位论文的内容编入 有关数据库进行检索,可以采用复印、缩印或其他方法保存学位论文。 导师签名: 醐:冲 垮 善9 平神 名月签, 耆 1 1 每 千tr 文彳捌彳 位期 学日 基于形式规格说明的面向方面测试的研究绪论 1 1 软件测试 1 1 1 软件测试概述 第1 章绪论 软件测试作为保证软件质量的重要手段从2 0 世纪7 0 年代以来逐渐受到人们 的重视。软件测试的定义是在1 9 8 3 年由i e e e 在软件工程标准术语【l 】中给出的: 使用人工或自动手段来运行或评价某个系统或系统部件的过程,其目的在于检验 它是否满足规定的需求;或是弄清预期结果和实际结果之间的差别。该定义非常 明确地指出了软件测试是以检验是否满足需求为目标。gj m y e r s 2 认为软件测 试是为了找出错误和缺陷而进行的,而不是为了证明软件的正确性。他给出了软 件测试的目的:软件测试是为了发现错误而执行程序的过程;一个好的测试用例 能够发现至今尚未发现的错误;一个成功的测试是发现了至今尚未发现的错误的 测试。 目前,国外一般中、大型公司均设有专门的测试部门和专职测试人员,并且 在测试过程中还综合采用了网络和集成信息管理技术。例如,利用局域网或广域 网进行跨公司、跨地区甚至跨国的测试项目的组织和调试。又如,利用大型系统 进行测试结果的保存、分析和报表生成,其测试方法和测试组织实施过程已经完 全实用化。同样,国内的企业也在逐渐增加软件测试的人力和财力,逐步增加软 件测试的实用力度。同时,也出现了很多有关软件测试的方法和实践的文章。从 这些文章中我们可以总结出软件测试的主要目的如下: 1 ) 核实软件的所有需求是否都已正确实施; 2 ) 核实软件的所有构件是否都正确集成; 3 ) 核实每个对象内部的交互是否正确; 4 ) 确定缺陷并保证在部署软件之前将缺陷解决。 为了实现软件测试的上述目的,传统的软件测试过程遵循图1 1 所示的v 字 型的测试流程。该流程将软件测试过程中的阶段和软件开发过程的阶段对应起 来,规定只有当前一个测试阶段结束后才可以进入下一个测试阶段。 基于形式规格说明的面向方面测试的研究绪论 图1 1 软件测试过程的v 模型 单元测试主要测试程序中最小的独立单元,如面向对象程序中的类。集成测 试主要是测试单元之间的接口以保证程序单元能够正确交互。系统测试主要是测 试整个系统能否正确运行,以保证系统符合其设计模型。验收测试主要是验证系 统的功能是否符合用户需要,即是否满足软件需求规格说明。 我们的测试工作必须尽可能保证每一层的测试用例都是充分的,也就是用一 系列行之有效的测试充分性准则来指导测试用例的生成。高质量的测试活动还必 须是可追踪、可重复和可度量的。针对这一要求,r a t i o n a l 公司等推出了一系列 用于自动化测试管理过程的工具 3 】,为测试质量的提高奠定了坚实的基础。 1 1 2 软件测试技术 现有的软件测试技术通常分为静态测试和动态测试两大类【2 】,静态测试是不 执行程序代码而寻找程序代码中可能存在的缺陷或评估程序代码的过程。静态测 试包括主要由人工进行的代码审查、代码走查、桌面检查以及主要由软件工具自 动进行的静态分析。由于本文主要研究动态测试技术,静态测试技术在本文中不 再赘述。 动态测试通过以测试数据( t e s td a t a ) 作为输入来执行被测试程序,判断被 测程序的动态行为和运行结果以发现缺陷。软件动态测试的一般过程如图1 2 所 示,测试有两类输入:软件配置和测试配置。软件配置包括软件需求规约、设计 规约、源代码等;测试配置包括测试计划、测试用例( t e s tc a s e ) 、测试工具等。 其中,测试用例的生成、运行程序( 测试) 和验证程序的运行结果( 评估) 是软 件测试的主要工作。 2 基于形式规格说明的面向方面测试的研究绪论 软件配置 测试配置 测试结 期望结果 图1 2 软件测试过程 测试用例的自动生成策略是动态测试的难点所在,是自动化测试的关键。测 试用例包括输入数据和期望结果,由于存在大量诸如图形图像软件的输出等难以 构造的期望结果,所以在许多研究和应用中都侧重于或仅生成输入数据( 测试数 据) 。 从生成测试用例的数据来源划分 4 ,动态测试可分为基于规约的测试( 又 称黑盒测试或功能测试) 、基于程序的测试( 又称白盒测试或结构测试) 。基于 规约的测试是指测试人员无须了解程序的内部结构,直接根据程序输入和输出之 间的关系或程序的需求规约来确定测试用例进行测试。基于规约的测试包括:等 价类划分、因果图、判定表、边值分析、正交实验设计、状态测试、事务流测试 等。基于程序的测试是指测试人员根据程序的内部结构特征和与程序路径相关的 数据特性设计测试数据。它包括控制流测试和数据流测试两类主要技术,以及域 测试、符号执行、程序插装和变异测试等其他技术。 1 1 3 测试充分性准则 j b g o o d e n o u g h 和s l g e r h a r t 5 在1 9 7 5 年率先提出了软件测试的理论, 指出软件测试并不能保证程序中没有错误,而只是通过找出程序中的错误来增加 对软件质量的信心。基于这种观点,他们认为软件测试的关键是找出可以判定测 试用例集合是否充分的准则。所谓测试充分性准则( 又称测试覆盖准则或测试准 则,t e s ta d e q u a c yc r i t e r i a ) 【6 】是指导测试人员来发现高效的,增强软件正确性 和可靠性的测试用例的规则,它同时也是测试用例产生过程中的停机规则。 h o n gz h u 7 完整地总结了有关单元测试的充分性准则。他将单元测试分为 结构化测试、基于缺陷的测试和基于错误的测试三类。结构化测试中的测试准则 包括基于规格说明的准则和基于程序代码的准则两大类。其中,基于程序代码的 3 基于形式规格说明的面向方面测试的研究绪论 准则包括控制流测试准则中的语句覆盖、分支覆盖、路径覆盖、多条件覆盖等覆 盖准则和数据流测试准则中的所有定义准则、所有使用准则、所有定义使用对 准则等。基于规格说明的测试充分性准则包括范畴划分测试中的所有选择的组 合、每个选择以及基本选择覆盖准n 8 】。基于缺陷的测试充分性准则根据错误 的类型来产生测试用例。其中,变异测试的准则是在基于缺陷的测试中经常使用 的准则。所谓一个程序的变异是指对源程序做微小的改动后形成的程序。基于变 异的程序测试通常用测试用例集能够检测出的变异数目来评估测试用例集的充 分性。基于错误的测试要求测试用例能够检查程序容易出错的位置。常见的基于 错误的测试充分性准则包括域测试准则和基于规格说明的等价划分测试准则。 这些测试准则的提出和归类为软件测试用例的推导这一软件测试的核心问 题提供了丰富、清楚的解决方案。 1 2 基于规格说明的软件测试 根据测试用例的来源,软件测试可分为基于程序代码的测试和基于规格说明 的测试两类 4 】。这两种测试方法各有长短,互为补充。 基于程序代码的测试( 如图1 3 ) 采用自盒测试方法,主要是用于程序的单 元测试,可以提供具有很高的代码覆盖度的测试用例。但基于程序代码的测试的 一个最大缺点是无法确定“程序是否实现了软件需求 。 图1 3 基本程序代码的测试 基于规格说明的测试( 如图1 4 ) 采用黑盒测试的方法,可以用在单元测试、 集成测试和系统测试中,可以用来确保“程序正确地实现了其需求”,同时基于 规格说明的测试还为测试用例的重用提供了可能。它改变了“现在编程,以后测 4 基于形式规格说明的面向方面测试的研究绪论 试”的工作方式,使得在整个软件生命期中都可以并行地进行测试工作,从而极 大地提高了软件测试的效率。( 规格说明到测试用例和期望输出中的“c o u t 表 示这一领域是目前研究的热点) 图1 4 基于规格说明的测试 由于形式规格说明语言提供了一种精确的、一致的、易于被机器处理的符号 来描述软件需求规格说明,所以基于规格说明的测试主要以形式规格说明作为产 生测试用例的基础。 1 2 1 形式方法和形式规格说明 形式方法是基于数学方法来描述目标软件系统性质的一门技术,用严格的数 学符号和数学法则对目标软件的结构与行为进行有效的综合、分析和推理,它为 系统的说明、开发和验证提供了一个框架,有利于发现目标软件系统需求中的不 一致性、不完整性等方面的问题【9 】。形式方法的主要表现形式是形式规格说明。 由于形式规格说明基于严格的数学概念和理论,避免了用自然语言描述时可能带 来的模糊性和歧义性,因而便于对规格说明的各种性质进行推理或证明,也有利 于采用软件工具对规格说明进行自动化分析和验证。常用的形式规格说明语言有 z 、o b j e c t z 、v d m 、l a r c h 、o b j 、f s m 、s t a t e c h a r t s 、u m l 等。 1 2 2 基于形式规格说明的软件测试 基于模型的形式规格说明语言,如z 和v d m ,通过一组逻辑谓词及其相关 的状态变量来描述软件需求规格说明。d i c k 和f a i v r e 1 0 给出了一种根据v d m 规格说明产生测试用例的方法。s t o c k s 和c a r r i n g t o n 1 1 给出了一个从z 规格说 5 基于形式规格说明的面向方面测试的研究 绪论 明产生测试用例和测试结果判断的测试模板框架。o f f u t t 和l i u 1 2 给出了从 s o f l 形式规格说明产生测试用例的详细步骤,并通过具体的实例详细说明了测 试用例产生的过程。o f f u t t 1 3 j 丕给出了一系列基于状态规格说明的测试准则,用 来指导基于状态规格说明的系统测试。 代数规格说明通过软件系统应该具有的一组性质来描述软件的功能,这组性 质通常用一组公理来表示。因此,基于代数规格说明的测试就是要检查程序是否 满足规格说明中的这一组公理。基于代数规格说明的测试的研究主要包括: g a n n o n 1 4 等人用推导的方式产生基于代数规格说明的测试用例。b o u g e 1 5 等人 用一种逻辑编程的方法从代数规格说明产生测试用例。 1 9 7 8 年,c h o w 1 6 就使用有限状态机产生了电讯系统的测试用例。基于有 限状态机测试的主要方法是用有限状态机来表示系统的状态转换过程。然后,利 用这样的f s m 来生成一棵树,再通过各种遍历方法得到一些路径作为最终的测 试序列。这种测试方法也经常被用在面向对象的测试过程中。 s t a t e c h a r t s 是d a v i dh a r e l 1 7 提出的用于描述复杂或实时系统的可视化规格 说明语言,它是对f s m 和可视化状态迁移图的扩充,引入了层次、并发和广播 通讯机制。关于基于s t a t e c h a r t s 测试的研究已有很多,如s t e f a n i a 1 8 】等人提出一 种从u m ls t a t e c h a r t s 产生测试用例的方法,s u p a p o m 1 9 等人提出用u m l s t a t e c h a r t s 自动产生和选择测试用例的方法。 u m l 2 0 是一种通用面向对象的可视化建模语言,适用于各种软件开发方 法、软件生命周期的各个阶段,各种应用领域以及各种开发工具。目前,基于 u m l 测试的研究已有很多。m o n a l i s a 和r a j i b 2 1 】提出一种组合用例图和顺序图 生成测试用例的方法。c h e n 2 2 等人提出一种从u m l 活动图自动产生测试用例 的方法。ygk i m 2 3 等人提出一种利用u m l 状态图产生测试用例的方法。 p h i l i p 2 4 等人提出一种从u m l 交互图自动产生测试用例的方法。 1 3a o p 概述 1 3 1a o p 简介 a o p ( a s p e c t o r i e n t e dp r o g r a m m i n g ) 【2 5 ,目前的中文翻泽称之为“面向方 6 基于形式规格说明的面向方面测试的研究绪论 面编程”。a o p 的核心思想是关注点的分离( s e p a r a t i o no fc o n c e r n s ) ,也就是将 核心关注点和横切关注点( c r o s s c u t t i n gc o n c e r n s ) 分离,从而避免了面向对象编程 o o p 中有横切关注点所引起的代码分散( c o d es c a t t e r ) 和代码纠缠( c o d e t a n g l i n g ) 2 6 的问题。 对于核心关注点,可以继续使用o o p 的方法进行开发;对于横切关注点, a o p 引入了方面( a s p e c t ) 的概念,将横切关注点都集中到a s p e c t 中。a o p 为开 发者提供了一种描述横切关注点的机制,并能够自动将横切关注点织入 ( w e a v i n g ) 到面向对象的软件系统中,从而实现了横切关注点的模块化。 因此,a o p 除了可以解决代码纠缠和代码分散所带来的问题外,还有一些其 它的好处:模块化横切关注点,系统容易扩展,设计决定的迟绑定,更好的代码 重用性。然而,a o p 也有其缺点:a o p 是一种新的编程技术,没有完善的标准, 也没有得到良好的测试技术和大量的实际项目的应用;a o p 在开发工具上还很缺 乏;a o p 的理论支持方面也有待进一步研究。 1 3 2a s p e c t j 简介 a s p e c t j 2 7 】 2 8 2 9 是一种基于j a v a 的通用的面向方面语言。它是由施乐公 司帕洛阿尔托研究中心( x e r o xp a r c ) 开发,2 0 0 2 年成为e c l i p s e 开源社区的一 员,目前已成为a o p 领域事实上的标准。a s p e c t j 使用j a v a 作为核心关注点的实现 语言,并通过对j a v a 进行扩展的a s p e c t 机制实现横切关注点。 a s p e c t j 主要有六种实现机制,分别如下: 1 ) 连接点( j o i np o i n t ) :连接点是j a v a 程序中的某个特定执行点,比如某 个类中的一个方法,关注点可以在这些位置上横切应用程序。连接点是个抽象的 概念,不用主动定义一个连接点。a o p 定义了九类连接点:方法调用、构造函数 调用、方法调用执行、构造函数调用执行、字段获取、字段设置、异常处理程序 执行、类初始化、对象初始化。 2 ) 切入点( p o i n t c u t ) :由连接点指示符表达式构成,它定义了横切关注需 要匹配的连接点,同时提供横切关注所需的连接点上下文环境。 3 ) 通知( a d v i c e ) :通知是在到达某个特定的切入点时要执行的一段代码。 虽然切入点用来捕捉连接点集合,但是它们没有做任何事。要真正实现横切行为, 7 基于形式规格说明的面向方面测试的研究绪论 还需要使用通知机制。通知包含了切入点和在每个连接点处执行的代码段。 a s p e c t j 有三种类型的通知:前通知( b e f o r ea d v i c e ) :当到达一个连接点但 是在程序进程运行之前执行。前通知刚刚在方法的参数被分析之后,方法实际调 用之前运行。后通知( a f t e ra d v i c e ) :当特定连接点处的程序执行之后运行。在 周围通知( a r o u n da d v i c e ) :在连接点到达后,显示的控制程序进程是否执行。 4 ) 类型间声明( i n t e r t y p ed e c l a r a t i o n ) :为a s p e c t j 提供了静态横切代码的 方法。也就是说,通过类型问声明,可以改变程序的类型结构,如可以在已经建 立的接口或类中添加或扩展新的属性、新的构造函数和新的方法。 5 ) 方面( a s p e c t ) :方面是定义切入点和通知以及它们之间的映射的一个结 构。方面由a o p 编译器用来在现有对象中的特定执行点织入附加功能。类似于 j a v a 编程语言中的类,方面以横切模块单元的形式包装了所有的切入点、通知和 类型间声明等。 6 ) 编织( w e a v e ) :编织是把特定连接点的实现代码( a d v i c e ) 插入到相应 的连接点代码上。通过编织工具,通知会被“插入 到通知对应的连接点的前面、 后面或连接点所在的代码中。编织技术主要有两种,一种是静态编织,即在系统 编译时把方面编织到构件中;一种是动态编织,即在系统运行时把方面织入到构 件中。 1 4 面向方面的软件测试 1 4 1a o p 测试的必要性 面向方面软件开发( a s p e c t o r i e n t e ds o f t w a r ed e v e l o p m e n t ,a o s d ) 2 7 是 一套面向方面的软件开发的整体方法,它贯穿于从需求到分析、设计、编码实现 和测试的全过程。a o s d 的主要目标是使整个系统更好的模块化,它包括使功能 性需求,非功能性需求等不同的关注点更好的模块化,从而减低他们之间的耦合 度。但目前对a o s d 的研究主要集中在分析、设计和实现方面,很少考虑测试。 而测试又是软件开发过程中一个极其重要的环节,为了保证所交付的系统的质 量,我们必须进行软件测试。 a o p 作为一种新的软件开发技术为系统的开发带来很多优点,它能够提高 8 基于形式规格说明的面向方面测试的研究绪论 软件的模块性和内聚性,降低软件的复杂度,为软件质量的提高提供了新途径。 但是,a o p 并不能保证程序员不犯错误,而且它本身也不提供正确性验证,因 此,开发有效的a o p 测试方法是非常必要的。这与当初引入o o p 技术时一样, 对o o p 的测试是必要的,并且现有对o o p 的测试方法已经比较成熟。 1 4 2a o p 测试的特殊性 由于a o p 技术本身的优势,这给软件的设计和开发带来了极大的便利。同 时,由于a o p 引入了新的语言机制,如p o i n t c u t ,j o i n p o i n t s ,i n t e r - t y p ed e c l a r a t i o n 和a d v i c e 等,它们影响了程序的状态和行为( 如导言可以把一些新方法和实例变 量引入核心关注点中;通知则能够为类引入一些额外的不可见行为) ,导致方面 和类之间的交互复杂化。 此外,a s p e c t s 本身的特性 3 0 1 也不容忽视,这些特性主要包括: 1 ) a s p e c t s 没有独立的实体或存在物,它们完全依赖于类的上下文; 2 ) a s p e c t s 的实现同它们的织入上下文紧密联系; 3 ) a s p e c t s 或c l a s s 代码中的控制和数据依赖关系不明显; 4 ) 特殊的织入过程可能会产生一些突发行为。 由此可见,a o p 技术的引入也带来了新的问题和挑战。比如,测试a o p 的标 准是什么? 这些标准和其他程序的测试有什么不同? 现有的测试方法可以应用 到a o p 吗? 这些方法适当修改可以应用到a o p 测试吗? 因此,开发适合面向方面 的新的软件测试技术是a o p 的一项迫切而艰巨的任务。 1 4 3 面向方面的软件测试 前两节我们分析了a o p 测试的必要性和特殊性,现有的a o p 测试技术尚不 成熟,由于a o p 测试的特殊性也限制了a o p 测试技术的发展。 由于a s p e c t s 自身的特殊性,为a s p e c t s 选择适当的覆盖标准也是一个挑战 【3 l 】。目前有关a s p e c t s 的覆盖标准有:语句覆盖,插入覆盖( i n s e r t i o nc o v e r a g e ) , 上下文覆盖( c o n t e x tc o v e r a g e ) ,d e f - u s e 覆盖。其中插入覆盖意味着测试在每一 个连接点处的方面代码片段,上下文覆盖扩展了插入覆盖,测试在每一处被应用 到的方面代码片段。利用错误模型检测方面也是一种覆盖标准。 9 基于形式规格说明的面向万面测试的研究 绪论 a o p 测试技术也可分基于程序代码的测试和基于规格说明的测试。基于程 序代码的测试如基于数据流的单元测试a o p 3 2 】,给出了基于控制流和数据流测 试a o p 的标准【3 3 】;又如t x i e 和j z h a o 3 4 等为a s p e c t j 程序自动产生单元测 试和集成测试的测试用例提出了一个名为w r a s p 的框架。g u o q i n gx u ,z o n g y u a n y a n g 3 5 等提出了一个自动产生a o p 单元测试的框架,名为j a o u t 。基于规 格说明的测试如基于状态研究的a o p 测试 3 6 】、基于模型研究的a o p 测试 3 7 】 等。基于方面流图的a o p 测试 3 8 1 提供了一种混合测试模型,组合了基于程序 代码的测试和基于规格说明的测试技术。 详细的a o p 测试方法介绍将在第二章给出。 1 5 本文主要内容 1 5 1 本文内容 本文详细综述了目前形式化说明语言、基于形式规格说明的软件测试,以 及七种主要的a o p 测试方法。综合对比,提出一种基于a f r e e 模型的面向方 面测试技术。本文的主要贡献在于展示了一种在类和方面之间的交互中、按照消 息序列、为充分性测试来产生测试套件的可能性。 具体来说,本文详细分析了方面对类的影响,以及方面和类之间如何交互, 进而采用现有的面向方面建模思想来构建面向方面状态模型a - f r e e ;然后转化 a f r e e 得到方面转换树a - t t ,该树包含一个可充分测试对象行为以及类与方 面之间交互的测试套件。另外,本文引入了n + 测试策略,并把它应用在面向方 面测试中,较常见的覆盖策略,n + 沏j j 试策略提供了更强的覆盖标准,这包括其 他覆盖策略所不能检测的状态控制错误。同时,本文详细分析了基于a - f r e e 模 型的测试如何检测方面错误,这优于现有的a o p 测试方法。 最后,我们提出基于a f r e e 模型测试框架a f m a t ,基于框架我们从三个 方面扩展已有的基于模型的方面类检测和测试工具m a c t ,并以扩展的m a c t 来实验、评估基于a - f r e e 模型的面向方面测试技术。 形式化工作也是本文的一个重点,这更有利于检测目标系统中需求不一致 性、不完整性等问题,为系统的说明、开发和验证,以及自动化测试提供了一个 1 0 基于形式规格说明的面向方面测试的研究 绪论 框架。这包括对a - f r e e 模型和a t t 转换规则等的形式化。 1 5 2 论文结构 本文结构包括如下六章: 第一章绪论,首先介绍了软件测试的背景、概念以及软件测试技术和充分性 准则;接着介绍基于形式规格说明的软件测试技术;然后给出a o p 的主要实现 机制,并引入面向方面的软件测试,介绍其测试的必要性和特殊性。 第二章国内外研究现状综述,首先介绍基于错误模型的系统测试,给出六种 错误,为a o p 测试提供了比较标准;接着介绍目前六种主要的a o p 测试方法, 分别分析了六种方法的贡献、方法和存在的不足;最后给出六种测试方法的比较, 这里以错误模型的六种错误作为比较标准。 第三章面向方面状态模型a f r e e ,首先介绍了什么是f r e e 状态模型,以 及f r e e 模型的特性;接着采用现有的面向方面建模技术构造面向方面状态模型 a - f r e e ,并给出形式化定义;然后详细分析方面对类的影响,进而提出编织状 态模型w s m ,并对w s m 与a - f r e e 做一比较,组合它们的优势。 第四章面向方面测试,首先介绍基于a - f r e e 模型转换成方面转换树a t t 的一般规则;接着介绍多条件覆盖a t t 转换规则用来识别潜行路径和n + 测试 策略a t t 转换规则用来发现状态控制错误;然后介绍迭代松弛法如何生成测试 数据;最后介绍基于a - f r e e 的测试如何检测方面错误。 第五章框架a f m a t 设计与实验评估,我们首先分析了基于a - f r e e 模型 测试框架a f m a t ,基于框架我们从三个方面扩展已有的基于模型的方面类检测 和测试工具m a c t ,并以扩展的m a c t 来实验、评估基于a f r e e 模型的面向 方面测试技术。最后对比了基于a - f r e e 模型的a o p 测试方法和2 2 1 节中基于 状态研究的a o p 测试方法,并给出了本文方法的五个优点。 第六章总结与展望,总结本文的主要工作,提出较其他a o p 测试方面的优 势所在,以及不足之处,并给出本文展望。 基f 形式规格说明的面向方面测试的研究 国内外研究现状综述 第2 章国内外研究现状综述 a o p 作为一种新的编程范例,目前还缺乏成熟的测试方法。本章首先介绍基 于错误模型的系统测试,这为a o p 澳, i 试方法提供了一种比较标准。然后综述目前 a o p 测试的主要方法,最后给出比较和展望。 2 1 基于错误模型的系统测试 任何系统测试方法都是针对程序中出现过的一些错误类型,如果对于错误类 型没有任何概念,那么开发的系统测试方法也是没有意义的。a l e x a n d e r 3 0 等 人提出了一个错误模型( f a u l tm o d e l ) ,它包括六种类型的错误,反映了a o p 与面向对象以及面向过程截然不同的特征。 1 ) 错误的切入点结构约束( i n c o r r e c ts t r e n g t hi np o i n t c u tp a t t e r n s ) 。切入点 包含识别、捕捉特定类型连接点的表达式描述。对于一个切入点p ,关注点c 中 每个匹配的连接点,将被织入一个与p 关联的通知。p 表达式中定义的匹配函数 用于确定被选择的连接点。如果定义的匹配函数约束过强,一些必需的连接点会 被忽略如果约束太弱,一些本应该忽视的连接点将被捕获。以上任何一种情况都 很可能造成织入程序的错误行为,这也是a o p 中最明显的一类错误。 2 ) 错误的方面优先级( i n c o r r e c ta s p e c tp r e c e d e n c e ) 。在面向方面系统中, 多个方面有可能同时影响一个连接点,那么通知的不同织入次序会影响系统的行 为。在这种情况下,控制通知织入次序是很重要的,它可以通过为不同的方面指 定不同的优先级来确定,高优先级的通知能够被优先织入。 3 ) 未能建立期望的后置条件( f a i l u r et oe s t a b l i s he x p e c t e dp o s t c o n d i t i o n s ) 。 方面会引起类代码中控制流的改变,从而导致类不能实现其类契约的后置条件。 而其使用者希望关注点能根据它们的契约运行,不管通知是否被织入,方法的后 置条件都必须满足,也就是在织入过程之后应该保留关注点的行为契约。因此, 对于正确的行为,被织入通知必须允许核心关注点的方法满足其后置条件。然而, 在所有可能的织入上下文以及方面组合中定义不会造成行为契约违背的通知是 一个困难的挑战,本身也是一个极可能的错误源。 1 2 基于形式规格说明的面向方面测试的研究 国内外研究现状综述 4 ) 未能保存状态不变量( f a i l u r et op r e s e r v es t a t ei n v a r i a n t s ) 。关注点的行为 是根据其状态的物理表示以及作用于此状态上的方法来定义的。除了要建立方法 的后条件外,方法也必须保证其状态不变量的保留。方面的通知和导言能够为关 注点引入新的状态,那么要保证织入不会造成状态不变的违背也是一个艰难的挑 战,同时也是一个错误的来源。 5 ) 错误的控制流焦点( i n c o r r e c tf o c u so f c o n t r o lf l o w ) 。一个切入点表达式 指定了要选择的连接点。然而,这种选择的确定不仅仅是在织入阶段,很多情况 取决于运行时期。因此,要诊断出由于运行时上下文造成的错误是很困难的。 6 ) 错误的控制依赖变更( i n c o r r e c tc h a n g e si nc o n t r o ld e p e n d e n c i e s ) 。a r o u n d 通知能够为方法引入新的分支控制流,从而极大地改变语句之间的依赖,因此要 保证程序的正确执行,语句之间的依赖关系也需要测试。 虽然这仅仅是一个理论上的错误模型,还没有形成实际完整的测试方法,但 是它有助于开发测试工具以及确定测试覆盖策略和标准,为面向方面程序的系统 测试做出了重要的第一步。 2 2a o p 测试方法综述 本节主要介绍六种不同的测试a o p 方法,它们在实现上各有其特点,并以2 1 节中提到的错误模型作为其他测试方面的比较标准。 2 2 1 基于状态研究的a o p 测试 w x u ,d x u 等在文献 3 6 中提出了一种基于f r e e 状态模型 3 9 的测试方 法。该方法展示了为充分性测试对象行为、以及按照消息序列在类和方面之间交 互、以此产生测试套件的可能性。作者首先扩展f r e e 状态模型得到方面状态模 型( a s p e c t u a ls t a t em o d e l ,a s m ) ;然后转化a s m 得到转换树( t r a n s i t i o nt r e e ) , 该树包含一个可充分测试对象行为以及类与方面之间交互的测试套件。 f r e e 模型是面向对象软件开发使用的一种状态模型,它描述了对象的状态 和动态行为,并提供了实现的指导。a s m 模型是对f r e e 状态模型的一个扩展, 为了表示a o p 中基本的语言构造( j o i np o i n t ,p o i n t c u t ,a d v i c e ) ,a s m 增加了一 些新的标志。转换树测试的核心思想是通过一定的算法将a s m 转变成一棵转换 基于形式规格说明的面向方面测试的研究圜内外研究现状综述 树,然后根据从根到叶节点的每条路径所表示的消息序列,生成相应的测试套件。 在转换树中,每条从根到叶节点的路径表示检验对象行为的一个测试需求。如果 此路径代表的消息序列上的变量被指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南省桑植县贺龙中学高一音乐教案
- 人教版八年级下册生物7.2.5生物的变异(“探究花生果实大小的变异”)说课稿
- 公益林考试题及答案
- 高考试题及答案不再公布
- 甘肃技师考试题型及答案
- 可持续发展理念在全生命周期项目管理中的整合
- 2025河南租赁合同电子版范本
- 私募基金委托管理合同协议书范本5篇
- 基础和声试题及答案
- 企业基础管理答案及试题
- 建筑幕墙知识培训课件
- 人教版高中地理必修第一册第一章宇宙中的地球第一节地球的宇宙环境练习含答案
- 星地激光通信技术-洞察分析
- 诊所中药饮片清单汇编
- 《室外管网工程施工》课件
- 餐饮外卖窗口改造方案
- 糖尿病足报告
- 国有企业战略使命评价制度
- 吊车施工专项方案
- 合规风险管理制度
- 病毒课件教学课件
评论
0/150
提交评论