




已阅读5页,还剩58页未读, 继续免费阅读
(计算机应用技术专业论文)BIST软件可测性系统中Checkpoint的设置.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上海大学硕士学位论文 ! b ! ! ! ! 蜓型! 坠! 婴! ! ! ! ! ! ! 塑g ! 垫望! ! ! ! 垡! 丝 摘要, 长久以来,软硬件测试就是彼此独立,各自发展的两个领域,两者之间几乎 没有任何联系。而事实上软硬件测试存在着许多共性,测试人员也已经自发地应 用了一些相似的测试方法,也就是说软硬件测试在某种程度上存在一致性。另一 方面,软件规模越来越大,测试也越来越困难。为了减轻测试负担,需要在程序 开发时就考虑测试问题,即进行可测性设计。 根据软硬件测试一致性的思想,借助硬件b i s t ( b u i l t - i n s e l f - t e s t ) 技术,本 文提出了软件b i s t 可测性设计新概念一在软件开发阶段,开发人员在预先设 定的模板中填充有利于测试的程序信息,软件根据这些信息自身生成测试用例测 试自己。 本文研究的主要内容c h e c k p o i n t 的设置是b i s t 软件可测性设计中的一个重 要模块。c h e c k p o i n t 的设置类似于硬件b i s t 技术中预埋测试电路位置的选择。 在软件中设置c h e c k p o i n t 可增强可控性和可观察性,并可减少代码和逻辑复杂 性。c h e c k p o i n t 的设置包括初始化( 即在一些显然要设置c h e c k p o i n t 的地方统一 预置c h e c k p o i n t ) 和人为调整两部分。本文建立了c h e c k p o i n t 初始化的规则,根 据这些规则,使用y a c c 和l e x 在b i s t 软件可测性设计框架中实现了 c h e c k p o i n t 的初始化。同时也提供了人为调整和管理c h e c k r i o i m 的接口。另外, 本文提出了函数切片的概念并实现了函数切片算法。函数切片是c h e c k p o i n t 初 始化规则中涉及的重要概念,是某一个函数相关函数的集合,在进行回归测试中 的集成测试时可减少无关函数的重复测试。 关键词:软件测试,b u i l t i n s e l f - t e s t ,可测性设计,c h e c k p o i n t ,函数切片 本研究得到国家自然科学基金的资助,项目编号为( 6 9 8 7 3 0 3 0 ,1 9 9 9 ) 和( 6 0 1 7 3 0 2 9 ,2 0 0 2 ) i i i 上海大学硕士学位论文 ! 堑! ! ! 坚型! 坐! ! 塑j ! ! ;! ! ! 业! ! ! ! ! ! ! 垡业 a b s t r a c t f o ra1 0 n gt i m e ,s o f t w a r et e s t i n ga n dh a r d w a r et e s t i n gh a v e b e e ni n d e p e n d e n to f e a c h o t h e lt h e r ea r es i g n i f i c a n t l yd i f f e r e n tt e c h n i q u e s ,t h e o r i e sa n dg o a l sd e v e l o p e di n t h e s et w ot e s tf i e l d s i ts e e m s 也a tt h e r ei sn or e s e m b l a n c eb e t w e e nt h e m i nr e a l i t y , m a n yw a y se x i s ti nc o m m o nb e t w e e nh a r d w a r ea n ds o f t w a r et e s t i n g ,a n ds e v e r a lt e s t m e t h o d sh a v eb e e na p p l i e di nb o t ht e s t i n g su n c o n s c i o u s l y t h a ti st os a y , t e s ta e c o r d i s i ne x i s t e n c e o nt h eo t h e rh a n d ,w i t ht h es o f t w a r e ss c a l ef e r m e n t i n g ,s o f t w a r e t e s t i n gi sb e c o m i n gm o r ea n dm o r ed i 伍c u l t i no r d e rt oe a s et e s tb u r d e n ,w en e e d t h i n k i n go f t e s tp r o b l e mw h i l ed e v e l o p i n gs o f t w a r e - - - d e s i g n - f o r - t e s t a b i l i t y b a s e do nt h ei d e ao ft e s ta c c o r da n dh a r d w a r eb i s t ( b u i l t i n s e l f - t e s t ) t e c h n i q u e , t h i s p a p e rp r o p o s e s an o v e la p p r o a c h ,b i s t - f o r - s o f t w a r e ,t o s o f t w a r e d e s i g n f o r - t e s t a b i l i t y w h i l ed e v e l o p i n g ,d e v e l o p e r si n s e r tu s e f u lp r o g r a mi n f o r m a t i o n i n t ot e m p l a t e ,w h i c hi st h ek e yp o i n to fb i s t - f o r - s o t t w a r ej u s tl i k ead a t a b a s e u s i n g t h i si n f o r m a t i o n ,s o f t w a r ei t s e l f g e n e r a t e st e s tc a s e sa n di m p l e m e n t ss e l f - t e s t i n g t h em a i np a r to fm i sr e s e a r c h ,c h e c k p o i n t s ,w i t ht h e i ra r r a n g e m e n ti sa ni m p o r t a n t m o d u l e o ft h er e s e a r c ho nb i s t - f o r - s o f t w a r e s e t t i n gc h e c k d o i n t i n b i s t - f o r - s o f t w a r ei ss i m i l a rt oc h o o s i n gt h es i t ew h e r es e l f - t e s tc i r c u i ts h o u l db e p l a c e di na d v a n c e c h e c k p o i n tc a l le n h a n c ec o n t r o l l a b i l i t ya n do b s e r v a b i l i t ya sw e l l a sd e c r e a s ec o m p l e x i t yo fl o g i ca n dc o d e s e t t i n gc h e c k o o i n ti n c l u d e si n i t i a l i z a t i o n a n da r t i f i c i a lr e g u l a t i o no fc h e e k ! c i o i n t i nt h i sp a p e r ,s e v e r a lr u l e sf o ri n i t i a l i z i n g c h e c k p o i n ta r ee s t a b l i s h e d b a s e do nt h e s er u l e s ,w er e a l i z ei n i t i a l i z i n gc h e c k p o i n ti n t h ed e s i g n f o r t e s t a b i l i t yf r a m e w o r ko fb i s t - f o r - s o f t w a r ew i t ht h eh e l po fy a c ca n d l e x t h ei n t e r f a c ef o ra r t i f i c i a lr e g u l a t i n ga n dm a n a g i n gc h e c k r ) o i n ti sa l s os u p p l i e d 1 1 1a d d i t i o n t h ed e f i n i t i o no ff u n c t i o ns l i c ei sp u tf o r w a r di nt h i sp 印e ra n ds l i c i n g a l g o r i t h mi sg i v e n t o o f u n c t i o ns l i c i n gi s ak e yi d e ai n v o l v e di nc h e c k p o i n t i n i t i a l i z a t i o n t h es l i c eo fonef u n c t i o ni sas e to ff u n c t i o n st h a t 丽1 1b ei n f i u e n c e d w h e nt h i sf u n c t i o ni sc h a n g e d ,u s i n gf u n c t i o ns l i c ei sc a p a b l eo f r e d u c i n gt h en u m b e r o ff u n c t i o n sw h i l er u n n i n gi n t e g r a t i o nt e s t i n gi nt h ep h a s eo f r e g r e s s l o nt e s t i n g k e yw o r d s :s o f t w a r et e s t i n g ,b u i l t - i n s e l f - t e s t ,d e s i g n - f o r t e s t a b i l i t y , c h e c k p o i n t , f u n c t i o ns l i c e 上海大学硕士学位论文 ! 生! ! ! 型! 堂! ! 塑姿2 1 墨! ! ! g 垒! ! 型! ! ! ! 生生 1 1 软件测试 第一章引言 1 1 1 软件测试的概念和意义 1 9 8 3 年i e e e 提出的软件工程标准术语中给软件测试下的定义是:“使用人 工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的 需求或是弄清预期结果与实际结果之间的差别” 1 。这段定义明确地提出了软 件测试以检验是否满足需求为目标。软件测试在软件生存周期中占有非常突出的 重要地位,是保证软件质量的重要手段。根据b o e h m 的统计,软件开发总成本中, 用在测试上的开销要占3 0 到5 0 。这也就意味着一个大型的程序开发完成以后, 软件开发工作并未结束,因为后面几乎还有相当一部分工作要做。也就是说,还 要进行程序的测试。所谓程序测试就是通过给出测试数据,运行被测程序,将所 得结果与预期结果进行比较,从而判断程序的正确性( 参看图1 1 ) 。因而,可 以说软件测试在软件开发中的地位仍然是其它质量保证手段所不能代替的。 1 1 2 软件测试的难度 图1 1 软件测试 比较。二j 舭结果 软件测试是一个n p 完全问题,软件测试的难点确实较多,其复杂度远远超 过硬件测试。比如,人们可以使用较为简洁的方法计算出一个硬件系统中的可能 、刊u 葑 解虽 r_一 上海大学硕士学位论文 ! b ! 1 2 ! g 型! 坠! ! 女塑! 垡! ! 竖些! ! ! 垃! ! 坐z 出现故障( 如s t u c k a t 型) 的总数,然而我们却难以估计出一个软件( 即使是较小的 应用软件) 中可能存在的故障数。这就对软件测试造成极大的困难。其难点主要 有: 不彻底性:不论是黑盒测试还是白盒测试,由于测试输入数据数量巨大, 都不可能进行彻底的测试。 复杂性:无法估计错误总数,难以设计测试用例和预测预期结果。 是软件生存期中工作量最大和费用消耗最大的环节。 1 1 3 软件测试现状 在测试领域中,由于发展不平衡,软件测试技术的研究和开发又明显地落后 于硬件测试。虽然软件测试的发展起步较晚,但近年来受到越来越多的重视。测 试方法和测试策略的理论日渐成熟,各种测试工具也相继涌现。但是,随着软件 开发技术的不断发展,面向对象技术、软件重用技术以及网络和i n t e r a c t 的广 泛应用等都对软件测试技术提出了新的挑战。事实上,软件测试领域中还存在许 多有待解决的问题:软件的动态故障和静态故障的模型、软件测试和软件可靠性 之间的关系、软件测试用例的自动生成以及软件的检测效果和故障覆盖率的评估 等都是必须尽快研究和解决的关于软件测试方面的问题。因此,当前国内外的测 试专家们对软件测试和软件可靠性问题的严重性越来越重视。软件工程的规模在 无限膨胀,软件的复杂度也在迅速增加,直接造成了测试( 包括对系统软、硬件 的测试和验证等) 成本的直线上升。为了降低测试开发,提高测试效率,测试自 动化技术和可测性设计的研究也应运而生。 1 2 可测性设计 1 2 1 硬件可测性设计 随着超大规模集成电路的发展以及“纳米”时代的到来,电路测试变得十分 复杂和困难,测试生成的费用呈指数增长。高度集成的电路内部包含了大量的逻 辑电子部件,但是输入和输出引脚却十分有限。由于电路内部的逻辑部件的输入 和输出要经过很多中间的部件,因此测试人员很难控制电路内部的逻辑部件和观 察它们的状态。硬件测试人员考虑解决这个问题的方法是增加电路的可控性和可 观察性,即实现可测性设计,在设计阶段就开始考虑如何对电路进行测试,并将 一些实用的可测性技术引入到芯片设计中,以降低测试生成的复杂性。边界扫描 b s ( b o u n d a r ys c a n ) 和内建自测试b i s t ( b u i l t i n - s e l f - t e s t ) 是目前可测性 上海大学硕士学位论文 ! 韭! ! ! ! g j 鲤! 堂! ! j ! ! j ! ! ! ! 翌g b 堑! ! i ! ! 垡! z 设计的两种主要技术 2 。 1 2 2 软件可测性设计 软件测试的历史虽然不长,但也形成了许多行之有效的测试方法和测试策 略。从不| 剐约角度划分,软件测试方法有静态测试和动态测试、黑盒测试和白盒 测试等。黑盒测试具体有等价类划分、边界值分析等,白盒测试具体有循环测试、 条件测试、分支测试等。但这些方法都是在程序已经编制完成后再考虑测试的。 同硬件测试类似,相对于复杂的软件内部结构,用于测试的输入和输出也是十分 有限的。因此,软件测试研究者提出了软件可测性设计的概念,即在软件设计时 考虑测试的问题。具有高可测性的软件其内部故障易于暴露。 软件可测性的具体含义主要包括 3 】: 可操作性一运行越好,被测试的效率越高 可控性一对软件的控制越好,测试越能被自动执行与优化 可观察性一一你所看见的就是你所测试的 简单性需要测试的内容越少,测试的速度越快 易理解性得到的信息越多,进行的测试越灵巧 可分解性通过控制测试范围,能够更快地分解问题,执行更灵巧的再 测试 稳定性改动越少,对测试的破坏越小 可测性设计能降低测试用例的生成、测试的执行、测试结果的分析、故障的 排除等测试阶段的开销。 1 3 本文的研究内容和目标 本文的研究内容是徐拾义教授领导的国家自然科学基金项目一“软件可 测性设计新概念研究一b i s tf o rs o f t w a r e ”的一部分。 众所周知,软硬件不同的特性决定了软硬件的测试技术、测试理论和测试目 的存在很大不同。硬件测试主要解决电路生产时造成的故障,外界物理因素的影 响造成的故障,而不是设计故障。测试时每一个逻辑部件都必须检测。软件测试 并不关注部件( 如i f 或者w h i l e 语句) 是否正常,而是检测这些语句组合在一起 是否达到预期功能。软硬件测试似乎没有任何共通性,它们之间似乎有一条巨大 的鸿沟。 虽然软硬件测试存在着众多的不同点,但是通过我们深入的研究发现,事实 上软硬件测试同样存在着许多共同点。本文首先研究了软硬件测试的一些共性, 并总结了些测试人员自发应用的一些相似测试方法,从而论证了软硬件测试一 上海大学礞士学谴论文 ! 地! 韭删型! 卫壁妲丛;垫妫逝坐i ! 野1 娩 墩性熬蠢在。麸一致黢存在这个事实褥囊癌发,我织挺鑫了镶髓褒佟测试孛游 b i s t 可测性设计技术进行软件的可测憾设计的思想b i s t - f o r - s o f l w a r e ,成者称为 b i s ts d f t ( b i s ts o f t w a r ed e s i g n f o r - t e s t a b i l i t y ) 。接饕,零文主要磅突窝终决了 b i s ts d f t 实现过程中的如下问题: 1 可测性设计框架的建立为了实现b 裕苫s d f t ,嚣农程序野发过程审 考虑测试问题,我们需凄一个软件开发的框架,然后在这个框架中增加 测试功能。 2 c h e c k p o i n t 2 初始化规剐的建立可测性设计要求程序具有较高的可 控性和可观察性,为此我们需瑟在程序中安排c h e c k p o i n t ,c h e c k p o i n t 包括控制点和观察点。c h e c k p o i n t 的设鬣包括初始化和人为调熬两部分。 c h e c k p o i n t 初始化规则解决了在何处初始化c h e c k p o i n t 的问题。这部分还 疆密了滋鼗切籍的概念。 3 c h e c 印o i n t 的初始化知道了在何处初始化c h e c k p o i n t 后,辩要借助 y a c c 帮疆密工其实璇c 蜘i 嫩鹩祷始纯。 4 c h e c k p o i n t 的管理一c h e c k p o i n t 的管域主要通过树形控件来焱观显永 c h e c k p o i n t 豹控麓熹彝戏察点静墨次关系、增麓、瓣狳,戳及定位到稳 序中的具体位鼹。另外,可以调用模板,填充模板4 信息。 第二牵善建论涯了软硬终测试豹确存在蔷慕糖程度上戆一致性,然菇疆窭了 b i s t 软件可测性设计的思想并给出了其麓本结构。 第三章绘出了c h e c k p o i n t 约定义秘c h e c k p o i n t 黪裙始亿痰剩势实瑗了 c h e c k p o i n t 的设疑过程巾的初始化工作。 第联章提出了函数切片的概念,提供和实现了函数切片算法。函数甥冀是 c h e c k p o i n t 的设嚣中的一个重要概念。 第孤零主要讲述了c h e c k p o i n t 的管理,即嬲决了b i s ts d f t 实现邀程中的 第四个闻题。 第六章给出了一个实例,来例示不同测试阶段( 单元测试潮集成测试) 中 c h e c k p o i n t 设置的过程,戮及b i s ts d f t 框架中c h e c k p o i n t 的管理。 由于b i s ts d f t 要求程序开发人员增加额外的工作,开发的时候辅助完成 部分溺试工律。鬻藏,这部分工律越少越好。我们通过秘始耗c h e c k p o i n t ,统一 预置一些必要的c h e c k p o i n t ,可达到这个效果。同时系统窝有接口供开发人员设 鹫j 饔穆致c h e c k p o i n t ,保持灵活瞧,完成入为诱整。另务,寇我稻设计麓c h e c k p o i n t 设置视图框架中,通过双击c h e e k p o i n t 树形控件的控制点或观察点的节点, c h e c k p o i n t 黪垃嚣农程黟片錾藐蕊蘼遮瓣瘦,蠖予开发人员完成滋步豹工终。 2 c h e c k p o i n t 、控制点和理察点,参见本文缛三章 3 y a c c 和l i l y ,参戴本文第三毒 4 攥板,参见本文第= 章 4 上海大学硕士学位论文 ! 坠! ! 丝型! 苎! ! 垒壁! 垡墨! 塑墨! 型竺璺! 竖! ! ! 丝 第二章测试一致性和b i s t 软件测试 2 1 软硬件测试模型的一致性 虽然软硬件测试由于不同的特性很明显地存在巨大差异,然而我们研究发现 这两种测试之间还是存在共性的。即,软硬件测试存在一致性。软硬件测试的一 致性并不是指行为级硬件的验证和软件测试的相似性,而是指软件测试和门级硬 件测试的一致。 对于这两类测试,个好的测试用例都是应该能较容易地发现缺陷。它们都 是n p 完全问题,即测试规模随着软硬件规模的增长呈指数级增长。 另外,一些硬件故障模型可以对应到软件故障中去,而软件故障模型也可以 对应到硬件故障模型。比如, 硬件测试中的固定型故障类似于软件测试中的死循环; 要考虑时间因素的跃迁故障的测试则类似于实时软件系统的测试 4 ; 两类测试的可靠性增长模型也是相似的。软件可靠性增长模型定义软件 可靠性r 仞为在 o ,刀时段内无故障发生的概率8 _ z “,即r f 刁= e 。z “, 其中z ( 刁为失效率函数 5 】 6 】。而我们知道,硬件的可靠性增长符合负指 数分布p 。,其中a 是失效率,这和软件测试中的可靠性增长模型是相 似的: 面向对象软件的测试类似于时序电路的测试,两者都要关注“状态”。 面向对象软件中对象的成员特性代表对象的状态,而对象的状态又取决 于对象的操作。另一方面,对象操作的结果取决于对象先前的状态,并 且操作有可能改变先前的状态。这些和时序电路的测试是相似的,它们 都可以部分借助有限状态机来完成。随机选择或利用某些策略选择一些 输入然后检查有限状态机的状态来判断时序电路和面向对象软件是否存 在故障。 2 2 软硬件测试方法的一致性 尽管软硬件测试存在一致性,但是几乎没有软硬件测试方法是有意识地通过 彼此借鉴得来的。而事实上一些相似的测试方法在软硬件测试中已得到无意识 上海大学硕士学位论文 ! 熊! ! ! 坚型! ! 堕! ! 墅! ! ! ! ! ! ! g ! 璺! ! ! i ! ! 垡l 型 的应用。本节就列举这样的几种方法来说明软硬件测试的一致性的存在。 2 2 1 a dh o c 技术 a dh o c 技术是早期硬件可测性设计技术之一,包括增加测试点、电路划分等。 增加测试点是硬件所有可测性设计技术中最直接的方法 7 ,其主要思想就 是引出那些难以测试的节点作为测试点。测试时这些测试点作为控制点和观察点 直接由初始输入控制和初始输出观察。软件测试中,程序插装类似于这种方法。 在软件测试中,为了获取数据流和控制流的信息,软件测试人员常常在不破坏程 序逻辑完整性的基础上插入一些特殊语句作为探针。例如,在进行循环测试的时 候,在循环的开始和结束放置计数器就能知道循环执行了多少次。很显然,这些 语句提高了程序的可观察性。 而电路划分思想的提出是基于这样的事实:测试生成和故障模拟的复杂性正 比于电路中门数的三次方。因而把电路划分为几个可以独立测试的子电路可以大 大降低测试开销。而在软件测试中,程序划分也被广泛使用,程序划分后成为一 些程序单元如函数、过程、循环结构等。通过划分,程序功能、结构和代码都变 得更加清晰容易,因而更容易发现问题进行更好的测试。额外的代价就是要构造 桩模块和驱动模块5 ,然而实践表明由此给测试带来的便利要远远大于这些额外 代价。 2 2 2 随机测试 由于软硬件测试都是n p 完全问题,因而穷举测试是不可行的。但是在软硬 件测试中随机测试仍然非常有用,尤其是在测试初期,因为随机测试十分自然 并且避免了要考虑测试用例的生成。特别是在黑盒测试中,由于内部执行细节 不可知,随机测试有时候会成为最佳选择。但是随机测试的致命弱点是测试效 率会随着测试的深入变得越来越低,在测试后期会不可避免地挑选以前已经用 过的输入并有可能发现前面已经发现了的故障。因而在实际应用中,通常采取 反随机、伪随机或相似的测试方法 8 。这些方法一般定义h a m m i n g 或c a r t e s i a n 最大距离从而能够选择尽可能不同的输入发现不同的故障 9 】。 对于软件测试,输入可以是数值、字符和数据结构。它们应编码为二进制 并且这些二进制序列能解码为实际的输入,从而能够采用随机测试,这和硬件 测试是不同的。 5 见第三章 。盎鬻:需黧:i 鬻鬻鬻罂鬻娑 。淼j 嚣;i 蒿。:;黧嚣嚣躲黧搿i 月j h 十m h # m * j * f 1 1 一e h 删删t * * g 蝴$ m t m h 上海大学硕士学位论文 ! 鲢麴! ! 目型! 苎! 呈! ! 塑i ! 垡! ! ! 然型g ! ! 坚垡i ! z 的,即通过抽取相关部件来简化问题。 2 3 b i s t 软件可测性设计系统 b i s t 是硬件测试领域最重要的可测性设计技术之一。具有b s i t 功能的电路自 身能产生测试码( 序列) 、检查相应的输出并判断故障是否存在。 图2 2 描述了b i s t 的一般结构,其中t p g 和c u t 分别代表测试码生成器和待测 电路。在实际应用中,电路十分庞大,对应各段需要测试的子电路要“预埋”多 套类似图2 2 中的电路。b i s t 的主要思想是在设计阶段做一些额外的工作,让电 路具有自测试功能,来降低测试复杂性 1 4 】。 图2 2b i s t 的一般结构 显示 使用软硬件测试一致性的概念,我们借助于硬件b i s t 技术提出了b i s t 软件测 试新思想,称为b i s t 软件可测性设计( b i s ts d f t ) 。它的基本思想是将软件r 主 要是针对一般的应用软件而言) 可测试性设计与软件测试结合起来以解决软件 “测试难”的问题。“b i s t ”技术在硬件的可测性设计上已是一个比较成熟的技 术。但是至今尚未见到用该技术进行软件的可测试设计。软件的可测性设计可以 大大地降低软件的测试难度和复杂度。事实上,这是一个完全可以“借用”的软 件测试技术。 其基本结构主要包括两大部分:一,模板( t e m p l a t e ) 部分。二,自治测试部 分。其基本思想是:首先为程序设计( p r o g r a n m i e r ) 提供一套预先设计好的模板, 这套模板要求程序开发人员在编写程序时必须满足模板中提出的相关条件,并在 模板中输入所要求的有关数据。即,模板中建立了该程序凡是需要测试部分的数 据以供自治测试部分使用。然后,由自治测试部分根据模板中信息生成一定的测 试用例,并在c h e c k p o i n t 上进行比较和测试,以完成基本的测试功能。“软件b i s t ” 所需要的o v e r h e a d 是十分有限的。对程序开发人员来说,只需在编写程序时和 编写完成后按模板的要求将帽关数据输入至模板中即可,这样当程序完成及调试 结束后其内建测试的功能就已经自动地生成了。也就是说,程序开发人员除了增 上拇大学硕士学位论文 盐! 鲤竖鲤! 坐旦箜! ! ;塑吐型型! ! ! 型皿 加向模板输入必要的数据等工作量外,完全可以按平时一样进行程序设计。而最 后获得的是带有b i s t 功能的软件。另外,模板还可以有测试状态和正常运行状 态之分。测试结束后可将程序转入正常运行状态以提高程序运行速度。 我们知道,测试人员的视角应该有别于开发人员,也就是说测试工作最好不 要由开发人员完成。另一方面,测试人员又要对程序本身十分了解。b i s ts d f t 能解决这个矛盾,从而降低测试开销。在开发阶段就考虑了测试,这正体现了可 测性设计的精髓。要填入模板的信息包括c h e c k p o i n t 信息、流程图、规格说明和 其他一些重要数据。其中,c h e c k p o i n t 的设置类似于硬件b i s t 中“预埋”电路位 置的选择。 使用模板中的信息,b i s ts d f t 系统自动或半自动地生成测试程序( 包括驱 动模块、桩模块以及被测代码) 和测试用例。测试用例的生成方法可分为黑盒测 试( 包括等价类划分和边界值分析等) 和白盒测试( 包括语句覆盖、分支测试和条 件测试等) 。这些方法可由测试人员自由选择。b i s ts d f t 系统输入这些测试用例 运行程序后,比较测试结果和预期结果,生成测试报告。这同样是自动完成的。 b i s ts d f t 的基本结构见图2 3 。 氍扳| | 潮试 图2 3b i s ts d f t 结构图 每当硬件电路使用一段时间后,我们会担心电路由于老化或其他物理原因, 可能会产生故障,此时可使用内建的测试电路自动产生测试码或测试序列、测试 程序和分析测试结果,因此硬件b i s t 具有可重复使用性。相应地b i s t 软件测试系 统在进行回归测试时更能显示其效率,重复使用模板中的信息,或对这些信息作 堡2 删! 莹堡l 鎏! ! ! ! ! ! ! 鳖嘁嫩! ! 塑丝 少量更浚帮毒宠或霞羟溺试。禚爨溺试是姿软箨遴雩亍了错误蠲茏爱凳藐止弓| 灭薪 的错误丽进行的测试,纠正错误需要增加或改动被测程序的代码。 b i s t s d f t 是全新的软件测试方法,在程序开发时就考虑测试,程序具有自 测试功能a 模板作为b i s ts d f t 的关键部分为开发人员和测试人员撮供了交流的 桥梁。由于测试程序和测试朋倒是自动或半自动嫩成的,因而测试拜于阀朔测试开 镇罄大大壤海低了。b i s ts d f t 是舂意识逶整秘疆箨溅试愚怒避嚣软传溅试夔典 型应翅 1 5 3 。 l o :海大学硕士学键论文 歉! ! 坚越塑翌垒i 然黧璧叠壁姿鎏壁垒 第三章c h e c k p o i n t 的初始化 c h e c k l c l o i n t 静设鬣是实麓b i s ts d f t 麓重要模块,毽缮初始纯弱人为调整 两都分。本章首先介绍c h e c k p o i n t 的基本概念,然后重点对c h e c k p o i n t 初始化 进行了研究。 3 1c h e c k p o i n t 及其他相关概念 由于程序的代码鞠逻辑常常十分复杂,为了辅助b i s t 可测憔设计系统( b i s t s d f t ) 中的b i s t 功能即自动产生测试用例、自动检查相应的输觚和判断故障是否 存谯的实现,我们需裂“预埋”多套b i s t 代码用于测试源程序不同的代码段。 所谓b i s t 代码就是用于实现b i s t 功能的插入程序中的额外代硒,这些额外的代 璐势不露滚程彦要实瑗豹逻辑功能产生镁舞俸曩,缝们哭楚熊寒安瑷测试囊毙。 另辨,程序代码帮遂辚嬲复杂也导致测试盼程亭内部撬彳亍绷节赡以控皋9 和观察。 因此,我们需要选择合适的位置,将源程痔划分为代码和逻辑相对简单的代码段 来预埋b i s t 代码,同时达到控制和观察的目的。这些位置我们称为c h e c k p o i n t 。 定义3 1c h e c k p o i n t :c h e c k p o i n t 怒( 尉,s e ) - 元组,熊巾,田和5 = 纷别 是羧测点和理察点静黧会。为了整令b i s t 霹浏瞧系统磺究的方蠖,曩兹我键圭要 考惑控翎点个数是l 瓣情况,i p c h e c k p o i n t 为( c ,$ 二元组,西表一令控赣点, 鼹观察点的集合,观察点的个数一般都大于l 。c h e c k p o i n t 在程序中以特殊注释 形式存在,在b i s t 软件可测性设计系统中,c h e c k p o i n t 以$ c h e c k p o i n t $ 开头的 注释存在。 定义3 。2 控制点:在程序豹菲初始输入处( p r i m a r yi n p u t ,即源程序本身 掰黎瓣要读久兹程序麓惑) ,毙螽e 语言戆澈疆彦戆菜些丞鼗入翻楚,输入程孝 片断的入口信息。这种非初始输入处以及柳始输入处统称为控制点。 定义3 3 观察点:在程序的非初始输出处( p r i m a r yo u t p u t ,即源程序本身 所舆裔的输出信息) ,比如在c 语言源程序的f o r 循环处,可增加一个变量用于计 算并摄示当前循环次数。这种非裙始输出鲶以及视始输出处统称为蕊察点。 l 令控懿点和斫、瓣察患维残一令c h e c k p o i n t ,嚣控裁点纛裰察轰又统穗受溺 试点。 图3 1 显示了c h e c k p o i n t 在程序中的形式。 上簿大学硕士学位论文 ! 丛旦箜! 赶型竺墅! ! ! 墅坚照蔓皇翌g ! 型望翌! ! ! 垡盟 i n tm a x ( i n tx ,i n t y ,i n tz ) ( $ c h e c k p o i n t $ t h i si sac o n t r o l l i n gp o i n t i n tr e s u l t : i n ts u m : i n ta d d 0 : 调用取和函数,函数十分简单,只是为了下面说明桩模块 s u m = a d d ( y ,z ) : r e s u l t = x s u m ? x :s u m : r e t u r n ( r e s u l t ) : $ c h e c k p o i n t $ t h i si sa no b s e r v i n gp o i n t 图3 1c h e c k p o i n t 在程序中的形式 在图3 1 中,第一段注释显示了控制点的设置,在测试时可直接在测试程序 中输入函数m a x0 的参数x 和作为桩模块的s u m 的值,而不需要由源程序得到参数 值才能测试m a x 函数。同样,第三段注释显示了观察点的设置,测试时由测试程 序输出并显示z 的值。那b i s ts d f t 中测试程序又是什么样的呢? 定义3 4 测试程序:测试程序是由b i s t 软件测试系统根据模板中的信息自 动生成,包括驱动模块、桩模块、被测代码以及一些其他辅助代码。测试程序是 一个可以独立运行的逻辑完整的程序。在测试时以临时文件的方式存在,测试完 成并输出相应的测试结果后,测试程序就自动删除了。 其中,模板是b i s t 软件测试系统中一个重要的组成部分,它是一个容器,提 供给程序开发人员来收集程序信息。这些信息包括被测代码的规格说明、 c h e c k d o i n t 信息( 参数信息、输出信息) ,所调用函数信息等。图3 1 中的x 、y 、z 和a d d 函数都要作为模扳信息存入模板。 图3 1 中的代码自动生成的测试程序伪代码如图3 2 。 ! 生2 1 1 量翌皇! 墅! ! ! ! 出2 1 墨! 驾! ! i 出l 堡! ! 韭z m a i n ( ) 由模板信息得到下行代码的形式,即源程序的参数 i n t1 ,8 ”m : 、 f o p e n ( 测试用例文件,”r b ”) : f o p e n ( 测试报告文件, w ,) : 驱动信息 f r e a d ( x ,测试用例文件) : j 测试用例文件中的s u m 范围由模板信息决定 f r e a d ( s u m ,测试用例文件) :_ 桩模块信息 i n t r e s u l t ;r e s u l t = x s u m ? x :s u m :_ 源代码:j f w r i t e ( r e s u l t 测试报告文件) _ _ + 其他辅助代码 l 图3 2 测试程序 最后,总结上述,对c h e c k p o i n t 作以下几点说明: c h e c k p o i n t 戈j j 分程序,简化程序功能和程序代码,从而使得测试用例能 较容易地自动半自动生成 c h e c k p o i n t 可以提高程序的可控性和可观察性。比如,c h e c k p o i m 设置 在条件语句的输出处,从而能预先知道程序的控制走向 c h e c k p o i m 也要设置在容易发生故障的地方,方便监控这些位置的信息 c h e c k p o i n t 不能破坏源程序的逻辑完整性。所以在系统中以特殊注释形 式存在 一个c h e c k p o i n t f l j l 个控制点和仃个观察点组成,一个c h e c k p o i n t 对应一 个模板,同时c h e c k p o i n t 作为模板信息写入模板,而由一个模板和相应 的被测代码生成一个测试程序。c h e c k p o i n t 、模板以及测试程序的关系 如图3 3 。 上海大学硕士学位论文 ! ! ! ! ! 墼趔! 型! ! ! 墅! ! 堕i ! ! ! g ! 璺g ! l 堡堡i 丝 图3 3c h e c k p o i n t 、模板和测试程序的关系 3 2 l e x 和y a c c 简介 由于在c h e c k p o i n t 设置过程中,主要是c b e c k f o i n t 的初始化过程要使用到 l e x 和y a c c 。本节主要对l e x 和y a c c 做简单介绍。 3 2 1 l e x l e x 1 6 是l e x i c a la n a l y z e r 的缩写,它是一种生成扫描器( 一种识别文本 中的词汇模式的程序) 的工具。这些词汇模式( 或者常规表达式) 在一种特殊的 句子结构中定义。种匹配的常规表达式可能会包含相关的动作,这一动作可能 还包括返回一个标记。当l e x 接收到文件或文本形式的输入时,它试图将文本 与常规表达式进行匹配。它一次读入一个输入字符,直到找到一个匹配的模式。 如果能够找到一个匹配的模式,l e x 就执行相关的动作( 可能包括返回个标 记) 。另一方面,如果没有可以匹配的常规表达式,将会停止进一步的处理,l e x 将显示一个错误消息。l e x 和c 是强耦合的。一个,文件( l e x 文件具有, 扩展名) 通过l e x 公用程序来传递,并生成c 的输出文件。这些文件被编译 为词法分析器的可执行版本。常规表达式是一种使用元语言的模式描述。表达式 由符号组成。符号般是字符和数字,但是l e x 中还有一些具有特殊含义的其 他标记。而l e x 中的标记声明类似c 中的变量名,每个标记都有一个相关的 表达式。比如标记n u m b e r ( 数字) 的表达式为( 1 0 - 9 ) + ,c h a r s ( 字符) 的表达式为 a z a z 。 l e x 编程可以分为三步: 1 ) 以l e x 可以理解的格式指定模式相关的动作 2 ) 在这一文件上运行l e x ,生成扫描器的c 代码 3 ) 编译和链接c 代码,生成可执行的扫描器 刍 上海大学硕士学位论文 ! 坠! 盟 g 垡! ! ! 堡! 墅! ! ! ! 垫g ! 墅g ! i 堕! n ! 注:如果扫描器是用y a c c 开发的解析器的一部分,第三步可不进行。 一个l e x 程序分为三个段:第一段是c 和l e x 的全局声明,第二段包括 模式( c 代码) ,第三段是补充的c 函数。例如,第三段中一般都有m a i n 0 函 数。这些段以来分界。下面的这段l e x 程序显示了l e x 程序的基本结构。 f # i n c l u d e “y t a b h , 0 - 9 】+ y y l v a l = a t o i ( y y t e x t ) ;r e t u r ni n t e g e r ; 【一+ k n r e t u r n y y t e x t ; i n ty y w r a p ( v o i d ) r e t u r n1 ; ) 3 2 2 y a c c y a c c 1 7 是y e t a n o t h e r c o m p i l e r c o m p i l e r 的缩写。y a c c 的g n u 版叫做 b i s o n 。它是一种工具,将任何一种编程语言的所有语法翻译成针对此种语言的 y a c c 语法解析器。它用巴科斯范式( b n f b a c k u s n a u r f o r m ) 来书写。按照惯例, y a c c 文件有y 后缀。 在上一节中,我们看到l e x 从输入序列中识别标记。如果在查看标记序列, 可能希望在这一序列出现时执行某一动作。这种情况下有效序列的规范称为语 法。y a c c 语法文件包括这一语法规范。它还
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年城市公园设施租赁与维护保养合同
- 2025年智能语音识别技术研发与市场推广反担保服务协议
- 2025年非物质文化遗产传承与保护专项基金赠与协议
- 2025年度智能温控被褥定制服务合作框架协议
- 2025年度乡村振兴特色农业种子采购与种植技术支持合同
- 2025年高端医疗器械CE认证与全球市场拓展合作协议
- 2025年现代化别墅群建筑工程施工及配套绿化养护服务协议
- 2025年绿色物流配送服务合同模板下载
- 少数民族纹样课件
- 小区楼栋封控应急预案(3篇)
- 护士临床思维建立
- 公共场所卫生知识培训材料
- 证据目录范本
- 标准档案盒脊背(格式已设置好)
- GB/T 21475-2008造船指示灯颜色
- 园林绿化工高级技师知识考试题库(附含答案)
- 安医大生殖医学课件04胚胎的培养
- 可下载打印的公司章程
- 关于推荐评审高级工程师专业技术职务的推荐意见报告
- Q∕GDW 10356-2020 三相智能电能表型式规范
- 教研工作手册
评论
0/150
提交评论