已阅读5页,还剩58页未读, 继续免费阅读
(管理科学与工程专业论文)面向对象软件内嵌探针测试的应用研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 软件内建自测试( b u i l d i n s e l f - t e s tf o rs o f t w a r e ,b i s tf o rs o f t w a r e ) 是软件测 试和可测性设计研究领域中提出的一种新方法,将其改称为软件内嵌探针测试 ( b u i l d i n s e l f - p r o b e t e s tf o rs o f t w a r e ,b i s p tf o rs o f t w a r e ) 更为贴切。软件内嵌探 针钡4 试主要应用于类测试、集成测试和异常测试。 与基于程序或规格说明的面向过程软件的测试不同,面向对象软件的测试是 基于状态的。软件内嵌探针测试适用于基于状态的面向对象软件的测试。 软件内嵌探针测试的工作原理是在被测对象中插入探针函数,将对象的结束 状态、输出数据记录到指定的文件,以确定被测对象是否处于正常状态。 软件内嵌探针测试的基本构成是:探针模板部分和常规测试部分。前者为测 试人员插入探针函数的程序框架,后者则是黑盒测试和白盒测试的应用。 本论文研究的重点置于探针函数库的扩充、探针函数的实现和面向对象软件 的测试策略,意在构筑一个基本的应用框架,提供一种实用的测试方法。 设计断言、扩充探针函数库、在n e t 平台上实现探针函数和总结亟向对象 软件的测试策略是本论文的主要创见。断言探针函数可用于类内方法断言和类 断言的设计。在原有的断言探针函数、条件覆盖探针函数、分支覆盖探针函 数、路径覆盖探针函数的基础上,提出一种新的探针函数内存记录探针函 数。探针的具体实现采用n e t 平台,并应用数据库技术中的存储过程作为应用 程序和数据库之间的接口,以提高探针函数的性能。面向对象软件的测试策略 之关键是测试点位置的确定和探针函数的插装策略。进行类内方法测试时,将 测试点分为四种,并分别论述适用于每种测试点位置的探针函数的设置。进行 类测试时,要遵循基于状态的测试流程,响应矩阵、一致性测试包和潜行性测 试包的设计也非常重要。对贯穿全文的案例一一“哲学家就餐”问题进行测 试、查找故障原因,并提出改进建议。软件内嵌探针测试管理强调测试人员和 丌发人员之间的互动,尽量使软件故障和缺陷在软件开发的早期被处理。 本论文的实用性体现在总结了一套软件内嵌探针测试应用于面向对象软件测 试的应用方法,使测试过程更加简捷、清晰、有效。 关键词:软件内嵌探针测试;探针函数;断言;面向对象软件;测试管理 a p p l i e dr e s e a r c ho nb u i l t - i n - s e l f - p r o b e - t e s t i no 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 b s t t a c t b u i l d - i n s e l f - t e s tf u rs o f t w a r e ( b i s tf o rs o f t w a r e ) ,w h i c hi sm o r ea p p r o p r i a t ef u r t h es t u d yi fr e n a m e db u i l d - i n s e l f - p r o b e - t e s tf u rs o f t w a r e ( b i s p tf u rs o f t w a r e ) ,i sa n e wc o n c e p tc o m i n gf r o mt h er e s e a r c hf i e l do fs o f t w a r et e s t i n ga n dt e s t a b i l i t yd e s i g n b i s p ti sa p p l i e dt ot h ec l a s st e s t i n g ,i n t e g r a t et e s t i n ga n d e x c e p t i o nt e s t i n g t h ed i f f e r e n c eb e t w e e nt h et e s t i n gp r o c e d u r e - o r i e n t e ds o f t w a r ea n dt h eo o t e s t i n g p r o g r a mw h i c hi sb a s e do nt h es t a t e si st h a tt h ef o r m e ri sb a s e do nt h ep r o g r a ma n dt h e s p e c i f i c a t i o n t h em e t h o do fb i s p tf u rs o f t w a r ei sa p p l i e dt ot h es t a t e - b a s e d0 0 t e s t i n g t h e w o r k i n gp r i n c i p i u mo fb i s p t f u rs o f t w a r ei si n s e r t i n gt h ep r o b ef u n c t i o ni n t o t h eo b j 鲥t ob et e s t e da n dr e c o r de n ds t a t e sa n do u t p u td a t ai n t os p e c i f i e df i l e si no r d e r t of i n do u tw h e t h e ro rn o tt h es t a t e sa r ec o r l e c t b i s p tf o rs o f t w a r ei sm a i n l yc o m p o s e do ft w op a r t s :t h ep r o b et e m p i a t ea n dt h e r e g u l a rt e s t t h ef o r m e ri saf r a m e w o r ki nw h i c ht e s t e r si n s e r tt h ep r o b ef u n c t i o n sa n d t h el a t t e ri sa na p p l i c a t i o no ft h eb l a c kb o xt e s to rt h ew h i t eb o xt e s t t h ek e y s t o n eo ft h i sp a p e ri se x t e n d i n gt h ep r o b ef u n c t i o nl i b r a r y , i m i p l e m e n t i n g s o m ek i n d so fp r o b ef u n c t i o n sa n dd e v e l o p i n gt h es t r a t e g i e so ft e s t i n go os o f t w a r e w h i c hi si n t e n d e dt oc o n s t r u c taf u n d a m e n t a la p p l i c a t i o nf r a m e w o r ka n dp r o v i d ea p r a c t i c a lt e s t i n gm e t h o d t h em a i ni n n o v a t i o n so ft h ep a p e ra r ea sf o l l o w s :d e s i g n i n ga s s e r t i o n ,e x t e n d i n g p r o b ef u n c t i o nl i b r a r y , i r t i p l e m e n t i n gt h e mo nt h ep l a t f o r mo f n e t , a n ds u m m a r i z i n g t h et e s t i n gs t r a t e g i 髂o fo b j e c to r i e n t e ds o f t w a r e t h ea s s e r t i o np r o b ef u n c t i o ni su s e d t od e s i g nt h em e t h o da s s e r t i o ni n s i d eo fc l a s s e sa n dc l a s sa s s e r t i o ni t s e l f an e wk i n d o fp r o b ei sp u to u tw h i c hi sc a l l e dm e m o r y r e c o r dp r o b ef u n c t i o no nt h eb a s i so f a s s e r t i o np r o b ef u n c t i o n ,c o n d i t i o no v e r l a yp r o b ef u n c t i o n ,b r a n c ho v e r l a yp r o b e f u n c t i o na n dp a t h - o v e r l a y i n gp r o b ef u n c t i o n t h ep r o b ef u n c t i o n sa r er e a l i z e do nt h e p l a t f o r mo f n e ta n ds t o r i n gp r o c e d u r ei nd a t a b a s et e c h n o l o g yi su s e da st h ei n t e r f a c e b e t w e e nt h ea p p l i c a t i o na n dt h ed a t a b a s ei no r d e rt op r o m o t et h ep e r f o r m a n c e t h e i i k e yt ot h es t r a t e g i e so ft e s t i n g0 0s o f t w a r ei sh o wt oc h o o s et h ep l a c eo ft h et e s t i n g p o i n ta n dw h e r et oi n s e r tt h ep r o b ef u n c t i o n d u r i n gt h em e t h o dt e s t i n gi n s i d et h e c l a s s ,t h et e s t i n gp o i n t sa r ed i v i d e di n t of o u rk i n d sa n dt h ei n s t a l l a t i o no fe a c hp r o b e f u n c t i o nw h i c hm a t c h e st h el o c a t i o ni sd i s c u s s e d w h i l ed u r i n gc l a s s e st e s t i n g , t h e d e s i g no fr e s p o n s em a t r i x ,c o n s i s t e n c yt e s t i n gs u i t ea n ds n e a kt e s t i n gs u i t ea r cv e r y i m p o r t a n t 。t h er e a s o no fe t o g si sf o u n do u tf r o mt h er e s u ro f “p h i l o s o p h e rr e p a s t a n dt h es u g g e s t i o na n ds o l u t i o ni sp r o v i d e d m a n a g e m e n to fb i s f tf o rs o f t w a r e e m p h a s i z e st h ei n t e r a c t i o nb e t w e e nt h et e s t e r sa n dt h ed e v e l o p e r sf o rt h ee l t o g sa n d b u g st ob ed i a g n o s e da ti n i t i a ls t a g e so ft h ed e v e l o p m e n tc y c l ea ss o o na sp o s s i b l e i ti sas e to fb i s p ts o f t w a r et e s t i n gm e t h o d sg e n e r a l i z e df o r0 0t e s t i n gt h a t r e p r e s e n t st h ep r a c t i c a b i l i t yo ft h i sp a p e rw h i c hm a k e st h et e s t i n gp r o c e d u r ec l e a r e r , m o r ei n t e l l i g i b l ea n dm o r ec o n v e n i e n t k e y w o r d s :b i s p tf o rs o f t w a r e ;p r o b ef u n c t i o n ;a s s e r t i o n ;o b j e c t e d o r i e n t e d s o f t w a r e ;t e s t i n gm a n a g e m e n t 1 1 1 大连海事大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:本论文是在导师的指导下,独立进行研究工作所取得的成果,撰写成 博士,硕士学位论文 :厘囱越筮毯住出建自型达丝廑旦鲤究:。除论文中已经注明引 用的内容外,对论文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。 本论文中不包含任何未加明确注明的其他个人或集体已经公开发表或未公开发表的成 果。 本声明的法律责任由本人承担。 论文作者签名:奔甲舟 b 厶年;月f 。日 学位论文版权使用授权书 本学位论文作者及指导教师完全了解“大连海事大学研究生学位论文提交、版权使 用管理办法”,同意大连海事大学保留并向国家有关部门或机构送交学位论文的复印件 和电子版,允许论文被查阅和借阅。本人授权大连海事大学可以将本学位论文的全部或 部分内容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编 学位论文。 保密口,在年解密后适用本授权书。 本学位论文属于:保密口 不保密口( 请在以上方框内打“”) 论文作者签名:茅哥母导师签名:静聋痒 f l e a :沁6 年;月卜日 第1 章绪论 自2 0 世纪6 0 年代以来,软件的程序设计方法可分为面向过程( p r o c e d u r e o r i e n t e d ) 和面向对象( o b j e c t - o r i e n t e d ) 两种。对应用面向过程设计方法开发的软 件所进行的澳4 试称为面向过程软件的测试( t e s t i n gp r o c e d u r e o r i e n t e ds o f t w a r e ) , 而对应用面向对象设计方法开发的软件所进行的测试称为面向对象软件的测试 ( t 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 e ) 。 1 1 面向过程软件的测试技术 根据测试用例的设计原理不同,面向过程软件的测试可分为白盒测试和黑 盒测试。 若测试规划是基于产品的内部结构,目的是检查内部操作是否按规定执 行,软件各个部分功能是否得到充分实现,则将这种测试方法称为自盒测试 ( w h 沁b o xt e s t i n 酚。自盒测试又称为结构测试、逻辑驱动测试或基于程序的测 试,它是一种从程序员观点出发的测试。用这种方法进行测试时,被测对象可 视为一个敞开的盒子。白盒测试可用于分析程序的内部结构,它依赖于对程序 细节的严密检验,针对特定的条件和循环变量而设计测试用例,对程序的逻辑 路径进行测试。白盒测试一般被用来检验程序不同位置的状态,以判定其实际 情况是否和预期的状态相一致,因此,常被用于单元测试f 1 - 2 。 若测试规划是基于产品的功能,目的是检查程序各个功能是否能够实现, 并检查其中的功能错误,则将这种测试方法称为黑盒测试( b l a c kb o xt e s t i n g ) 。 黑盒测试方法又称为功能测试、数据驱动测试和基于规格说明的测试,它是一 种从用户观点出发的测试。用这种方法进行测试时,被测对象可视为一个黑 盒,在不考虑程序内部结构和特性、测试人员只知道该程序输入和输出之间的 关系的情况下,依据能够反映这一关系的需求规格说明,来确定测试用例和推 断测试结果的正确性。黑盒测试方法一般被用来确认软件功能的正确性和可操 作性,因此,常被用于集成测试、确认测试和系统测试【l _ 2 i 。 对于面向过程软件的测试,研究人员根据黑盒测试的被测对象不透明的特 点研究出边界测试、等价类测试、基于决策表的测试等技术,根据白盒测试的 被测对象完全透明的特点研究出路径测试、数据流测试等技术1 3 1 。为提高测试的 有效性与效率也开发了多种测试工具,例如,b e n d e r a s s o c i a t e s 公司开发的 s o f l t e s t 功能测试数据生成工具;p a t a s o f l 公司研制开发的p a r a s o f tc + + t e s t 单元 测试工具;i n t e r a a t i o n a ls o f t w a r ea u t o m a t i o n 公司提供的p a n o r a m ac c + + 测试 数据生成工具;r a t i o n a l 公司的r a t i o n a l 系统测试组件;p a r a s o f l 公司研制开发 的p a r a s o f li n s u r e + + 自动故障检测系统等等f 4 j 。经过长期的实践,面向过程软件 的测试方法已经趋于成熟。 1 2 问题的提出:面向对象软件测试的困境 早期的软件开发设计领域采用面向过程的程序设计方法。自上世纪年代 以来,面向对象逐渐取代了面向过程的地位而成为程序设计方法的主流,其继 承性、多态性、封装性和动态链接等特性大大提高了软件开发的可重用性和易 维护性。在软件工程领域,对面向对象方法与技术的研究得到广泛重视,但研 究的重点和成果主要集中在面向对象分析与设计方面( 即软件开发的前期) ,相 形之下,对面向对象软件测试技术的研究则尚显薄弱1 5 1 ,远远落后于软件工程 实践的需要,目前还没有套成熟有效的针对面向对象软件的测试方法。 自盒测试与黑盒测试已经成为面向过程软件测试中很成熟的技术,但是将 之应用于面向对象软件的测试却暴露出诸多不足。究其原因主要有: ( 1 ) 单元测试的概念发生了根本的改变。面向过程软件的程序结构是由功 能模块组成的,单元测试的基本对象是单个模块( m o d e l ) ,完成的工作是保证模 块正常运行。面向对象软件的程序结构是将数据及对数据的操作( 称之为方法, 本论文为了将之与浸4 试方法楣区剐,以下统称类内方法) 封装在一起,单元测试 的基本对象是类( c l a s s ) ,完成的工作是保证类内方法( m e t h o d ) 的正常运行和类内 方法之间的正确交互、数据成员( d a t a ) 的正确修改、父类( p a r e n t c l a s s ) 与子类 f c h i l d c l a s s ) 方法之间的正确交互i l 】。 ( 2 ) 封装限制了对象属性对外的透明性和外界对它的操作权限。封装避免 了对数据的非法操作,有效地防止了故障的扩散。但另一方面,封装机制也给 测试数据的生成、测试路径的选取以及测试结构的分析带来了困难1 6 - ? j 。 ( 3 ) 继承增加了故障的传播几率。继承实现了子类共享父类中定义的类内 方法和数据,同时也定义了新的特征。子类存在于新的环境中,父类的正确性 不能保证子类的正确性。继承使程序的重用性得到了提高,但也使故障的传播 几率增加。所以,在面向过程软件的测试过程中,通常考虑的是独立函数 ( f u n c t i o n ) 的行为特征,而在面向对象软件的测试过程中还要考虑基类函数、继 承函数的行为特征。对有继承关系的两个类进行的测试是面向对象软件测试工 作的重点和难点 6 l l s 。 ( 4 ) 动态绑定增加了系统运行中可能的执行路径。面向对象软件没有层次控 制结构,而且相互调用的功能分布在程序的不同类中,类通过消息相互作用提供 服务,类相互依赖紧密,这样,增加了蔼向对象软件的不确定性,也给覆盖率的 统计带来了困难。 ( 5 ) 依赖问题改变了原有的集成测试策略。对于面向过程软件的具有层次 结构的模块来说,自上向下或自下向上的集成测试策略都十分有效。但在面向 对象软件中,由于继承、关联、类嵌套和动态绑定等关系,形成了更多的依赖 问题。面向过程软件中存在的依赖关系主要有:变量之问的数据依赖:模块之 闯的调用依赖;变量与其类型之间的定义依赖;模块与其变量之间的功能依 赖。面向对象软件除存在上述依赖关系外,还存在的依赖关系有:类与类之间 的依赖;类与操作之间的依赖;类与消息之间的依赖;类与变量之间的依赖; 操作与变量之间的依赖;操作与消息之间的依赖;操作与操作之间的依赖。1 8 】 一个类不可避免地依赖于其它的类,从而导致结构复杂,很难采用面向过程软 件的自上向下或自下向上的集成测试策略。 可见,面向过程软件的测试方法很难应用于面向对象软件的测试。寻找适用 于面向对象软件测试的实用方法是一项很有现实意义的任务。 1 3 面向对象软件测试的特征 面向对象软件被设计成一系列对象,共同作用于某一个解决方案i 叭。软件的 执行路径依赖于各个对象的状态和行为,即对于同一对象的不同状态,相同的消 息可能触发不同的响应,因此,面向对象软件的测试是基于状态的,而面向过程 软件的白盒测试是基于程序结构的,黑盒测试则是基于规格说明的。基于状态的 测试流程如图1 1 所示i 埘。 在进行面向对象软件的测试时,首先使被测对象处于某一初始状态,再输入 测试数据,运行程序后,检查被测对象是否输出正确的数据并处于正确的结束状 态。 图1 1 基于状态的测试流程圈 f i g 1 1 f l o wc h a r tf o rs t a t e - b a s e dt e s t 面向对象软件的测试必须采用基于状态的测试方法。软件内嵌探针测试是一 种新的基于状态的测试方法。 1 4 软件内嵌探针测试的原理与方法 软件内建自测试( b u i l d - i n - s e l f - t e s tf o rs o f t w a r e ) 从软件断言( a s s e r t i o n ) 的概念 经过近4 0 年的发展演化而来。1 9 6 7 年,f l o y d 首次提出软件断言的概念【n 】。1 9 7 2 年,h o a 糟首次将断言引入对形式化描述和验证技术的研究,同年,h o a r e 又在 ( p r o o f o f c o r r o a n e 鹊o f d a t a r e p r e s e n t a t i o n s ) 一文中提出不变式( i n v a r i a n t ) 的早期 公式1 1 2 1 。1 9 8 1 年,s h a w 开发了支持断言的a l p h a r d 语言。1 9 8 6 年,h a y e s 在 s p e c i f i c a t i o nd i r e c t e dm o d u l et e s t i n g 一文中论述了测试中z 断言的作用。 1 9 8 7 年,s c h u l m a n 提出使用z 前置条件和后暨条件、类不变式和状态不变式的 形式化面向对象元模型。1 9 8 8 年,m e y e r 编写了e i f f e l 语言,它是第一个可用 的、提供内嵌断言支持的面向对象语言1 1 1 】。1 9 9 4 年,c h e o n 研究了如何用l a r c h 开发s m a l l t a l k 类断言【1 3 l 。1 9 9 5 年,m a r i c k 列举了很多识别c 和c + + 断言以及根 据这些断言开发测试实例的策略【1 4 】。1 9 9 6 年,k o r e l 阐述了如何用断言设计测试 实例【1 5 1 。1 9 9 7 年,m e y e r 在( o b j e c t o r i e n t e ds o f t w a r ec o n s t m c t i o n 中提出一些 有关在说明和语言中使用的断言【1 6 1 。1 9 9 8 年,p a y n e 将断言应用于j a v a 程序的测 试当中【切。2 0 0 1 年,r o b e r tvb i n d e r 出版专著 t e s t i n go b j e c t o r i e n t e ds y s t e m : m o d e l s p a t t e m s a n dt o o l s ) ) ,对断言及内嵌测试进行了系统的研究【1 1 】。2 0 0 2 年, 上海大学计算机学院徐拾义在深入研究硬件测试领域中最重要的可测性设计技术 a 测试流程如图1 1 所示i 。 在进行面向对象软件的测试时,首先使被铡对象处于某一初始状态,再输入 测试数据,运行程序后,检查被测对象是否输出正确的数据并处于正确的结束状 态。 圈1 1 基于状态的测试流程图 f i g 1 1 f l o wc h a r tf o rs l a t e - b a s e dk s 面向对象软件的测试必须采用基于状态的溯试方法。软件内嵌探针涌试是一 种新的基于状态的测试方法。 1 4 软件内嵌探针测试的原理与方法 软件内建自测试( b u i l d - i n s e r f - t e s tf o rs o f t w a r e ) 从软件断言( a s s e r t i o n ) 雕j 概念 经过近4 0 年的发展演化而来。1 9 6 7 年,f l o y d 首次提出软件断言的概念1 1 1 i 。1 9 7 2 年,h o e r e 首次将断言引入对形式化描述和验证技术的研究,同年,h o a f c 又在 ( p r o o f o f c o r r o c m o f d a t a r e p r e s e n t a t i o n s 一文中提出不变式( i n v a r i 蛐f ) 的早期 公式i ”。1 9 8 1 年,s h a w 开发了支持断吉的a l p h a r d 语言。1 9 8 6 年,h a y e s 在 s p e c i f i c a f i o nd i r e c t e dm o d u l et e s t i n g 一文中论述了测试中z 断言的作用。 1 9 8 7 年,s c h u l m a n 提出使用z 前壁条件和后置条件、类不变式和状态不变式的 形式化面向对象元模型。1 9 8 8 年,m e y e r 编写了e i f f e l 语言,它是第一个可用 的、提供内嵌断言支持的面向对象语言i “i 。1 9 9 4 年,c h e o n 研究了如何用l a r c h 开发s m a l l t a l k 类断言。1 9 9 5 年,m c k 列举了很多识别c 和c + + 断言以及根 据这些断言开发测试实例的策略| 1 4 l 。1 9 9 6 年,k o r e l 阐述了如何用断言设计测试 实例【”i 。1 9 9 7 年,m e y e r 在 o b j e c t - o r i e n t e ds o f t w a r ec o n s t r u c t i o n 中提出一些 有关在说明和语言中使用的断言【1 6 】。1 9 9 8 年,p a y n e 将断言应用于j a v a 程序的测 试当中i 。2 0 0 1 年,r o b e r tvb i n d e r 出版专著 t e s t i n go b j e c t - o r i e n t e ds y s t e m : m o d e l s p a t t e r n s a n dt o o l s ) ) ,对断言及内嵌测试进行了系统的研究【l “。2 0 0 2 年, 上海大学计算机学院徐拾义在深入研究硬件测试领域中最重要的可测性设计技术 上海大学计算机学院徐拾义在深入研究硬件测试领域中最重要的可测性设计技术 b i s t c o u i i d i n s e l f - t e s 0 与软件测试领域的内嵌测试之后,提出软件内建自测试方 法,并扩充了以断言为核心的内嵌测试,使之能实现断言跟踪、覆盖率统计、变 量跟踪、错误定位等多种功能f 1 8 1 。2 0 0 3 年,徐拾义将软件内建自测试方法应用于 面向对象探针模板的设计【1 9 l 。2 0 0 4 年,徐抬义在c + + 类测试描述语言的设计和 实现一文中阐述了软件内建自测试中探针模板库及测试路径的分析和浏试点的 设计,并使用c + + 语言将其部分实现例。 将“软件内建自测试( b u i l d i n s e l f - t e s tf o rs o f t w a r e ) ”改称为“软件内嵌探 针测试( b u i l d i n - s e l f - p r o b e - t e s tf o rs o f t w a r e ) ”更为贴切。所谓“自测试”即是无 须测试人员手动操作,而由探针函数自动生成测试用例、自动运行测试用倒、自 动输出测试结果,甚至自动与预期结果比较,换言之,全部的测试工作全部由探 针函数完成。但是,事实上探针函数并不能独立完成测试工作,还需要对被测对 象进行常规测试。因此,本论文将其改称为软件内嵌探针测试。 软件内嵌探针测试方法的内容框架如图1 2 所示,其基本构成是:探针模板 部分和常规测试部分。 探针模板部分( p r o b et e m p l e 0 是为软件开发人员提供的一套预先设计好的程 序框架,探针模板中已插入探针函数。探针函数类似于物理仪器电压表中的探针 ( 这种探针的作用是测量导体某两点之间的电位差,并将结果反映到电压表的显 示屏上) ,探针函数的作用是将被测对象某一点处的相关信息反映到指定的文件 中。软件开发人员在设计好的探针模板中填写程序,运行插装后的被测对象,可 以获得对象的结束状态、输出数据以及四种覆盖率( 路径覆盖率、分支覆盖率、 语句覆盖率、条件覆盖率) 等信息,便于测试人员观察,以确定被测对象是否处 于正常状态。 常规测试部分包括黑盒测试和白盒测试,是测试人员采用面向过程软件的测 试方法对被测对象进行的测试。 软件内嵌探针测试必须能够检查:类内方法的入 2 1 条件和出口条件;所有类 内方法和所有对象的状态;在父类和子类中成立的关系。软件内嵌探针测试主要 用于软件开发阶段的类测试、集成测试和异常测试【l 9 1 。 探 针 模 板 部 分 常 规 测 试 部 分 图1 2 软件内嵌探针测试的内容框架 f i g 1 2 f r a m e w o r ko fb i s p tf o rs o f t w a r e 1 5 研究内容和框架结构 1 5 1 研究方法的选择 本论文沿着“软件内嵌探针测试概念的界定一探针函数的实现一面向对象 软件测试的插装策略的探讨”的主线而层层递进,采用的研究方法是“理论分析 + 案例验证”,即经过系统的研究,概括出一种应用方法,再使用案例来验证这种 方法是否有效与实用。本论文使用一个贯穿全文的经典案例,以便更简明清楚地 说明探针函数的用法和探讨面向对象软件测试的插装策略。 1 5 2 研究内容框架 本论文的研究框架如图1 3 所示,重点阐述探针函数的功能及其实现、面向 对象软件测试的插装策略和软件内嵌探针测试的测试管理三个主题。 根据本论文的研究框架,章节设置如下: 第1 章阐述选题的必要性和研究框架。综述面向过程软件的测试技术;通过比 较面向过程软件的测试与面向对象软件的测试之间的异同,得出“面向过程软件 的测试技术已经不能适应面向对象软件测试的需要”的结论;阐述自1 9 6 7 年以 来软件内嵌探针测试方法发展的历程:总结软件内嵌探针测试方法的理论结构, 同时说明论文的研究框架;概述贯穿全文的案例“哲学家就餐”问题和本研 究的实验环境。 第2 章第3 章 图1 3 论文研究框架 f i g 1 3 r e a r c ho nt h ef r a m e w o r ko ft h ep a p e r 第2 章讨论各类探针函数的功能及其实现。阐述探针函数的作用原理,并设 计各类探针函数所调用的测试基类函数;分别讨论各主要探针函数的功能,并 在原有的断言探针函数、分支覆盖探针函数、条件覆盖探针函数和路径覆盖探 针函数的基础上提出一种新的探针函数内存记录探针函数;在n e t 平台上 使用雠语言实现五种探针函数;选择本研究适用的清除探针函数的方法。 第3 章探讨测试点的选择和探针函数的插装。阐述软件内嵌探针测试在类内 方法测试、类测试中测试点的选择和探针函数的插装方法;论述探针函数的插 装镶略对集成测试和系统测试的影响;举例说明类内方法测试和类测试的步 骤。 第4 章分析软件内嵌探针测试管理的特点。软件内嵌探针测试管理与面向过 程软件的测试管理有着显著的区别,主要体现在测试过程的管理。 第5 章研究结论。构建软件内嵌探针测试应用于面向对象软件测试的应用方 法并汇总本研究的主要结论。 1 5 3 案例说明:“哲学家就餐”问题 为说明与研究计算机操作系统中的进程同步问题,常被引用的经典案例是 “哲学家就餐( p h i l o s o p h e rr e p a y ) ”问题,其内容为:一组哲学家围坐在一个圆 桌旁。每个哲学家的左边只有一支筷子。他们用餐完毕之后就会停下来思考, 思考了一段时问会感到饥饿。然而,他们必须同时获得左边和右边的筷子才能 继续用餐。当某个哲学家只拿有一支筷子时,会等待另一支筷子。当每个哲学 家都只拿到一支筷子时,就会发生死锁。传统的解决死锁问题的方法是引用管 程( m o n i t o r ) 的概念,而本论文所引用的“哲学家就餐”问题使用c 撵中 s y s t e m t h r e a d i n g 命名空间中m u t e x 类型的数组变量c h o p s t i c k s 为每个哲学家声 明两个信号量r i g h t c h o p s t i c k 和l e f l c h o p s t i c k ,在主程序中使用了3 个m u t e x 类型的变量赋值给它,用w a i t h a n d l e 来实现对筷子的独占访问,从而,成功地 解决了死锁的问题。 本论文选择“哲学家就餐”问题作为分析案例是基于两点考虑:该问题是 计算机操作系统领域中的经典问题,为人们所熟知:本论文所重点讨论的五种 探针函数可在此例中得以综合运用。 支持本论文研究的实验环境条件设计如下: 前台程序在m i c r o s o f tv i s u a ls t u d i o n e t2 0 0 3 环境下实现。n e t 是一种在 w i n d o w s 上编程的新构架。c 挣是与之相适应的编程语言之一,它可以有效应 用n e tf r a m e w o r k 中的所有新特性和在最近2 0 年来兴起的面向对象的编程方 法。在多数情况下,用c # t g 写程序要比当前流行的c + + 和v b 效率更高,因此, 用铹实现探针函数更为有利。 后台数据库使用技术比较成熟的m i c r o s o f ts q ls e r v e r 。在数据库中定义了两 个基本表:断言表a s s e r t t a b l e 和基类表t e s t b a s e ,前者用于专门记录断言探针函 数的测试结果,后者用于记录分支覆盖探针函数、条件覆盖探针函数、路径覆盖 探针函数和内存记录探针函数的测试结果。在两个基本表的基础上定义了5 个视 图:断言视图a s s e r t v i e w 、分支覆盖视图b r a n c h c o v e r 、条件覆盖视图 c o n d i t i o n c o v e r 、路径覆盖视图p a t h c o v e r 、内存记录视图w o r k i n g s e t ,分别记录 各探针函数所输出的被测对象的所在路径、测试时间、项目号、模块号、测试人 员姓名及测试结果等相关信息。 前居台的连接使用数据库技术中的存储过程。共设置五个存储过程:断言录 入存储过程a s s c r t l n s c r t 、分支覆盖录入存储过程b r a n c h c o v c r i n s c r l 、内存值录入 存储过程w o r k i r l g s e f l n s c r t 、路径覆盖录入存储过程p a t h i n s c r t 、条件覆盖录入存 储过程c o n d i t i o n c o v c f l n s c r t 。本研究采用存储过程作为应用程序和数据库之间的 接口主要是基于提高探针函数性能的考虑:存储过程是s q l 语句的预编译集合, 在一次编译后可以执行多次。而不必熏新编译,所以执行存储过程可以提高程序 编译和运行的速度并节省系统资源。 第2 章探针函数的功能及其实现 如第1 4 节所述,自2 0 0 2 年迄今,徐拾义对路径覆盖探针函数、分支覆盖 探针函数、条件覆盖探针函数、断言探针函数的工作原理进行了有价值的探讨, 并在c + + 平台上实现了分支覆盖探针函数。本论文将对断言探针函数、分支覆盖 探针函数、条件覆盖探针函数、路径覆盖探针函数、内存记录探针函数的工作原 理进行论述,并在n e t 平台上将其全部实现。 2 1 探针函数的作用原理 探针函数( p r o b ef u n c t i o n ) 是一个记录测试相关信息并将这些信息输出到指 定文件中的函数。通过运行插装了探针函数的面向对象程序,可以将对象的结束 状态、输出数据、路径覆盖率、分支覆盖率、语句覆盖率、条件覆盖率以及某点 处的内存值等信息输出到指定位景,便于测试人员观察,以确定被测对象是否处 于正常状态。 根据所完成的功能不同,探针函数可分为三类:基于覆盖率统计的探针函 数、基于程序控制观察的探针函数和基于故障原因查找的探针函数【1 9 l 。基于统计 覆盖率的探针函数主要用于输出常规测试部分的白盒测试的结果;基于观察程序 的探针函数主要用于输出常规测试部分的黑盒测试的结果;基于查找故障原因的 探针函数主要用于查找故障的原因并确定故障的位置。本论文实现的五种探针函 数中,前三者用于覆盖率统计,断言探针函数用于程序观察,内存记录探针函数 用于判断是否存在内存泄露故障。 如图1 2 所示,探针函数库中除五种探针以外,还包括初始化函数和清除函 数。初始化函数的作用是实现共有字段初始化和数据库连接的功能,可用一个如 下所示的初始化基类函数在n e t 平台上予以实现,探针函数的清除方法将在第 2 7 节讨论。 初始化基类源程序 u s i n gs y s t c m ; u s i n gs y s t e m d a t a ; u s i n gs y s t e m d a t a s q l c l i e n t ; n a r n e s p a c et e s t b a p u b l i cc l a s st e s l b a s e p r i v a t e s t r i n gt e s t i d = ”: p r i v a t e s t r i n gs o u r e e f i l e = ; p r i v a t ed a t e t i m eh t i m e = d a t e t i m e n o w ; p r i v a t es t r i n gt e s t e r n a m e = ”: p r i v a t es t r i n gp m j c c t l d = t - : p r i v a t es t r i n gm o d e l l d = ”: d a t a c o n n e c tc o m l t i= i l e wd a t a c o n n e c t ( ) ; p r o t e c t e dv o i do p e n ( ) c o m m o p e n ( ) ; p u b l i cv o i dc l o s e ( ) 记录测试号 记录被测对象路径 ,记录测试时间 记录测试人员姓名 ,记录项目号 价a 录模块号 台q 建数据库连接 腑开链接 e o m m d i s p o s e ( ) ;,关闭数据库连接 p r o t e c t e dv o i dt e s l i d ( s t r i n gt e s t i d ) t h
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司年产65万立方米水泥稳定土生产项目可行性研究报告模板-立项备案
- 2026年湖南省中考英语听力与口语模拟试题
- 2025-2026年上海市高三数学概率统计模拟试题
- 2025-2026年人教版六年级英语下册第12单元阅读理解测试卷
- 2026年人教版高中物理选修3-5核物理同步练习题
- 2025-2026年湖南省苏教版二年级数学下册第2单元乘法口诀测试卷
- 2025-2026年电子元器件检测与识别专项训练题库
- 2025-2026年北京市初中物理力学计算与应用题库
- 2025-2026年浙江省苏教版初中数学代数运算技巧专项题库
- 2025-2026年四川省苏教版初中物理第12章力学综合测试卷
- 2026泸州市兴泸水务(集团)股份有限公司第二次公开招聘考试备考试题及答案详解
- 2026年江西省吉安市政务服务中心(窗口人员)招聘笔试模拟试题及答案详解
- 2026年秋季小学开学第一课 创新思维与科学精神课件
- (正式版)DB63∕T 2571-2026 森林资源管护网格划分及编码规范
- 1.2图幅线型字体及尺寸标注acA4A3A2A1A0-1.2.1图幅图标及会签
- 新高考物理一轮复习分层提升练习专题19 板块模型(原卷版)
- 翻译人员派遣协议范本
- GB/T 7744-2023工业氢氟酸
- 企业网络安全建设PPT完整全套教学课件
- 老年人辅助器具应用高职PPT完整全套教学课件
- 消费者行为学之自我概念与生活方式概述
评论
0/150
提交评论