已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 基丁构什的软1 :,| :开发是目前软件i :程领域研究的热点。构什软 j ,| :的开发方法使得人型分布式 软1 i ,i :系统的开发和维护变得更为简单,可以提高软件的复川性和软什开发效率。但是,采川质量 著的构什或者i i 止确的部署高质量的构仆,则会带米灾难性的后果。 构件通常是由第三方的软件厂商提供,或者直接从构件库中购买的商h j 构件c o t s 。构件的 源代码通常是不可得的,传统的软件测试方法不再适用丁构件测试,基丁构件的软件测试面临新 的问题。目前的研究主要是关丁构件的设计,描述和检索,对构件测试的相关研究还很少。 论文首先介绍了软件构件的概念及软件复刚的发展历史,并对当前的三种主流构件规范 c o r b a ,c o m 。和j a v a b e a n s 进行了简单的介绍。在此基础上,引入了基r 构件的软件开发过程。 接着,本文介绍了构件测试过程,由于测试构件时因缺少足够的信息,对当前构件和基于构件的 软件测试问题研究的现状:构件测试技术、测试标准、测试过程成熟度模型、构件易测性进行了 深入的研究。 本文提出了一种基丁构件功能子域划分的测试方法,并定义了基丁分域的构件测试过程及测 试充分性衡量标准。此外,本文将基丁模型的测试方法同构竹内置测试方法结合起米,提出了一 种构件集成测试的方法一基丁模型的内置测试方法。 论文的最后,本文的主要:r 作及进一步的研究方向进行了总结和展望。 关键词:构件,基于构件的软件,构件测试,分域,基于模型的测试,内置测试 a b s t r a c t n o w a d a y s ,c o m p o n e n t - b a s e ds o f t w a r ed e v e l o p m e n t ( c b s d ) i sg a i n i n gs u b s t a n t i a li n t e r e s ti n t h e s o f t w a r ee n g i n e e r i n gc o m m u n i t y ac o m p o n e n t - b a s e da p p r o a c hc a l ls i m p l i f yt h ed e s i g na n dm a i n t a i no f l a r g es o f t w a r es y s t e m sa n di n c r e a s et h eo p p o r t u n i t i e sf o rr e u s ea n ds o f t w a r ed e v e l o p m e n tp r o d u c t i v i t y h o w e v e r , s o f t w a r ec o m p o n e n t sw i t hp o o rq u a l i t yo ri m p r o p e ru $ eo fs o f t w a r ec o m p o n e n t sw i t hg o o d q u a l i t ym a y l e a dt od i s a s t e r s c u r r e n t l y ,c o m p o n e n td e l i v e r e db yc o m p o n e n tp r o v i d e r sa se x e c u t a b l eo b j e c t si nb l a c kb o x e so n l y i n c l u d es p e c i f i c a t i o n so ft h ei n t e r f a c e s w i t ho u ts o u r c ec o d e ,m a n yt r a d i t i o n a ls o f t w a r et e s t i n gm e t h o d s c a nn o tb ea p p l i e dt oc o m p o n e n tt e s t i n g u n a v a i l a b i l i t yo fs o u r c ec o d eb r i n g sn e wc h a l l e n g e sf o r c o m p o n e n tt e s t i n g a l t h o u g hal o to fr e s e a r c he f f o r th a sb e e nd e v o t e dt od e s i g ns t r a t e g i e sa n dr e t r i e v a l m e t h o d so fc o m p o n e n t s ,af e wp a p e ra d d r e s si s s u e so fc o m p o n e n t s ,af e wr e s e a r c ha d d r e s si s s u e so f c o m p o n e n tt e s t i n g i nt h i st h e s i s ,w ef i r s tp u tf o r w a r dt h ec o n c e p to fs o f t w a r ec o m p o n e n ta n dg i v ea ni n t r o d u c t i o nt o t h ec o m p o n e n tm o d e l i e ,c o r b a ,c o ma n dj a v ab e a n s b a s e do nt h ec o n c e p to fc o m p o n e n t , c o m p o n e n t - b a s e ds o f t w a r ed e v e l o p m e n t ( c b s d ) i si n t r o d u c e dt o g e t h e rw i t hb r i e fd e s c r i p t i o no fe a c h p r o c e s si nc b s d f u r t h e r m o r e ,b yl o o k i n gb a c ko nt h et r a d i t i o n a ls o f t w a r et e s t i n gt e c h n o l o g i e s ,w eg i v ea no v e r v i e w o fs t a t eo ft h ea r to fc o m p o n e n ta n dc o m p o n e n t - b a s e ds o f t w a r et e s t i n gc h a l l e n g e s ,t e c h n o l o g i e s , s t a n d a r do ft e s t i n gc o m p o n e n t sa n dc o m p o n e n tt e s t a b i l i t y w eh a v ed e v e l o p e da na p p r o a c hf o rd e t e r m i n i n gt h eq u a l i t yo fc o m p o n e n t su s i n gas e to f b l a c k - b o xa n a l y s e sb a s e do nf u n c t i o nd o m a i np a r t i t i o na n dd e f i n e dac o m p o n e n tt e s t i n gp r o c e s s ,w h i c h o a nb eu s e df o rs o f t w a r ec o m p o n e n tt e s t i n g w ea l s oe x t e n dc o n t r a c t - b a s e db u i l t - i nt e s t sw h e r e c o m p o n e n ta r ee q u i p p e dw i t ht h ea b i l i t yt oc h e c kt h e i re x e c u t i o ne n v i r o n m e n ta tr u n - t i m ew i t ht h e m o d e l - b a s e da p p r o a c h e s 1 1 l i sm o d e l - b a s e da p p r o a c h w h i c hi sd e s i g n e df o rc o m p o n e n ti n t e g r a t i o n t e s t i n g ,c a ni n c r e a s et h ea u t o m a t i o nl e v e li ng e n e r a t i n ga n dr e a l i z i n gb u i l t - i nt e s t s f i n a l l y ,as u m m a r yo ft h i sd i s s e r t a t i o na n df u t u r er e s e a r c hp l a ni sg i v e ni nt h el a s ts e c t i o n k e yw o r d s :c o m p o n e n t ,c o m p o n e n t - b a s o ds o t f , v a r e ,c o m p o n e n tt e s t i n g ,d o m a i np a r t i t i o n , m o d e l - b a s e dt e s t i n g ,b u i l t - i nt e s t i n g i i 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成 果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发 表或撰写过的研究成果,也不包含为获得宁夏大学或其它教育机构的学位或证书而使 用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的 说明并表示了谢意。 研究生签名:扬尊匕 时间:年钼2 同 关于论文使用授权的说明 本人完全了解宁夏大学有关保留、使用学位论文的规定,即:学校有权保留送交 论文的复印件和磁盘,允许论文被查阅和借阅,可以采用影印、缩印或扫描等复制手 段保存、汇编学位论文。同意宁夏大学可以用不同方式在不同媒体上发表、传播学位 论文的全部或部分内容。 ( 保密的学位论文在解密后应遵守此协议) 研究生签名:彩,鲁沁 时间: 坤年多月2 日 导师签名: 1 冬义 u j 。砭人学顺i 学f 论支 筇帝绪论 1 1 课题来源及意义 第一章绪论 随着软件系统复杂性的增加,规模的扩人,以及软件开发机构对开发成本,开发周期要求的 提高,继面向对象分析与设计方法之后,基于构件的软件开发( c o m p o n e n t - b a s e ds o f t w a r e d e v e l o p m e n t ,简称c b s d ) 方法已经成为新的趋势【l l ,即将外部开发的构1 ,l :集成剑具体应h j 环境 中来构建面向特定应用的软件系统。该方法的提出解决了面向对象技术无法使大量结构相似的应 h j 程序结构得到重用的矛盾,因此对软件重用和集成具有1 f 常重人的意义,已成为当前软件领域 的主流技术和研究热点。与此同时,相关的质量保证技术和方法也成为当前重要的研究内容。 由于构件在集成剑应用环境之前,已经进行了相关测试。因此,理论上基于构件的软件系统 已经具备了高的可靠性。然而,许多1 :程实践证明并不是这样。因此,在各种构件集成到应用环 境时实施有效的集成测试成为基于构件的软件系统( c o m p o n e n t b a s e ds o f t w a r es y s t e m ) 质量保 证的重要手段j 。 近年,构件集成测试技术的研究已经在相关研究机构展开。由于构件所具有的特点,实施测 试的人员包括构件提供方( c o m p o n e n td e v e l o p e r ) 和构什使用方( c o m p o n e n tu s e r ) 怛j 两个角度 的不同,构件开发方拥有构件源代码,而构件使用方只有构件的可执行代码;二二是测试目的不同, 构件开发方需要测试构件的所有功能,构件使用方只关心与其有关的部分功能。一般来说,构件 开发方负责构件的单元测试,构件单元测试通过之后在构件集成到具体的应用环境时,由构件使 用方根据所构成的构件系统实施集成测试。 本课题的基本任务是从构件使用方的角度研究构件软件系统的测试技术,提出了一种基于分 域的测试方法,并定义了基于分域的构件测试过程及测试充分性衡量标准。此外,本文将基于模 型的测试方法同构件内置测试方法结合起来,提出了一种构件集成测试的方法童砉于模型的内 置测试方法。 1 2国内外研究现状 l 、构件软件单元测试 构件软件单元测试的现有研究方法多是在现有单元测试方法的基础上,针对构件的特点进行 了一定的改进。目前用于构件测试的主要方法有以下几种: 1 ) 构件验证( c e r t i f i c a t i o no fc o m p o n e n t ) i 副 该方法首先对构件进行基于系统剖面的黑盒测试,以确定构件具有其卢称的功能,在设计测 试用例时不考虑构件的内部逻辑结构:然后对经过黑盒测试的构件进行系统级的植错测试,通过 接口植错分析( i n t e r f a c ep r o p a g a t i o na n a l y s i s ,i p a ) 的方法来测试构件运行失败时可能出现的后 i 。夏人譬彤 l 学位论艾第。市绪论 暑_ i i 曼曼曼曼曼曼曼曼曼! 曼皇! 皇曼曼曼曼! 曼曼曼曼鼍曼曼曼曼曼曼曼曼曼曼曼! 曼曼曼曼曼曼曼曼! 曼曼曼曼曼曼曼曼曼毫曼鼍曼舅曼曼曼曼曼曼曼曼曼曼曼! 曼曼笪 果,如果构件具有良好的健壮性和错误处理机制,在运行失败时不会造成系统崩溃,则可以使用 该构件,否则需要选择新的构件,如果必须采川当前构件的话,则需要对构f ,l :进行包装,为构件 添加一层包装( w r a p p e r ) ,以限制某些有风险的及不必要的功能,提高构件的健壮性。 构什验证方法本质上属r 黑盒软1 i ,l :测试方法,黑盒测试不足以考虑剑系统级别的构件可能的 行为,构建足够的测试朋例的代价也是很人的,并且可能监测不剑一些安全问题如恶意代码、特 洛伊木马等。此外,错误的构件包装方法也可能起剑相反的效果,影响构件的使j h j 。 2 ) 构件测试平台( c o m p o n e n tt e s tb e n c h ) 一 该方法由构件的开发者提供一个测试规格说明1 5 ,并且制定了一系列步骤的测试操作。测试 规格说明二 5 以标准x m l 的方式来描述构件中的实现、接口和相应的测试集等信息。用户可以在 实际系统中根据该测试规格说明1 5 进行测试,虽然测试规格说明1 5 是以x m l 形式提供的,但可 以不受操作系统的限制,把x m l 形式的规范转化为c 或c 抖以及j a v a 来编译执行。最后对得到 的测试结果进行分析,比如分为强接受、弱接受、朱决的和未知的等儿种。这种方法的可以以三 种方式生成测试,手:i :的、计算机辅助的和自动化的,比较灵活;而且使用x m l 语言米描述测 试规格说明书,可移植性比较好:支持符号执行,可以通过符号执行得到测试输出而无需实际运 行测试:允许不同的测试环境,并且有版本管理机制,但是符号的执行速度比较慢。 3 ) 内置测试( b u i l t i nt e s t ) p 1 内置测试方法通过住构f ,l :的源代码中添加了用丁内置测试的函数,事实上成为一种特殊的构 件,这种构件运行时具有两种模式:止常模式及维护模式。维护模式下可以调h j 构件内置的测试 函数来测试构件,正常模式下不会调用内置的测试函数。这种方法增强了构件的可测试性,简化 了构件维护的正确性、可适应性、完整性、可预防性和重设计性,而且适应范围广,除了构件外, 还适用于类和对象,但是该方法需要构件源代码,后面5 1 小节将会更详细的介绍这种方法。 4 ) 回溯测试方法( r e 呐s p e c t i 吣) 峥j 该方法利用r e t r o s p e c t o r s 来记录构件执行的历史信息,以便测试者可以利用这些测试信息。 构件中的r e t r o 类与j a v a b e a n s 中的内省类( h t r o s p e c t o rc l a s s ) 相似。具有r e t r o 类的构件有三种不 同的模式:设计时模式、测试时模式和执行时模式。构件中的r e 舡0 s p t i d r s 可以手工创建,也可 以通过为构件添加一种所谓的r e t r o s p e e 规约来自动生成。 该方法的优点在于,即使没有源代码,构件使用者也可以使用代码覆盖分析的方法测试构件, 因为构件内部的r e t r o s p e c t o r s 可以记录构件的执行情况。但由于该方法不是构件的标准,构件提 供者不一定提供这项功能,在文献【刀j 中作者也只是针对j a v a 构件讨论的。 5 ) 构件包揪( w r a p p e r ) 1 该方法通过为构件添加一层保护的包装层,以探测构件执行时的错误及异常行为,并提供异 常处理机制。这种保护型的包装层能够处理典型的构件运行错误,比如缺少信号、信号的变化范 围超过了规定的限度,信号振动等。尽管该方法只是在丁业上的一个简单模拟蒸汽系统作了试验, 但是该方法可以提高商业构件的可靠性。该方法的局限性在于设计、实现即评估构件包装层可能 是代价不菲的,而且构件包装层不能过于复杂,否则就可能与提高构件的可靠性的初衷相反。 2 、构件集成测试 构件集成测试,主要目标是发现构件交互时与接口有关的错误。一般的集成测试有两种模式: 递增式测试方法( 每个构件分别测试,然后组合起来集中测试) 、非递增式测试方法( 把下一个要集 宁砭,、。7 硕卜:f 迂沦文第帝绪沦 曼曼! 曼曼曼曼曼曼曼曼曼曼曼曼曼曼曼曼曼鼍曼曼曼! 鼍i i _i ih i i i 量! 毫 成的构件同已经组装好的构件集合起来进行测试) 。在构件软件中,构件集成的顺序、使川不同模 型构建的构件之间的通信问题等都是测试不可避免的。目前,构纠:集成测试的方法主要有: 1 ) 接口变异测试方法( i n t e r f a c em u t a t i o n ) 1 传统接口变异技术的基础是将变异体建立在模块或子系统集成时的接口( i n t e r f a c e ) 上,对被 测程序的改动集中在模块或子系统之间的接口上。该方法在传统的接口变异测试方法的基础上, 通过引入作用于接口描述语言的变异算子,提出了面向构件的接口变异测试方法以及基丁这种方 法的测试充分性度量准则m c ( 方法覆盖准则) 和m i ( 接口变异度量准则) 。该方法很好地解决了在 构f l - 钡4 试中,源代码不可知的问题。但是,该方法在发现错误的能力上有一的局限性,接口变异 测试方法只能反映与函数的参数有关的错误,但有些代码的运行与函数的参数并没有直接的关 系。例如:接口变异测试方法就不太可能揭示在分布式系统中常见的同步方面的错误。 2 ) 有限状态自动机( f i n i t es t a t em a c h i n e ) 钡4 试方法| 9 , 1 0 1 即构件状态自动机( c o m p o n e n ts t a t em a c h i n e ) 钡l j 试方法,该方法利用图形化来表示构件的黑盒 ( 规格说明书) 及自盒( 实现) 信息,每一个构件的黑盒信息可以用构件状态自动机( c o m p o n e n ts t a t e m a c h i n e ) 表示,构件的执行状态用圆形表示,状态间的转换用一个五元组( s o u r c e ,t a r g e t ,e v e n t , g u a r d ,a c t i o n ) 表示。把从软件规格说明f 5 和源代码中得到的信息,比如数据流和控制流信息等, 用一个称为构件软件流图( c o m p o n e n t - b a s e ds o f t w a r ef l o wg r a p h ,c b s f g ) 来表示集成的构件系 统,c b s f g 是一个有向图。首先把转换( s o u r c e ,t a r g e t ,e v e n t ,g u a r d ,a c t i o n ) 转化为嵌套的i f - t h e n - e l s e 结构,并把具有相同e v e n t 的结合到一起;然后据此构造控制流图,并与从构件源代码构造的数据 流图相结合;然后把所有的子图用控制流边和数据流边连结起来。产生测试用例的第一步是把变 量的定义和使用联系起来,然后用全定义标准( a l ld e f i n i t i o n sc e r t e r i o n ) 产生测试用例。该方法本质 上是用数据流和控制流结合的方法,随着软件规模的增大,状态图的复杂程度也将提高。 3 ) 基于u m l ( u n i f i e dm o d e l i n gl a n g u a g e ) 的钡y 试方法l i u u m l 是目前应用比较广泛的建模语言,u m l 的状态图、交互图以及构件图等可以刻画基于 构件的软件开发中不同阶段构件的行为,因此也可以用于构件测试。文献1 2 9 j 中提出的方法利用 u m l 的顺序图和协作图构造一个u m l 测试模型,模型中的每一个测试单元称为目动系统功能模 块( a u t o m a t i cs y s t e mf u n c t i o n ) ,定义为一个从输入到输出的完整功能块,用运行于一个构件中的 最大消息集合表示。根据顺序图得到正常信息流和异常信息流,通过协作图得到并发事件的信息 流,并根据定义的测试覆盖准则来设计测试用例。 y e w u 等在文献【3 0 1 中提出了一种基于构件的软件测试模型,该模型由四个键的元素组成:接 口、事件、上下文依赖以及内容依赖,利用u m l 中的状态图及协作图来刻画构件之间的上下文 及内容依赖关系,并定义了相应的测试充分性衡量标准。 上述两种方法都假设每个构件都经过了充分的单元测试,不再包含错误,只对每一个构件进 行黑盒测试。这种测试技术可以实现自动化。 4 ) 构件交互测试( c o m p o n e n ti n t e r a c t i o nt e s t ) 1 2 该方法首先建立构件交互的形式化模型,以用来描述构件相互作用可能的顺序,这个模型也 可以处理构件之间的同步通讯;然后由测试需求生成单元测试h j 例,进行单元测试;然后迭代选 择构件进行集成,得到复合的测试需求,并根据新的测试需求生成集成测试用例。这种测试方法 考虑了构件集成的顺序,增加了系统的灵活性。但是,理论上可以从构件单元升级到系统,但随 3 宁夏j j :i 硕卜学f t 论文第+ 帚绪沦 篁皇! 蔓! 曼曼皇曼曼曼曼曼曼曼曼曼! ! 曼曼曼曼曼曼! ! 曼曼曼皇! 蔓蔓曼曼皇曼曼曼曼曼曼曼曼曼皇鼍, 一-一 ii i l i 舅曼皇曼曼曼曼曼曼曼曼曼曼曼曼曼曼曼曼 着系统规模的扩大,可能会很复杂,难以处理。 5 ) 构件交互图( c o m p o n e n ti n t e r a c t i o ng r a p h ) j j 该方法使j j 了构件交互图( c o m p o n e n ti n t e r a c t i o ng r a p h ) 来表示接口和事什的关系,调川接口 会产生事件,产生事1 j ,l :时会调用构件的接口并触发其他事件。得剑构件交互图后,构仆的交互图 作为输入,图论中的深度优先遍历算法,得到需要测试的路径的集合,为了充分测试,每个接口、 每个调用事件、所有数据流和控制流都至少测试一遍。该方法同时川静态和动态方法来设计测试 刚例。可以实现对接口事 i ,i :和上下文执行路径等的充分性测试。它的适j f j 范围很广,对现行的主 流构件规范c o r b a ,j a v a b e a n s 和c o m 都适用,并且不需要构件的源代码。但是随着软什规模 的增大,该方法复杂性和代价会明显提高。 6 ) 构件元数据方法( c o m p o n e n tm e t a d a t aw a y ) 钏 该方法是利用构件的开发者提供的构件元数据m e t a - d a t a 来分析和测试构件,这些数据包含 不同种类的信息并且有明确的上下文环境,由构件提供者在开发构件时嵌入这些信息,构什提供 者还可以根据构件使用者的需要,增加相应的信息。构件元数据既可以描述构件的静态特性,也 可以描述其动态特性,可以看作是人多数构件模型中的内省机制的一般形式。构件使用者在测试 构件时,可以通过访问构件元数据获得相应的信息。 该方法增加了程序分析的精确度,为构件使刚者测试构1 i ,i :提供了方便性。目前的构件标准 d c o m 和e 用已经提供了通过元数据米为构1 ;,i :使j l j 者提供附加信息的机制,但是制定相应独立 丁构件开发者的构件元数据的标准比较困难,缺乏第三方构件提供者的支持,目前该方法还只能 用来测试小型程序。 表1 1 不同测试方法比较 单元测试自动化 序号测试方法测试角度 容易使用 或集成测试下具支持 l 构件验证使用者两者都是有是 2构件测试平台提供者单元测试有是 3 内置测试使用者两者都足有 是 4 回溯测试两者皆可两者都是有是 5 构件包装方法使用者 单元测试有是 6构件交互测试提供者两者都是有 否 7 接u 变异测试 使用者集成测试待开发是 8 有限状态自动机使用者集成测试无是 9 基于u m l 测试 使用者集成测试有是 l o 构件交互图使用者集成测试无 足 l i 构件元数据法 提供者集成测试待开发是 4 j 。夏人7 顺l 学f i 沦文第一审绪论 1 3主要研究内容 构件代码涉及剑构件提供者1 2 1 的商业机密,构什使川者通常情况。卜得不剑构件的源代码。这 是采刚第三方构件来开发系统最主要的问题。构件使刖者无法了解构件的内部结构,传统的自盒 软件测试方法不再适用,只能通过构件提供的接口,采用黑盒方法测试构件。此外,因为构件提 供者不了解构件可能应用的环境,构件使h j 者在测试构件时缺乏足够的构件信息,冈此也给构件 测试带来了困难,主要表现在以下几个方面【l5 4 l j : 1 ) 缺乏构件应用的上下文依赖环境 构1 :,i :提供者需要知道构1 :,l :将被应用的上卜文依赖环境的相关信息,但是可能无法获得这种信 息,构件提供者只能根据自己的假设来开发构件,这就可能造成假想的应用环境跟实际的应用环 境不一致。即使是面向多个应川环境开发的c o t s 构件,构件开发者也可能无意识地基丁某个特 定的环境米开发或设计构件,测试构件时同样可能会基丁某个特定的环境下。构件住某一个环境 下可以正常运行,但是在另外新的环境下可能会产生无法预料的失败。 2 ) 缺乏详细的构件描述文档 构件的说明文档包括构件的功能说明、接口描述、构件可以应用的环境、测试样例等,还可 以是语法和语义描述文档。详细规范的文档是理解和测试构什的必要条件,但是构什提供者通常 未能提供足够的构件描述文档。 m o r i s i om 等研究人员在文_ 献【1 7 j 中提出了一种基y - c o t s 构件的软件开发过程模型,该模型 中专门有一个过程来处理构件文档缺乏的问题,称之为“熟悉构件”,该过程通过事先实际执行构 件来理解构件的功能、质量及体系机构。但是,详细的文档是高质量的可重用的构件的必备条件。 论文后面章节提出的基于分域的构件测试方法也需要详细的构件描述文档。 3 ) 构件使用者对构件提供者的依赖关系 构件应用的上下文环境及文档描述信息的缺乏,使得构件使用者在应用构件之前必须充分地 测试构件。如果构件使用者在测试构件时发现了问题,就体现了构件使用者对构件提供者的依赖 关系。构件使用者可能无法直接移除测试构件时发现的错误,因为他不了解构件的内部结构和源 代码。即使构件的文档中有详细的测试计划、测试用例,调试构件的错误也是异常困难的,测试 代价也是很大的,这就与构件可以节约开发成本相悖。构件的维护也需要构件提供者负责,同样 体现了构件使用者对构件提供者的依赖关系。 本文在对上述问题进行分析的基础上,结合现有的研究条件,主要以第三方构件作为研究对 象,针对构件单元测试,提出了基于分域的构件测试方法;针对构件集成测试,提出了基于模型 的构件内置测试方法。 1 4论文结构 本文的结构如下: 第一章讨论构件测试技术的背景、意义、应用范围和国内外研究概况。 5 宁夏人。何! 卜z 位论艾第审绪论 第二章介绍构件及基r 构件软件开发的基本概念。 第三章介绍构件测试基本概念,包括构什测试的含义、测试过程以及构件可测试性理论、 构什测试刖例生成方法、测试覆盖准则; 第四章针对构件的单元测试,提出了基丁分域的构件测试方法。 第五章针对构什的集成测试,提出了基丁模型的构什内置测试方法。 第六章结论和今后的研究方向。 6 j 。夏人硕f + f 一论支第:审软件协f , : 2 1 构件的基本概念 2 1 1 软件构件的定义和特点 第二章软件构件 早在1 9 6 8 年软件构件与“软件组装生产线”思想就在国际n a t o 软件j i :程会议上被提出来。 从那以后,采用构件技术实现软件复用,采用“搭积术”的方式生产软件,成为软件业长期的梦想。 然而,由_ 丁技术水平限制,在很长一段时间内构件技术只是作为一种思想存在,直到c o r b a ,j 2 e e 和c o m d c o m ( 现在的n e t ) 出现,中间什兴起以后,构1 :,| :技术才逐渐走向现实。在国内,构 件化思想兴起于2 0 世纪9 0 年代。 目前关于构件的定义有很多种: 构件是已被封装的、可分布的、具有良好接口定义的软件包【l6 】; 可复h j 的构件是内包含的、清晰标识的模块,搞述和执行特定的功能,具有清晰的接口和文 档,并定义了复川的情景【i ; 一个厂为接受的定义是【l8 4 2 】: 构件是具有符合特定协议的接口的组合单元,它的上下文依赖性是完全显式的,构件可以被 独立的部署,并由第三方组合。在与其他构件组合时,不需要修改构件的源代码,只需要修改构 件提供的接口和属性。构件的接口分为两种:一种是构件可以向外界提供的服务的接口,其它构 件可以通过这些接口来调用构件提供的服务:另一种是构件期望从其它构件获得服务的接口。 构件通常具有以下基本的属性垆j : 可识别性:在特定的开发环境和部署环境下,每个构件都必须是唯一的可识别的。如果不具 有这一特征,大规模的复用软件构件是不可能的。当前的构件技术能够保证这一点,通过采用规 范的命名机制。c o r b a , j a v ab e a n s 以及m i c r o s o f td c o m 都是典型的例子。 模块性和封装性:软件构件是将一个软件分割成不同的模块得到的,每一个模块封装了一些 相互关联的数据及操作,以完成某一特定的任务。 独立发布:软件构件必须可以作为独立的部分发布,并且在特定的条件下可以被代替。每一 部分必须在某一目标运行环境- 卜- 在系统中起剑独立的作用。第二方的c o t s 构件必须可以被独立 的发布,以便构件使用者利用构件组装成一个基于构件的系统。 基于合约的接口:构件间的接口定义了接口的客户端及接口实现端之间的一种合约关系。每 一个合约定义了客户端如何采用接口来访问构件的服务,同时也定义了提供的服务及如何实现以 满足这一特定的服务合约。只有客户端通过正确的方法访问接口才能调用构件提供的服务。 可复用:可复用是基于构件的软件1 :程成功的关键冈素。传统的软件模块只能在有限的小范 嗣内使用,因为这些模块都是为特定的项目开发的。软件构中t 贝j j 提供了范围更广、多层次的复用 粒度。构件的需求分析文档、设计说明及代码、部署机制及测试信息都是可以复用的。 7 宁夏人贝卜7 :f l 沦爻 第,:节软件缃件 文档化:构件以良好的文档方式描述,具有便- 丁复川的文档。 内聚性:构件应该是在某一抽象层次上对某一功能的封装。 安全性:涉及一个构件定义和管理其内部组成成分的访问权限,般情况f 。构件提供者是 不希望构l i ,l :被修改的,冈此内置的安全机制是重要的。 遵循构什模型:在原则上,通过遵循统一的构什模型,构什可以与遵循同样模型的其他构件 进行交互。 适应性:构什应该易丁通过参数化等方式往不同语境中进行配置。 2 1 3 软件构件的分类 按照构件源代码开放的程度,构件可以分为三类:白盒构件、灰盒构件和黑盒构件【1 9 】。 白盒构1 : t :( w h i t e - b o x ) :构件使用者可以访问构件的源代码,并可以直接对构件进行修改。 灰盒构件( g r e y - b o x ) :构件的源代码不能修改,但构件提供了可扩展语言或者定义规范的应用 程序接口。构件使用者可以通过操纵构件接1 2 1 来实现不同的功能,比如对构件进行“包装”( w r a p ) 。 黑盒构1 : l :( b l a c k - b o x ) :只有构件的二进制可执行代码可用,而且没有扩展语言和定义规范的 应用程序接口。构件使用者无法对构件进行修改。 基r 构件的开发的一个发展趋势是尽可能的采川商 i ! l 构什c o t s ( c o m m e r c i a lo f f t h es h e l o 。 c o t s 是指可根据商品价目表向开发商或供应商购买的现成商品构件,用户能在不作任何修改的 情况下直接使用。 c o t s 构件具有以_ 卜- 特础4 3 j : 预先存在的;不需要修改源代码,就可直接使用;大部分公众都可以直接购买该构件;购买 者没有获得源代码的权利,只能将构件作为黑盒使用。可以直接购买,或者获得构件商的认证; 维护及更新工作都由构件的提供者负责。 2 2 当前主要的构件技术 构件技术与面向对象技术紧密相关。构件和对象都是现实世界的抽象描述,通过接口封装了 可复用的代码的实现。不同的是,首先在概念层面上,对象描述客观世界实体( i d e n t i t y ) ,构件 提供客观世界服务( s e r v i c e ) 1 2 训,其次在复用策略上,对象是通过继承实现复用,而构件是通过 合成实现复用;最后在技术手段上,构件通过对象技术而实现,刘象按规定经过适当的接口包装 ( w a r p ) 之后成为构件,一个构件通常是多个对象的集合体。 下面我们将分别从c o m d c o m ,c o r b a ,j a v a b e a n s 几个方面来介绍当前主要构件基础的一 些基本概念和内容。 2 2 1c o m d c o m 1 ) 相关背景 为了适应更加复杂应用的需要,m i c r o s o f t 公司推出了构件对象模型c o m ,c o m 支持同一台 8 宁夏人。顺f 学f ,论文 第:章软件f f :j 件 计算机上不同进程间对象的调川:由丁分布式处理系统的j 泛应用和与c o r b a 竞争的需要, m i c r o s o f t 公司丁1 9 7 7 年推出了c o m 的分布式版本,即d c o m ,支持对象间通过网络( 包括局域 网、,“域网、英特网) 进行通信。 2 ) 基本概念 c o m d c o m 对象模型设计的指导思想是健壮、高效和切实可行。c o m 对象具有多个接口, 通过每一个接口可以访问一组成员函数。成员函数相当r 方法。每个对象拥有自己的数据,表示 对象的状态。数据只能通过接口访问,刚户和l 应j h 程序不能越过接口访问数据。每个接口仅包含 其所属成员变量函数的凋,h 说明及引刚它的指针。成员函数的实现不是对象的一部分,一般可以 有两种方法实现:一是用动态链接库d l l 实现,二是作为一个可执行模块e x e 实现。不管哪一 种实现,成员函数都可以动态调用,直接执行,不需要编译连接。甚至调用者所刚的程序设计语 言与实现成员函数所用的程序设计语言也可以是不同的。用d l l 实现时,在调朋成员函数前必 须将d l l 加载剑本地进程的地址空间,不能跨进程空间进行访问。而e x e 模块不受这个限制, 可以跨进程访问。 在c o m 对象的多个接口中,有一个接口是每个对象必备的,该接口被命名为i u n k n o w n ,接 口名前面加字母i ,以便识别。 c o m d c o m 也有类的概念,类也看成是一种对象,称为类对象。由于c o m d c o m 不支持 继承的概念,一个对象的所有接口及其成员函数都已在对象中定义,往引用对象时不必到其所属 的类或其祖先类中查洵有关的内容。只有在创建一个对( 即类的一个实例) 时,才用到类中的内 容。在c o m 中,除了类以外,还有类型( t y p e ) 的概念。类型比类更抽象,它与实现无关。而类中 可含有一些与实现有关的属性,诸如支持它的软件名称、所用的图表等。例如一个复合文件可以 定义成一个类型,但这种类型可用不动的字处理软件、电子表格软件多媒体软件来实现,形成不 同的类,可用不同的图表表示。用户可以根据运行环境在同一类型中选择合适的类。 2 2 2c o r b a 1 ) 相关背景 c o r b a ( c o m m o no b j e c tr e q u e s tb r o k e ra r c h i t e c t u r e 公共对象请求代理体系结构) 是由o m g 工业集团定义的分布对象计算模型和系统结构。o m g 于1 9 9 0 年提出了一个对象管理结构 ( o m a ) ,这是c o r b a 最原始的构想及基础。在o m a 的基础上,1 9 9 1 年一些大公司联合提出了 c o r b a l 1 版。目前有不少公司从事c o r b a 的实现= 作,并推出了基于c o r b a 的产品。c o r b a 仅是一个分布对象规范,没有限定使脂何种程序设计语言,其目的是不使c o r b a 束缚在某种特 定程序设计语言上。用不同语言二f 5 写的对象,只要符合c o r b a 规范,就可以相互调用。但由于 c o r b a 规范仅是一个书面的说明,各公司对其理解未必一致,规范中也有不少部分没有做统一 规定,由厂家自行决定,因此各厂家基于c o r b a 的产品未必相互兼容。 2 ) 基本概念 c o r b a 的对象模型基本上按o m g 所定义的公共对象模型c o m ( 不同于微软的c o m ) ,支 持类、封装、继承和多态,是一个功能比较完备的对象模型。对象或类之间可按客户朋艮务器方式 互相调用。每个对象或类即可以作为客户,也可以作为服务器,有时还可以兼作客户和服务器。 9 ;。夏人学坝l j f t 论文 第一:亭软f , f ;:f 件 篁曼曼曼曼i ii i 曼曼皇曼量曼曼曼曼寰曼曼! 曼曼曼曼曼笪! 皇曼曼曼曼 客户对象和服务器对象只通过消息交互作刚。客户对象向服务器对象发出请求,服务器对象响应 客户对象的请求完成一定的操作,并返同操作结果和必要的信息。它们只通过消息往米,不必了 解与请求无关的功能。即使客户对象或服务对象重新实现,只要接口的语法和语义不变,不影响 用户的使用。客户和服务器的通信方式一般有两种:常h j 的是同步方式,即客户提交请求后,客 户要等剑服务器方操作执行完毕并返同操作结果或信息后,才继续运行;另一种方式是异步方式, 即客户提交请求后,可继续运行。 2 2 3j a v a b e a r s 1 ) 相关背景 j a v ab e a n s 是于1 9 9 6 年提出的基于j a v a 语言的分布对象模型,其构件叫b e a n 。b e a n 就是以 j a v a 语言中的类和对象为基础定义的。当初,j a v ab e a n s 主要为一些软件构造j f :具提供一些可视 化构件。后经不断扩充,发展成为一种通川分布对象模型。但是,j a v ab e a n s 不如c o r b a ,d c o m 成熟,还在不断完善之中。 2 ) 基本概念 与其它分布对象模型一样,j a v ab e a n s 是以对象作为基本构件。类是对象的模板,而对象( u p b e a n ) 是由类生成的一个实例。类中可有多种构造对象的函数。如果生成对象时,不指明具体的 构造函数,仅指明类名,则用卜面的接口调用:n 州 ( ) 。这就表示刖类中的缺省构 造函数c o n s t r u c t o r ( ) 生成对象。在j a v ab e a n s 中,一组对象相互联系,相互作用,有公共的接1 2 1 , 服务于某一应用目的,则这组对象组成一个容器。容器类似丁装配车间,是一种存放相关构件的 “器皿”,用于安排构件、实现构件间的交互,其形式也是多种多样的,如表格( f o r m ) 、页面( p a g e ) 、 框架( f r a m e ) 、外壳( s h e l l ) 等。以上的概念和方法与c o r b a ,d c o m 相类似。 2 3 基于构件的软件工程 领域工程: 领域分析 软件篁耄结构l - j 。r 复思璺件开 开发ii 发 领域模跫卜jo 叫结构模型 分析卜叫体系结构 膏焉 中心存储库可复用 软件制品组件 构件t 程卜_ _ j叫测试 图2 3 c b s e 过程 l o 组件更新 应用软件 夏人学顺y t :! ,论艾第:币软f ,| 缃f t : 基丁构f t :的软件一i :程( c o m p o n e n t b a s e ds
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年CPA会计科目模拟真题(含详细解析)
- 2026年体育馆运维管理人员培训考核题库附解析
- 2026年土壤肥料检测员技能竞赛试题带解析
- 法医物证检验规范
- 2026年锂电池安全性能检验员培训题库带答案
- 汽车维修技术与故障诊断指南
- 畜牧业管理与动物疫病防控手册
- 拉森钢板桩打拔方案
- 2025-2026年考研政治道德与法治模拟试卷
- 2026年金融法规与政策测试卷
- 2025边缘计算与人工智能应用开发技术
- 《中国古代宗教》课件
- 2024年秋季学期新人教版八年级上册物理课件第一章 机械运动 1.4 速度的测量
- 新陕旅版五年级英语上教学计划
- DL-T5394-2021电力工程地下金属构筑物防腐技术导则
- 教科版科学三年级下册第一单元《 物体的运动》测试卷附答案(黄金题型)
- 长护险信息管理制度
- 译林版小学英语二年级上册全册课件
- GB/T 15820-1995聚乙烯压力管材与管件连接的耐拉拔试验
- 本科毕业论文的写作课件
- 技术的性质 课件 高中通用技术苏教版(2019)必修《技术与设计1》
评论
0/150
提交评论