




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一删性声明一二_ i 四y 蝶1 8 8 7 4 烨5 8 一 本人声明:所呈交的学位论文是本人在导师的指导下进行的研究工作及取得的研究成 果。除本文己经注明引用的内容外,论文中不包含其他人己经发表或撰写过的研究成果, 也不包含为获得内蒙古大学及其他教育机构的学位或证书而使用过的材料。与我一同工作 的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。 学位论文作者签名:墨i 数 日期: 呈! ! :笸: 指导教师签名: 日期: 在学期间研究成果使用承诺书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:内蒙古大学有权 将学位论文的全部内容或部分保留并向国家有关机构、部门送交学位论文的复印件和磁盘, 允许编入有关数据库进行检索,也可以采用影印、缩印或其他复制手段保存、汇编学位论 文。为保护学院和导师的知识产权,作者在学期间取得的研究成果属于内蒙古大学。作者 今后使用涉及在学期间主要研究内容或研究成果,须征得内蒙古大学就读期间导师的同意; 若用于发表论文,版权单位必须署名为内蒙古大学方可投稿或公开发表。 学位论文作者签名: 日期: 王锹 z 口l | 、。l s 指导教师签名:,:l 巫叠 e l 期:立2 出:丛 内蒙古大学硕士学位论文 嵌入式软件自动回归测试方法的研究 摘要 随着计算机硬件和软件技术的飞速发展,嵌入式系统的硬件规模和性能得 到了极大的提高,相应的,嵌入式系统软件和应用软件的复杂性和规模也日益 提高,嵌入式软件测试作为嵌入式软件开发重要环节的同时,也成为了嵌入式 软件质量的重要保障。任何软件的开发都不是一次成功的,需要成百上千次的 反复修改和测试,然而由于嵌入式软件的复杂性,决定着嵌入式软件的修改是 一项困难的任务,在修改的过程中容易引入新的错误。嵌入式软件回归测试就 是为了能找到程序修改后出现错误的原因,它在整个软件开发的生命周期中占 有重要地位。在我国,嵌入式软件测试技术的研究尚处于初级阶段,如何在嵌 入式软件测试中能够高效地定位出程序修改的错误是一个亟待解决的课题。 本文介绍了回归测试的三种错误定位方法:基于程序切片错误定位的方 法;基于程序频谱回归测试错误定位的方法和基于程序代码覆盖错误定位的方 法;以及面向对象的回归测试的一种方法即原子依赖分析。接着,本文提出一 种适用于嵌入式软件的基于程序频谱和原子依赖的回归测试错误定位方法,并 且通过实例对该方法进行了说明。该方法在嵌入式软件回归测试中能有效、准 确地定位出错误位置,具有一定的实际使用价值。最后,本文介绍了嵌入式软 件的测试过程,提出了一种新的嵌入式软件自动化测试框架运行策略。 关键字:嵌入式软件测试,回归测试,程序频谱分析,原子依赖 嵌入式软件自动回归测试方法的研究 r e s e a r c ho na u t o m a t e dr e g r e s s l 0 nt e s t i n g m e t h o df o re m b e d d e ds o f t w a r e a bs t r a c t w i t l lt h er a p i dd e v e l o p m e n to fc o m p u t e rh a r d w a r ea n ds o f t w a r et e c h n o l o g y ,t h es c a l ea n d p e r f o r m a n c eo ft h ee m b e d d e ds y s t e mh a r d w a r eh a v eb e e ng r e a t l yi m p r o v e d t h ec o m p l e x i t ya n d s c a l eo fs y s t e ms o f t w a r ea n da p p l i c a t i o ns o f t w a r ef o re m b e d d e ds y s t e mb o t hg r o wa c c o r d i n g l y b e i n gak e ys t a g ei ne m b e d d e ds o f t w a r ed e v e l o p m e n tp r o c e s s ,i ta l s op r o v i d e sg u a r a n t e ef o rt h e i r q u a l i t y e m b e d d e ds o f t w a r et e s t i n gi st h ei m p o r t a n tl i n k si nt h ee m b e d d e ds o f t w a r ed e v e l o p m e n t , a n di m p o r t a n tm e a n so fk e e p i n ge m b e d d e ds o f t w a r eq u a l i t y i t sn o tp o s s i b l et od e v e l o pas o f t w a r e a tat i m e i n s t e a d ,h u n d r e d st ot h o u s a n d sm o d i f i c a t i o n sa n dt e s t i n ga r en e e d e d a l ls o f t w a r e d e v e l o p m e n ti s i m p o s s i b l eao n e - t i m ej o b h o w e v e r , t h er e v i s i o no ft h es o f t w a r ef o re m b e d d e d s y s t e mi sat i m ec o n s u m i n gw o r ks i n c et h e i rs p e c i a lc o m p l e x i t y a i m i n gt oa d d r e s st h i sp r o b l e m , t h ea u t o m a t e dr e g r e s s i o nt e s t i n gm e t h o df o re m b e d d e ds y s t e me m e r g e d n o w , i th a sb e e na l l u n n e g l i g i b l ep a r ti n t h el i f e c y c l eo fs o f t w a r ed e v e l o p m e n tp r o c e s s r e s e a r c ho na u t o m a t e d r e g r e s s i o nt e s t i n gm e t h o df o re m b e d d e ds o r w a r ei s s t i l l i ni t si n i t i a ls t a g ea n di t sa nu r g e n t p r o b l e mt of i n dam e t h o d w h i c hc a nl o c a t et h eb u g si nt h ep r o g r a m se f f i c i e n t l y t h i sp a p e ri n t r o d u c e st h r e em e t h o d so ff a u l tl o c a l i z a t i o ni nr e g r e s s i o nt e s t i n ga sf o l l o w s :t h e m e t h o db a s e do np r o g r a mc h o p p i n g ;t h eo n eb a s e do np r o g r a ms p e c t r aa n dt h eo n eb a s e do nc o d e c o v e r a g e ;i na d d i t i o n , w ea l s oi n t r o d u c ea no b j e c to r i e n t e dm e t h o d ,i e ,t h ea t o md e p e n d e n c e a n a l y s i s t h e n , w ep r o p o s eaf r e q u e n c ys p e c t r u ma n da t o md e p e n d e n c yb a s e df a u l tl o c a l i z a t i o n m e t h o dw h i c hc a nb ea d o p t e dt oe m b e d d e ds y s t e ms o f t w a r e d e t a i l e de x a m p l e sa r eu s e dt o i l l u s t r a t eo u ro p i n i o n e x p e r i m e n tr e s u l t ss h o wt h a to u rm e t h o dc a nl o c a t et h em i s t a k e si nt h e s o f t w a r et e s t i n ge f f i c i e n t l ya n de f f e c t i v e l ya n dt h ev a l u et oa d o p tt h i sm e t h o di nr e a lw o r l d a tl a s t , w ei n t r o d u c et h ep r o c e s so fe m b e d d e ds o f t w a r et e s t i n ga n dp r o p o s ean e wf r a m e w o r kf o ri t k e y w o r d s e m b e d d e ds o f t w a r et e s t i n g ,r e g r e s s i o nt e s t i n g ,p r o g r a ms p e c t r u m a n a l y s i s ,a t o m i c - r e l yo n 1 j i i 内蒙古大学硕士学位论文 目录 摘要i a b s t r a c t :i i e jj i 乏i i i 图表目录点v 第一章绪论1 1 1 论文研究背景1 r 1 2 论文主要工作2 1 3 论文结构2 第二章软件回归测试方法的研究。4 2 1 回归测试的三种错误定位方法4 2 1 1 基于程序代码覆盖的错误定位方法4 2 1 2 基于程序切片的错误定位方法6 2 1 3 基于程序频谱的错误定位方法7 2 2 面向对象回归测试方法_ 1 0 2 2 1 分析修改牵连方法1 0 2 2 2 原子依赖描述,1 0 - 2 3 本章小结1 1 第三章嵌入式软件回归测试的错误定位方法研究1 2 3 1 嵌入式软件测试1 2 3 1 1 嵌入式系统的概念及特点o 1 2 3 1 2 嵌入式软件测试与普通软件测试的异同1 3 3 2 嵌入式软件回归测试的系统总体设计1 4 , 3 3 一种嵌入式软件回归测试方法1 5 1 3 4 基于程序频谱和原子操作的回归测试错误定位方法的实例分析。1 7 3 5 本章小结2 4 第四章嵌入式软件自动回归测试框架2 5 4 1 软件测试自动化的概念:2 5 4 2 嵌入式软件测试自动化的实现基础2 6 i i i 嵌入式软件自动回归测试方法的研究 4 2 1 服务器端工作流程2 7 4 2 2 客户端、,目标机的工作原理2 8 4 3 嵌入式软件自动化测试框架设计策略3 1 4 3 1 嵌入式软件测试自动化功能的设计方案3 1 4 3 2 嵌入式软件自动化测试框架运行策略:3 2 4 4 本章小结3 4 第五章总结与展望。3 5 5 1 总结研究工作3 5 5 2 工作展望3 5 参考文献:3 6 致谢4 0 i v v 嵌入式软件自动回归测试方法的研究 v i 内蒙古大学硕士学位论文 第一章绪论 1 1 论文研究背景 嵌入式系统作为计算机应用的一个重要分支,在消费电子产品、交通系统、工业控制、 医疗设备和军事等领域得到了越来越广泛的应用。随着系统复杂性的增加,自然需要功能强 大、性能稳定的嵌入式软件与之相适应。 软件的开发是一个不断修改完善的过程,在软件生命周期中的任何一个阶段,软件开发 过程的每一次改变可能是源于发现了错误并做了修改,也有可能是因为在集成或维护阶段加 入了新的模块。每一次变更过程都可能给该软件带来意想不到的问题,当软件中所含错误被 发现时,如果不能精确地定位错误语句,就可能会遗漏对这些错误的修改;而开发者对错误 理解的不够透彻,也可能导致所做的修改只修正了错误的外在表现,而没有修复错误本身9 从而造成修改失败;盲目的修改还有可能产生副作用使得原本错误的代码错上加错,也可能 使原本正常的工作状态变为错误的状态。同样,在软件中增加新代码的时候,不仅新代码中 隐含错误,而且新代码还有可能对原有的代码带来影响。因此,软件的每一次变更都必须重 新测试其变更后的所有功能,检查修改是否损害了原有的正常功能,确定变更后的软件符合 开发者的开发意图。为了验证修改的正确性及修改后的部分对整个软件是否带来了影响就需 要进行回归测试。 回归测试的实质就是测试程序新修改的部分是否修正了以前的错误,是否产生了新的错 误,是否达到了新的程序规格说明。回归测试作为软件生命周期的一个组成部分,在整个软 件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。回归测 试在软件生命周期中扮演着重要的角色,因忽视回归测试而造成严重后果的例子不计其数, 导致阿里亚娜5 型火箭发射失败的软件缺陷就是由于复用的代码没有经过充分的回归测试造 成的。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端 编程方法中,更是要求每天都进行若干次回归测试。 自动化测试是借助于测试工具、测试规范,从而局部或全部代替人工进行测试及提高测 试效率的过程。自动测试的一般定义为:各种测试活动的管理与实施,包括测试脚本的开发 与执行,以便使用某种自动测试工具来验证测试需求。自动测试几乎可以不加改动地重用先 前的测试用例和测试脚本,以非常有效的方式执行回归测试。在进行回归测试时需要对错误 进行查找,亦即回归测试错误定位。回归测试错误定位是个复杂且耗时的过程,它涉及到理 嵌入式软件自动回归测试方法的研究 解程序的用途、结构、语意和导致错误测试的相关特征。目前在嵌入式软件开发过程中,往 往采用的是手工方法进行回归测试。若能通过自动化测试工具辅助定位回归测试错误的工 作,将能有效地减轻测试人员的劳动强度,提高工作效率,缩减软件开发时间,这具有十分 重要的意义。 1 2 论文主要工作 本论文主要研究内容如下: 1 研究回归测试的错误定位方法。 目前国内外提出的错误定位方法主要有: 1 ) 基于程序代码覆盖错误定位方法【1 】 基于程序代码覆盖错误定位的方法是通过检查在语句上是否执行过失败测试用例和成功 测试用例,计算出这些语句可能包含有错误的系数即风险值,值越大,包含错误的可能性越 大,由此定位出错误语句。但是这种方法认为所有的成功测试用例的影响都是一样的,如果 影响不一样,会影响到定位范围的准确度,甚至会因为定位范围过大造成资源的浪费。 2 ) 基于程序切片错误定位方法 2 j 3 1 基于程序切片错误定位的方法是通过把程序减少到只包含与某个特定计算相关的那些语 句分析程序,再进行错误定位。在最坏的情况下,需要检查的数量过大,在时间的消耗上太 大。 3 ) 基于程序频谱回归测试错误定位方法【4 】【5 1 基于程序频谱回归测试错误定位的方法是检查修改前后代码,比较代码在修改后的值与 修改前的值,确定可能包含有错误的代码行。但是这种方法很容易导致定位的范围太大,并 且定位的假设前提条件适用范围不大,需要扩大定位的前提条件。 2 比较嵌入式软件测试与普通软件测试的异同点,将基于程序频谱回归测试错误定位 方法与原子操作依赖相结合,形成一种新的嵌入式软件回归测试错误定位方法,并举例说明 该方法的执行过程和原理。 3 研究嵌入式软件测试的方法,提出一种新的嵌入式软件自动测试框架的运行策略。 1 3 论文结构 第一章绪论。首先介绍论文的研究背景和意义,说明了论文的主要工作内容,最后叙 内蒙古大学硕士学位论文 述了论文结构。 第二章软件回归测试方法的研究。介绍了三种回归测试的错误定位方法,即基于程序 代码覆盖的错误定位方法、基于程序切片的错误定位方法和基于程序频谱的错误定位方法; 同时介绍了原子操作依赖方法。这些方法是第三章提出的嵌入式软件回归测试错误定位方法 的理论基础。 第三章嵌入式软件回归测试的错误定位方法研究。首先,分析了嵌入式系统的特点, 提出一种嵌入式软件回归测试的系统总体设计。接着,提出一种适用于嵌入式软件回归测试 的方法,该方法首次将基于程序频谱的错误定位方法与原子操作依赖方法相结合,实现回归 测试的错误定位,并举例说明该方法的实现过程。本章内容是论文的核心部分。 第四章嵌入式软件自动回归测试框架。本章以嵌入式软件测试自动化技术研究为目 的,介绍了嵌入式软件自动测试的基本概念与优点,提出了适用于嵌入式软件的自动测试框 架。 第五章总结和展望。对论文进行了简单的总结,并对论文后续的工作进行了展望。 嵌入式软件自动回归测试方法的研究 一 第二章软件回归测试方法的研究一一一一一 2 1 回归测试的三种错误定位方法 2 1 1 基于程序代码覆盖的错误定位方法 软件测试的目的是尽可能多地找出软件中隐藏的错误。在软件测试工作中,常用的测试 方法是将测试用例库中的测试用例批量地运行在被测软件上,并记录测试失败的所有相关信 息,形成测试日志文件,便于调试程序、找出程序中的错误。程序代码覆盖定位错误t 6 i t 7 】【8 】 其实就是分析测试成功用例和测试失败用例对被测代码中每条语句的影响,根据所得的影响 找出错误的位置。 风险值是程序代码覆盖定位方法的依据。风险值是通过统计成功、失败测试用例的规则 计算出来的。初始情况下,每条可执行语句的风险值都是0 。在此基础上执行测试用例 集,并分别统计在每条语句上执行了的成功测试用例和失败测试用例的个数。一般来说风险 值与包含错误可能性成正比,即风险值越高的语句包含错误的可能性越高。基于定位错误的 目标,风险值越高的语句应该越注意检查,直至定位错误原因。若错误是由一段代码引起 的,那么,当查找到这段代码的第一句时,就认为错误定位已完成。 给出一定量代码,无论代码的长度如何,第一步是计算在这段代码上执行了多少个成功 测试用例和失败测试用例。然后,认为所有的成功测试用例对给出代码的风险值的影响几乎 相同。比如说,当己经有1 0 个成功测试用例在某段代码上执行,当第1 1 个成功用例执行 时,这第1 1 个成功测试用例对这行的影响,相对于前面的1 0 个成功测试用例来说,几乎可 以d , n 忽略。换言之,若一个测试用例在该段代码上成功通过之后,以后所执行的成功测试 用例对这部分代码的风险值贡献就会逐步减小。下面介绍的是三种计算风险值的方法。 若某测试用例在程序上执行失败,那么显然,在失败的测试用例所执行的代码或者相关 代码之中存在着一定的错误。然后,若两个测试用例在同一条或者一组语句上都失败了,那 么就认为这组语句包含错误的可能性更高。从而,在语句s 上所执行的失败用例与在语句s 上包含错误的可能性成正比。基于此,定义第j 条语句的风险值r j ( 即第j 条语句包含错误 的可能性值) 为: 。 4 n + m = c u y j f 兰i 4 ( 公式2 1 ) 内蒙古大学硕士学位论文 其中: c i 。j 2 1 , 表明第i 个测试用例在第j 个语句上执行过。 c i ,2 0 ,表明第i 个测试用例没有在第j 个语句上执行过。 y j = l ,表明第i 个测试用例失败。 y j = 0 ,表明第i 个测试用例成功。 m 为成功测试用例个数。 1 1 为失败测试用例个数。 玛= c “r j 所得的值越大,说明该语句包含错误的可能性越大。 t = 1 若在一条语句s 上有成功测试用例执行,并且成功测试用例通过的越多,则说明在这条 语句s 上包含错误的可能性越小,即在语句s 上成功测试用例数量与包含错误的可能性成反 比。由此,定义第i 条语句s i 包含错误的可能性值,即风险值为: r + m一+ 脚 r j 2 c u y j c u ( 1 y j ) ( 公式2 2 ) f = if l l r r e c “7 j - c “( 1 - y j ) 所得的值越小,说明该语句包含错误的可能性越小。 f = l1 = 1 以上两个公式都没有考虑测试成功用例对于程序调试的价值大小问题。随着测试成功用 例数的增长,我们认为后执行的测试成功用例对语句包含错误的影响小于先前的测试成功用 例的影响。为了计算方便,我们把测试成功用例分批,后一批的测试成功用例对语句包含错 误的影响小于或等于前一批的测试成功用例的影响,同一批的影响相同。基于上述想法,包 含错误的可能性的计算公式为: n + mn + m 码= c j 。y j - f ( c “( 1 - r j ) ) ( 公式2 3 ) i = 1f = 1 其中 聊2 g 豪21 伽, 3 ) c l a s ss 1e x t e n d ss o p u b l i cd o u b l ea v e r a g e o a v e = ( x + y ) 2 ; r e t u r na v e ; ) ) c l a s ss 2e x t e n d ss 1 p u b l i cd o u b l ec l o p u b l i cv o i dt e s t o s 2 $ = n e ws 2 0 ; s a v e r a g e o ; s d i f f o ; ) 修改后程序如下: c l a s ss o p u b l i cd o u b l ex ,y z ; p u b l i cd o u b l ea v e ,d i f f e r e n c e ; 1 7 嵌入式软件自动回归测试方法的研究 p u b l i cd o u b l ea v e r a g e ( ) a v e 2 ( x + y + z ) 2 ; p u b l i cd o u b l ed i f f 0 c l a s ss1e x t e n d ss o ip u b l i cd o u b l ea v e r a g e ( ) a v e 2 ( x + y ) 2 ; r e t u ma v e ; ) p u b l i cd o u b l ec i o d o u b l ed - 2 x 卜y ; r e t u r n d ; ) c l a s ss 2e x t e n d ss 1 p u b l i cd o u b l ed i f f0 d i f f e r e n c e2 z - ( x + y ) ; r c t u l t id i f f e r e n c e ; ) p u b l i cv o i dt e s t o s 2s = n e ws 2 0 ; s a v e r a g e o ; s d i f fo ; ,第一步:对比修改前后的代码段,列出被修改的语句,如表3 1 所示。 第二步:对修改过的语句进行原子操作类型的分解,使其分解为方法操作集合、属性操 作集合、以及动态调用操作集合,如表3 2 ,3 3 ,3 4 所示。其中表结果的第- - y o 原子操作 类型表明了修改语句的原子类型。例如c m s o a v e r a g e o 说明对象s o 的a v e r a g e0 方法是修 改的方法。 第三步:输入x = 3 ,y = l ,z = 5 后得到下面的值频谱表以及程序内部状态转换图,如表 3 5 ,3 6 ,图3 3 ,3 4 所示。 通过比较修改前后的两段程序的值频谱可知t e s t 函数有相同的入口状态,但是出口状态 存在差异,说明t e s t 函数偏差容器,比较s 1 a v e r a g e 函数的值频谱函数有相同的入1 :3 和出口 1 8 内蒙古大学硕士学位论文 状态,说明s 1 a v e r a g e 是无偏函数,比较s 2 a v e r a g e 函数的值频谱可以看出函数有不同的入 口状态,说明函数s 2 a v e r a g e 是偏差输出,根据偏差根的定位规则可以推断偏差的位置是在 t e s t 函数的e n t r y 点到调用s 2 a v e r a g e 点的范围内。最终将定位范围确定在语句7 、8 两句 上,即程序代码为: p u b l i cd o u b l ed i f f ( ) d i f f e r e n c e2 z 一( x + y ) ; r e t u r nd i f f e r e n c e ; 第四步:由于程序的修改操作会对软件带来的不同程度的影响,可以根据第二章中给出 的八种原子操作间的相互依赖关系,查找相互牵连的修改语句,以便提高回归测试修改错误 的定位精度以及工作效率。原子操作依赖关系的构建是一种程序的细化过程,通过依赖图的 建立可以清晰地展现程序内部的牵连关系。原子操作的依赖关系可以说是起到了牵其一发动 则全身的作用。下面将第二步中锁定的7 、8 旬进行原子依赖分解,构建其原子依赖图,如 图3 5 所示。 表3 1 程序修改前后语句差异表 n 出l e3 1d i f f e r e n tc o d em a r k 语句编号语句代码 1 p u b l i cd o u b l e ) 【y ,z ; 2 a v e = ( x + y + z ) 2 ; 3 d i f f e r e n c e = x - y ; 4r e t u r n d i f f e r e n c e ; 5 p u b l i cd o u b l ed i f f ( ) ) p u b l i cd o u b l ee l ( ) 6 d o u b l ed = x + y ; r e t u r nd ; ) 7 p u b l i cd o u b l ed i f f ( ) d i f f e r e n c e = z - ( x + y ) ; 8 r e t u r nd i f f e r e n c e ; 。 1 9 嵌入式软件自动回归测试方法的研究 衷,l 2 方法操作集合表 t a b l e3 2m e t h o d so p e r a t i o ns e tt a b l e 修改语句编号修改的语句原子操作类型 p u b l i cd o u b l ea v e r a g e ( ) a v e = ( x + y ) 2 ; p 1 c m s o a v e r a g e ( ) r e t u r na v e ; ) p 2 p u b l i cd o u b l ed i f f ( ) c m s o d i f f ( ) p 3 p u b l i cd o u b l ec 1 ( ) a m s 1 c i ( ) p u b l i cd o u b l ec 1 ( ) d o u b l ed - - x + y ; p 4 c m s 1 c 1 ( ) r e t u r nd ; ) p 5 p u b l i cd o u b l ed i f f ( ) a m s 2 d i f f ( ) c l a s ss 2e x t e n d ss l p u b l i cd o u b l ed i f f ( ) d i f f e r e n c e = z ( x + ) r ) ;, p 6 c m s 2 d i f f ( ) r e t u r nd i f f e r e n c e ; 表3 3 属性操作集合表 t a b l e3 3a t t r i b u t eo p e r a t i o ns e tt a b l e 修改语句编号修改的语句原子操作类型 p 7 p u b l i cd o u b l ek y ,z ; a f s o z p 8 d o u b l e d ; a f s 1 d 2 0 内蒙古大学硕士学位论文 表3 4 动态调用操作集合表 t a b l e3 4 d y n a m i ci n v o c a t i o no p e r a t i o ns e tt a b l e 修改语句编号 修改的语句原子操作类型 p u b l i cd o u b l ea v e r a g e ( ) a v e = ( x + y ) 2 ; p 9 l c s o a v e r a g e ( ) r e t u ma v e ; ) p u b l i cd o u b l ec 1 ( ) p 1 0 l c s 1 c l ( ) d o u b l ed - x + y ; r e t u r nd : c l a s ss 2e x t e n d ss 1 p 1 1 p u b l i c d o u b l ed i f f ( ) d i f f e r e n c e = z ( x 哆) ;) l c s 2 d i f f ( ) r e t u r nd i f f e r e n c e ; 表3 5 修改前程序的值频谱表 t a b l e3 5v a l u es p e c t r ao f t h eo r i g i n a lp r o g r a m t e s t ( e n t r y ( 3 ,1 ,5 ) ,e x i t ( 3 ,1 ,5 ,2 ,1 ) ) ; 值触发频谱 s 1 a v e r a g e ( e n t r y ( 3 ,1 ) ,e x i t ( 3 ,1 ,2 ) ) , s 2 a v e r a g e ( e n t r y ( 3 ,1 ) ,e x i t 3 ,1 ,1 ) ) ; t e s t ( e n t r y o ,1 ,5 ) ,e x i t ( 3 ,1 ,5 ,2 ,1 ) ) ; 值追踪频谱 s 1 a v e r a g e ( e n t r y ( 3 ,1 ) ,e x i t ( 3 ,1 ,2 ) ) , s 2 a v e r a g e ( e n t r y ( 3 ,1 ) ,e x i t ( 3 ,1 ,1 ) ) ; t e s t ( e n t r y ( 3 ,1 ,5 ) ,e x i t ( 3 ,1 ,5 ,2 ,1 ) ) l ; 值数量频谱s i a v e r a g e ( e n t r y ( 3 ,1 ) ,e r a t ( 3 ,1 ,2 ) ) 幸1 ; s 2 a v e r a g e ( e n t r y ( 3 ,1 ) ,e x i t ( 3 ,1 ,1 ) ) 辛1 ; 2 1 嵌入式软件自动回归测试方法的研究 l 一 一-一 表3 6 修改后程序的值频谱表 t a b l e3 6v a l u es p e c t r ao f t h ee d i t e dp r o g r a m t e s t ( e n t r y ( 3 ,1 ,5 ) ,e x i t ( 3 ,1 ,5 ,2 ,2 ) ) ; 值触发频谱 s 1 a v e r a g e ( e n t r y ( 3 ,1 ) ,e x i t ( 3 ,1 ,2 ) ) ; s 2 a v e r a g e ( e n t r y ( 3 ,1 ,5 ) ,e x i t ( 3 ,1 ,5 ,1 ) ) ; t e s t ( e n t r y ( 3 ,1 ,5 ) ,e x i t ( 3 ,1 ,5 ,2 ,2 ) ) ; 值追踪频谱 s 1 a v e r a g e ( e n t r y ( 3 ,1 ) ,e x i t ( 3 ,1 ,2 ) ) ; s 2 a v e r a g e ( e n t r y ( 3 ,1 ,5 ) ,e x i t ( 3 ,1 ,5 ,1 ) ) ; t e s t ( e n t r y ( 3 ,1 ,5 ) ,e x i t ( 3 ,1 ,5 ,2 ,2 ) ) 木l ; 值数量频谱 s 1 a v e r a g e ( e n t r y ( 3 ,1 ) ,e x i t ( 3 ,1 ,2 ) ) 幸1 ; s 2 a v e r a g e ( e n t r y ( 3 ,1 ,5 ) ,e x i t ( 3 ,1 ,5 ,1 ) ) 1 ; 笏m 7 “。“鬻 豺,7 “ 嘲 磬 : 嘭谬 移“ 二7m 嘞 ”孽 芗7 节缪 蠡x :3 - i x :3 9 x :3 _ x :3 ,x :3 _ x :3 。 ; j ; l ,i 、 _ i i 、 : y :i i ! y :l ? y :l ; i y :l i i y :l i ; y :l; 。 锄一。! 锄 。 觏,。一a j 一i 。i | i t 。渤 i 一巧 t 聋 : l z :5 l r e t :2 ,l z :5 , i 髓b i ,“。;锄。巍,簇 ,眦2 ,1 i : 弘一j 。么 t e s t s 1 a v e r a g e 8 1 。a v e e s 2 a v e 嘴e8 2 删:嘲e 伦s t e x l te te x i t e n t r ye n t r ye n t r y 一 s t a :c e s t a t es t a t e 图3 3 修改前程序的内部转换图 f i g3 3i n t e r n a lt r a n s f o r m a t i o nc h a r to fo r i g i n a lp r o g r a m 2 2 内蒙古大学硕士学位论文 凝一7 。! + 。- 隽 x :3 ; ; y :t i : l z :5 j4 j 如一,h :。,。# 盏 t e s t e n t r y s t a t e _ 琵:,i 一二二鼍一翌 i x :3 争: l y h t _ 。i二掘 s 1 a v e r a g e e n t r y s t a t e 扩一,7 r 劭 一r 1 1x :3 ;一 ; ly :l i : , 7 ; ;r e t :2 拓j s 1 a v e r a g e e x i t s t a t e 瑟。:一一,麓 豁 ? i ”? 蟹 ” ;x :3 ; x :3 , - i7 誓 l : g ; ; ;y 1 j ; y :l ;j 爹 z :5 i i z :5 : 劳 缓。,蔓川,。象 r e t :z ,! 貔一 :二v 一 7 s 2 a v e r a g e e n t r y s t a t e s 2 a v e r a g e e x i t s t a t e 图3 4 修改后程序的内部转换图 f i g3 4i n t e r n a lt r a n s f o r m a t i o nc h a r to f e d i t e dp r o g r a m ;嚣, ,” 铭 ;_ 一“。”一 l , x :3。 j r j? 、y :l7 i , i z :5j l r e t :2 ,27 7 ; 酝、。,。,;蛾 t c :s t e x i t s t a t e 图3 5 语句相关的原子依赖图 f i g 3 5s t a t e m e n t sr e l a t e da t o m i cd e p e n d e n c eg r a p h s 嵌入式软件自动回归测试方法的研究 图3 5 所示的每一个圆圈集合代表一个原子操作。原子操作标记了修改的语句编号、原 子操作类型、改动的方法及属性等。箭头的指向说明了原子操作的依赖关系。图中的原子操 作p 6 指向原子操作p 5 ,说明原子操作p 6 依赖原子操作p 5 ,即原子操作p 5 的改动影响、 决定着原子操作p 6 的正确执行。下面简单介绍图3 5 语句相关的原子依赖图的绘制过程。 原子操作p 6 即c m s 2 d i f f ( ) 是修改过的方法,只有在s 2 中增加了新的方法d i f f ( ) 才能谈 到对方法d i f f ( ) 的修改。因此,我们可以说原子操作p 6 依赖原子操作p 5 ,然而p 6 的操作 即c m s 2 d i f f ( ) 使用了新增定义p 1 即a f s o z ,因此原子操作p 6 依赖原子操作p 7 。 第五步:图3 5 所示原子操作p 2 ,p 6 ,p l l 都依赖原子操作p 7 。p 6 又依赖于原子操作 p 5 。然而p 7 ,p 5 会引起p 6 ,p l l 的变化,不会影响到p 2 的操作。由于本实例已经定位到 无法继续分解的原子操作,所以可以看出p 6 ,p l l 是引起前后两段程序变化的原因。 第六步:结束定位。 3 5 本章小结 首先,本章分析了嵌入式软件的特点,提出一种适用于嵌入式软件回归测试的系统总体 设计。接着依据第二章的理论基础提出一种适用于嵌入式软件回归测试的方法,该方法首次 将值频谱法与原子操作依赖法相结合,实现回归测试的错误定位,并举例说明该方法的实现 过程。本章内容是论文的核心部分,所提出的回归测试错误定位方法和其他测试方法相比可 提高检查代码效率。该方法只需在修改前后程序的不同代码上查看函数的入口、出口状态, 再依据值频谱偏差根的错误定位规则确定错误的大致方位。然后,使用原子操作依赖方法将 错误精确定位到错误根源。 内蒙古大学硕士学位论文 第四章嵌入式软件自动回归测试框架一 4 1 软件测试自动化的概念 软件测试的工作量很大( 据统计,会用到3 0 一5 0 的开发时间;一些可靠性要求非常 高的软件,测试时间甚至占到总开发时间的6 0 ) ,但测试却是在整个软件过程中最有可能 使用计算机进行自动化的工作,这是因为测试的许多操作是重复性的、非智力创造性的、需 求细致注意力的工作。计算机就最适合于代替人类去完成这些任务。软件自动化测试是相对 手工测试而言的,通常是通过所开发所需的软件测试工具,脚本等来实现,具有良好的可操 作性,可重复性和高效率等特点。企业如果增加在这方面的投入,会对整个开发工作的质 量、成本和周期带来非常显著的效果。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏徐州经济技术开发区管理委员会招聘编制教师40人考前自测高频考点模拟试题及参考答案详解
- 2025年广东惠州市公安局惠城区分局第二批辅警招聘48人考前自测高频考点模拟试题完整答案详解
- 2025重庆设计集团有限公司市政设计研究院招聘6人笔试历年参考题库附带答案详解
- 2025重庆市大足区国衡商贸股份有限公司招聘大足区环境卫生工作人员招聘42人笔试历年参考题库附带答案详解
- 2025重庆合川区招聘劳务派遣员工1人笔试历年参考题库附带答案详解
- 2025北京大学党委办公室校长办公室招聘模拟试卷及答案详解(各地真题)
- 2025贵州毕节市大健康集团有限公司第十三届贵州人才博览会招聘工作人员第二批及笔试历年参考题库附带答案详解
- 2025福建福州城投供应链集团有限公司招聘2人笔试历年参考题库附带答案详解
- 2025贵州剑河县农村集体经济组织选聘职业经理人(总经理)17人考前自测高频考点模拟试题及参考答案详解1套
- 2025江西南昌高新招商集团招聘复试笔试历年参考题库附带答案详解
- DB32T3728-2020工业炉窑大气污染物排放标准
- 重大风险管控方案及措施客运站
- 基于STM32智能书桌设计
- 《北京市基本概况》课件
- 设备维保中的环境保护与能源管理
- 混合型脑性瘫痪的护理课件
- 眼科专业视野培训教材
- 青蓝工程教师成长档案
- 中建室内中庭墙面铝板、玻璃安装施工方案(改)
- 中秋佳节给客户的一封信(10篇)
- 学生心理健康档案表格
评论
0/150
提交评论