(计算机应用技术专业论文)基于关联规则挖掘的回归测试选择策略研究.pdf_第1页
(计算机应用技术专业论文)基于关联规则挖掘的回归测试选择策略研究.pdf_第2页
(计算机应用技术专业论文)基于关联规则挖掘的回归测试选择策略研究.pdf_第3页
(计算机应用技术专业论文)基于关联规则挖掘的回归测试选择策略研究.pdf_第4页
(计算机应用技术专业论文)基于关联规则挖掘的回归测试选择策略研究.pdf_第5页
已阅读5页,还剩46页未读 继续免费阅读

(计算机应用技术专业论文)基于关联规则挖掘的回归测试选择策略研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 软件测试是软件开发过程中一个既重要又很难实施的环节,同时它也是软件 质量保证的关键步骤,是软件工程研究领域的重要内容。回归测试是软件修改后 为确认修改的正确性而进行的测试工作,因而其执行测试用例的过程与软件开发 过程中的其它软件测试过程相同,只是所执行的测试用例的集合可能不同。 目前,回归测试策略有“重测所有和“选择性”两种。随着软件规模的不 断增大,“重测所有 在成本和时间两方面都是不可行的,尤其当修改很小部分 时,它将会造成严重的成本浪费。因为修改可能会影响到其他部分,所以进行回 归测试时必须有适当的测试用例集选择策略。如何选择一个尽可能小,且又能覆 盖所有修改以及受修改影响的代码的测试用例集是回归测试选择策略研究重点 之一。当软件新版本出现时,开发者会告诉测试人员修改的部分,这就使得选择 能够覆盖修改的测试用例变得相对简单。但是,选出能够覆盖受修改影响的代码 的测试用例却是很困难的。 本文认为除了覆盖修改的测试用例之外,其他的都是覆盖受修改影响的测试 用例。为了更加精确地构造回归测试包,提高回归测试的效率,本文提出了一种 新的回归测试选择策略:先选出覆盖修改代码的所有测试用例;然后对基线测试 用例库中的剩余的测试用例集进行缩减,基于测试历史信息进行关联规则挖掘, 以发现测试用例之间有用的规则,从而利用这些规则对某些测试用例进行删除; 最后,根据测试用例覆盖的代码模块数和代码行数对它们进行排序。实验结果表 明,本文的策略既能够保证被修改部分的全部测试用例被选上,又能够减少受修 改影响部分的测试用例数,充分符合回归测试的目的。 关键词:软件测试;回归测试;测试用例选择;数据挖掘;关联规则挖掘;测试 用例排序 a b s t r a c t s o f t w a r e t e s t i n gi s o n eo ft h em o s ti m p o r t a n t p a r t si n t h ep r o c e s so fs o f t w a r e d e v e l o p m e n t r e g r e s s i o nt e s t i n gi sak i n do ft e s tf o rt h ep u r p o s et ov a l i d a t em o d i f i e d s o f t w a r ec o r r e c t n e s s ,t h u st h ep r o c e s so fr u n n i n gt e s tc a s ei nt h er e g r e s s i o nt e s t i n g p h a s ei st h es a m ea st h a to fr u n n i n gt e s tc a s ei no t h e rt e s t i n gp h a s e ,o n l yt h et e s ts u i t e b ed i f f e r e n t r e c e n t l y , r e g r e s s i o nt e s t i n gs t r a t e g y c a nb ed i v i d e di n t o “r e t e s t - a l l ”a n d “s e l e c t i v e ”w i t ht h ea c c r e t i o no fs o f t w a r es c a l e ,“r e t e s t a l l ”s t r a t e g yi sn o tf e a s i b l e b o t hi nc o n s i d e r a t i o no ft h et i m ea n dc o s t ,e s p e c i a l l yw h e nt h e r ei sam i n o rc h a n g e a s c h a n g e dp a r t sm a ya f f e c to t h e ru n c h a n g e dp a r t s ,p r o p e rt e s tc a s es e l e c t i o ns t r a t e g y m u s tb eu s e dw h e nr e g r e s s i o nt e s t i n ga r ec a r r i e do u t h o wt oc h o o s eat e s ts u i t ea s s m a l la sp o s s i b l et h a tc a nc o v e ra l lt h ec h a n g e dp a r t sa n du n c h a n g e dp a r t sa f f e c t e db y c h a n g e si so n eo ft h em o s tp o p u l a rr e s e a r c hf i e l d d e v e l o p e r sc a nt e l lt e s t e r st h a t w h i c hp a r t sw e r ec h a n g e dw h e nan e wv e r s i o no fs o f t w a r ea p p e a r s i ts i m p l i f i e st h e p r o c e s so fc h o o s i n gt e s tc a s e sw h i c hc a nc o v e ra l lt h ec h a n g e dp a r t s h o w e v e r , i ti s m u c hm o r ed i f f i c u l tt oc h o o s ea l lt h et e s tc a s e sw h i c hb e l o n gt ou n c h a n g e dp a a s a c t u a l l ya f f e c t e db yc h a n g e s w ea s s u m et h a tt e s tc a s e sc o v e re i t h e rc h a n g e dp a r t so ru n c h a n g e d p a r t sa f f e c t e d b yc h a n g e s i no r d e rt oc o n s t r u c tam u c hm o r ea c c u r a t er e g r e s s i o nt e s ts u i t ea n d i m p r o v et h ee f f i c i e n c yo fr e g r e s s i o nt e s t , w ep r o p o s ean e wt e s tc a s es e l e c t i o ns t r a t e g y t h es t r a t e g yi sa sf o l l o w s f i r s t l y , s e l e c ta l lt e s tc a s e st h a tc o v e rt h ec h a n g e dp a r t s s e c o n d l y , b ya p p l y i n ga s s o c i a t i o nr u l e sm i n i n gt ot h er e m a i n i n go n e si nb a s e l i n et e s t c a s e s ,w et r yt of i n ds o m er u l e sa m o n gt e s tc a s e s ,a n da c c o r d i n gt ot h e s er u l e sw ec a n e x c l u d es o m et e s tc a s e sf r o mr e g r e s s i o nt e s ts u i t e f i n a l l y , w ep r i o r i t i z et e s tc a s e s a c c o r d i n gt ot h en u m b e ro fm o d u l e sa n dl i n eo fc o d et h e yc o v e lb ye x p e r i m e n tw e c a nc o n c l u d et h a tt h i sm e t h o dn o to n l yc h o o s e sa l lt e s tc a s e st h a tc o v e rt h ec h a n g e d p a r t s ,b u ta l s or e d u c e st h en u m b e ro ft e s tc a s e sa f f e c t e db yc h a n g e s t h i sm e t h o di s v e r ya p p r o p r i a t ef o rr e g r e s s i o nt e s tc a s es e l e c t i o n k e y w o r d s :s 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 ;t e s tc a s es e l e c t i o n ;d a t am i n i n g ; a s s o c i a t i o nr u l e sm i n i n g ;t e s tv a s ep r i o r i t i z a t i o n i i i 原创性声明 本人郑重声明:本人所呈交的学位论文,是在导师的指导下 独立进行研究所取得的成果。学位论文中凡引用他人已经发表或 未发表的成果、数据、观点等,均己明确注明出处。除文中已经 注明引用的内容外,不包含任何其他个人或集体已经发表或撰写 过的科研成果。对本文的研究成果做出重要贡献的个人和集体, 均已在文中以明确方式标明。 本声明的法律责任由本人承担。 论文作者签名:差障 日 论文作者签名:刭垦垄 日 关于学位论文使用授权的声明 本人在导师指导下所完成的论文及相关的职务作品,知识产 权归属兰州大学。本人完全了解兰州大学有关保存、使用学位论 文的规定,同意学校保存或向国家有关部门或机构送交论文的纸 质版和电子版,允许论文被查阅和借阅;本人授权兰州大学可以 将本学位论文的全部或部分内容编入有关数据库进行检索,可以 采用任何复制手段保存和汇编本学位论文。本人离校后发表、使 用学位论文或与该论文直接相关的学术论文或成果时,第一署名 单位仍然为兰州大学。 保密论文在解密后应遵守此规定。 论文作者签名:套驻参导师签名:4 曼敬日期:劢趣d 哆 :菊错r 矢亨 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 1 1 课题背景 第一章绪论 软件测试是根据软件开发阶段的规格说明和程序的内部结构而精心设计一 批测试用例( t e s tc a s e ,即输入数据和预期的输出结果) ,并利用这些测试用例 去运行程序,以发现错误的过程。它是软件开发过程中一个既重要又很难实施的 环节。同时它也是软件质量保证的关键步骤,是软件工程研究领域的重要内容。 回归测试在软件测试中扮演着重要的角色,它保证对软件的修改按照预期的 目标正常运行,同时修改没有对软件的其它部分造成负面影响、没有使原本正常 的功能出现错误,以确保在以前版本中运行正常的功能在新版本中仍然运行正常 以及新增加的功能也能够正常运行,且不会引入新的错误。对软件作了任何修改 后,都要应用回归测试来验证修改没有对软件带来负面影响以及新增部分的正确 性。 但是,如何减少回归测试的代价,是整个软件回归测试研究的难点和重点。 在渐进和快速迭代开发中,新版本的连续发布使回归测试进行得相当频繁,测试 用例库不断扩大,回归测试成本也随之急剧增加。目前可以通过测试用例选择解 决测试用例集膨胀的问题,即选择某些现存的测试库的子集去重新测试修改的程 序,以降低时间需求。 1 2 国内外研究现状及进展 方菲等人针对面向对象软件【1 1 ,通过分析对象系统的特性,定义了对象之间 的依赖关系,通过这个依赖关系,导出测试对象的方法序列,并应用程序切片技 术标识那些受到程序修改影响的测试用例,只有这些测试用例才需要在回归测试 中重新执行。王影提出了一种利用“条件切片技术 2 j ,来专门检验对于循环和 选择结构中“控制谓词的修改方法,从而更进一步降低回归测试的成本。马雪 英等提出用遗传算法解决测试用例最小化问题【1 5 l ,基于测试历史数据,设计基因 编码并构建初始种群,利用测试覆盖率和测试运行代价设计适应度函数,通过遗 麓埘六害 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 传算子完成进化过程并找到最优或近似最优解。k a b d u l l a h 等提出回归测试的防 火墙概念 3 1 ,针对面向对象的程序扩展类防火墙,以类为测试的基本单元,先标 识出改变的类与受改变影响的类,即构造一个类防火墙,然后对类防火墙中的类 根据对象关系图以一定的顺序进行回归测试。r o t h e r m e l 等提出的基于c f g 的用 例选择算法【4 1 ,该方法根据给定的程序来构造相应的c f g ,然后再比较程序修改 前后的图,找出修改部分来进行用例选择,主要针对是面向过程的用例选择算法。 h a r r o l d 和他的同事提出面向j a v a 程序的回归测试选择算法 5 1 ,该方法使用j i g ( j a v ai n t e r f a c eg r a p h ) 来表示程序,他的方法对整个系统的类构造j i g 图,来分析 修改的部分以及所影响的部分。h a r r o l d 等人【1 s l 也提出通过识别过时的和冗余的 测试用例,然后把它们从测试用例库中移除,从而形成一个新的回归测试用例库, 并且回归测试用例库和原来的测试用例库具有相同的测试覆盖率。 总之,回归测试是一项很耗时,成本很高的软件过程,各种研究都主要是围 绕降低成本,减少测试时间,同时又要确保软件的可靠性等方面来开展,从而尽 可能找出软件中未发现的错误。 1 3 课题研究的主要内容 本文的主要工作是深入研究现有的回归测试相关技术,包括面向过程的回归 测试选择方法和回归测试用例排序方法。分析了现有的回归测试选择方法的缺 点,在本文中提出了一种新的回归测试用例选择方法。这是一种基于关联规则挖 掘的回归测试选择方法,对测试历史的缺陷信息进行分析,得到测试用例之间有 用的关联规则,然后利用这些知识对测试用例集进行缩减,更加精确地构建回归 测试用例集。本文的主要贡献如下: 1 ) 充分研究了面向过程的回归测试选择算法,分析了它的优缺点。 2 ) 分析测试用例库的特点,提出建立测试用例与代码模块代码行数之间的 交叉索引,即某个测试用例测试了软件的哪些功能模块,涉及到源码的哪些行、 多少行。 3 ) 基于测试历史信息中的缺陷信息,将关联规则挖掘创造性的应用于回归 测试的测试用例集缩减上。 4 ) 基于选择好的回归测试用例集,对测试用例优先排序,把测试用例所覆 2 :氅料虫害 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 盖的代码模块数和代码行数作为排序准则。该方法可以加快测试用例的发现缺陷 的速度,给开发人员充分的时间修复缺陷,为系统的正常发布提供重要保障。 5 ) 在d b 2f o rz o so s c 的缺陷数据库上分别采用重测所有策略和本文提出 的策略进行了对比实验。 1 4 论文结构 本文共分六章。 第一章为绪论,介绍课题的研究背景、主要内容,确定课题的研究目标和研 究内容,讲述课题研究的重要意义和国内外研究现状。 第二章是软件测试概述。主要讲述软件测试的定义、目的、方法等一些相关 基本内容,介绍了测试用例的概念。 第三章介绍软件回归测试的相关内容。主要介绍回归测试中可能遇到的问 题、回归测试的范围和对回归测试用例库的维护。 第四章介绍并详细分析面向过程的回归测试用例集选择方法。 第五章针对已有方法的不足,提出一种基于关联规则挖掘的回归测试用例选 择策略,同时提出建立代码模块代码行数和测试用例之间的交叉索引,为测试 用例排序和测试用例选择提供重要信息。最后对重测所有策略和本文的策略进行 了对比实验。 第六章为结束语。 3 麓鲥矢害 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 第二章软件测试概述 软件测试就是在受控制的条件下对系统或应用程序进行操作并评价操作结 果的过程,其目的是为了保证软件产品的最终质量,在软件开发的过程中,对软 件产品进行质量控制。软件测试是保证软件质量、提高软件可靠性的最主要活动 之一,它实施对软件规格说明、设计文档和编码的最终审核 6 1 。测试阶段涉及测 试需求的制订,测试计划、测试过程的建立,测试的开发,测试的执行和测试结 果的评估,因此软件测试是一个极其复杂的过程。 2 1 软件测试的定义 1 9 8 3 年,i e e e 提出了软件工程标准术语,软件测试定义为:“使用人工和 自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求 或是弄清预期结果与实际结果之间的差别。力该定义明确提出了软件测试以检验 是否满足需求为目标。 2 2 软件测试的目的 g l e n f o r dj m y e r s 在( t h ea r to fs o f t w a r et e s t i n g ) ) 一书中的观点认为软件测 试的目的如下: 1 ) 软件测试是为了发现错误而执行程序的过程; 2 ) 测试是为了证明程序有错,而不是证明程序无错误; 3 ) 一个好的测试用例是在于它能发现至今未发现的错误; 4 ) 一个成功的测试是发现了至今未发现的错误的测试。 这种观点指明了软件测试不是为了演示软件的正确功能,而是要以查找错误 为中心,并通过分析错误产生的原因和错误的分布特征,帮助项目管理者发现软 件过程的缺陷,以便进行改进。但是不要误认为发现错误是软件测试的唯一目的, 查找不到错误的软件测试就是没有价值的。事实上,没有发现错误的测试也是有 价值的,完整的测试是评定测试质量的一种方法。测试的目的不仅仅是为了发现 软件缺陷与错误,而且也是对软件质量进行度量和评估。 4 麓料矢雾 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 从历史的观点来看,测试关注于执行软件来获得软件在可用性方面的信心, 并且证明软件能够满意地工作。这引导测试把重点投入在检测和排除缺陷上。现 代的软件测试持续了这个观点。同时,还认识到许多重要的缺陷主要来自于对需 求和设计的误解、遗漏和不正确。因此,早期的结构化同行评审被用于帮助预防 编码前的缺陷。证明、检测和预防已经成为一个良好的测试的重要目标川。证明、 检测、预防的目的分别是忉: a ) 证明的目的 ( 1 ) 获取系统在可接受风险范围内可用的信心; ( 2 ) 尝试在非正常情况和条件下的功能和特性; ( 3 ) 保证一个工作产品是完整的并且可用或者可被集成。 b ) 检测的目的 ( 1 ) 发现缺陷、错误和系统不足; ( 2 ) 定义系统的能力和局限性; ( 3 ) 提供组件、工作产品和系统的质量信息。 c ) 预防的目的 ( 1 ) 澄清系统的规格和性能; ( 2 ) 提供预防或减少可能制造错误的信息; ( 3 ) 在过程中尽早检测错误; ( 4 ) 确认问题和风险,并且提前确认解决这些问题和风险的途径。 总之,软件测试的目的是设计这样的测试,既能够系统地揭示不同类型的错 误,并且耗费最少的时间和最少的工作量,然后通过修正各种错误和缺陷提高软 件质量,避免在软件发布之后由于潜在的软件缺陷和错误造成的隐患所带来的各 种风险。 2 3 软件测试技术 根据需要的不同,软件测试技术的分类也不同。根据是否需要运行被测软件 来进行软件测试,将软件测试技术分为静态测试技术和动态测试技术 s l 。静态测 试不实际运行被测程序,而从分析程序结构出发审查和验证程序的正确性,主要 包括走查、符号执行、需求确认等。静态测试的优点是能够对所有的代码进行检 测而与执行路径无关和条件无关。缺点是无法度量系统的性能并且测试结果依赖 :茕翻哼j 天雾 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 于测试者的水平。动态测试则通过运行软件来检验软件的动态行为和运行结果的 正确性。 依据测试时是否需要了解被测软件代码,将软件测试技术分为黑盒测试、白 盒测试以及灰盒测试。黑盒测试( b l a c kb o xt e s t i n g ) 又叫功能测试( f u n c t i o n t e s t i n g ) e l 、数据驱动测试( d a t a d r i v e nt e s t i n g ) 或基于规格说明的测试 ( s p e c i f i c a t i o n b a s e dt e s t i n g ) 。在黑盒测试中,被测对象的内部结构、运作情况 对测试人员是不可见的。测试人员将被测试软件看成一个黑盒,完全不考虑软件 的内部结构,直接根据软件输入和输出之间的关系来设计测试用例,推断测试结 果的正确性。衡量测试用例设计的好坏,是看它们能测试程序逻辑的哪些功能。 黑盒测试方法的测试用例设计方法主要包括等价类划分、边界分析法、因果图法、 猜错法等。黑盒测试的优点主要有:比较简单,不需要了解程序内部的代码;从 用户角度出发,能很容易地知道用户会用到哪些功能,会遇到哪些问题。它的缺 点是不可能覆盖所有的代码,覆盖率较低。 白盒测试( w h i t e b o xt e s t i n g ) 也叫结构化测试( s t r u c t u r e dt e s t i n g ) 或者逻辑 驱动测试( l o g i c d r i v e nt e s t i n g ) 。这种测试方法从程序的内部逻辑着手,测试人 员需要知道程序内部的设计结构及具体的代码实现,并以此为基础设计测试用 例。测试时,要设计一些数据,对程序的各个逻辑路径进行测试,在不同点上检 查程序的状态,看它的实际状态与预期的状态是否一致。测试数据设计的好坏, 在于它能够覆盖程序逻辑路径的程度。白盒测试的测试用例设计方法主要包括语 句覆盖、判断覆盖、条件覆盖、判断条件覆盖、路径覆盖等。白盒测试的优点主 要有帮助测试人员提高代码的覆盖率,改善代码的质量,发现代码中隐藏的问题。 缺点是程序运行会有很多路径,不可能测试所有的运行路径,系统庞大时,测试 开销会非常大。 一般来说,黑盒法和白盒法两种测试方法使用的场合,并没有严格规定,在 软件测试的任何阶段都可以选择其中一种或者两种。如果知道程序要实现的功 能,就可以采用黑盒测试方法;知道程序内部的逻辑结构就可以采用白盒测试方 法。然而,这两种测试都不可能进行完全测试。对黑盒测试来说,要进行完全测 试,必须使用穷举输入测试,即把所有可能的输入数据都作为测试数据全部测试 一次,才能得到完全测试。但这是不现实的。现实中经常根据这两种方式的优缺 6 ;篱埘幺害 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 点把两种测试方法结合起来进行测试。 另外还有一种测试灰盒测试,它是介于白盒测试和黑盒测试之间的测 试。灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但不像白盒测 试那样详细、完整,只是通过一些现象、事件、标志来判断内部的运行状态。 2 4 软件测试的步骤 一般的软件系统,软件测试包含单元测试、集成测试、系统测试和验收测试 i s , 9 1 等一些阶段。下面简要地说明各阶段的情况: 1 ) 单元测试( u n i tt e s t i n g ) 单元测试是针对每个相当独立的模块的测试,在软件的代码层次上看该模块 能否完成设计要求。单元测试是软件测试最基本的组成部分,也是最重要的部分 之一,其目的是检验软件基本组成单位模块的正确性。 单元测试要注意如下的问题: a ) 单元的大小要适宜 一般是以程序中给出的模块为准,但有时一个模块可能太大,有时也可能太 小,这两者都会对单元测试的效果产生不利的影响。一般来讲,一个单元模块在 几十行到几百行源代码为宜。 b ) 单元测试一般要给出驱动模块和桩模块 一般来讲,一个单元是不能独立运行的,因此,要设计一些模块,使之能驱 动被测模块的执行,这种模块称之为驱动模块。另外,一个被测模块还可能调用 其它的模块,而在测试一个单元时,一般是不考虑其它模块的测试的,因此设计 一类模块称之为桩模块,用于模拟运行被测模块时调用的其它模块。 单元测试的主要目的有: ( 1 ) 验证代码是与设计相符合的; ( 2 ) 跟踪需求和设计的实现; ( 3 ) 发现设计和需求中存在的错误; ( 4 ) 发现在编码过程中引入的错误。 度量一套单元测试的好坏,不仅要考虑数量,更要考虑质量。衡量这个质量 的指标有两个。一是代码的覆盖率,在运行这套测试后,是不是所有的代码都有 7 :褥钟l 虫害 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 被执行;二是测试的敏感度,是不是能把软件的所有问题给找出来。 2 ) 集成测试( i n t e g r a t e dt e s t i n g ) 集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单 元之间接口的正确性。它根据集成测试计划,一边将模块组合成越来越大的系统, 一边运行该系统,以分析模块之间数据传输是否正确、各个模块连接起来之后能 否完成预定功能并能够正常工作、一个模块的功能是否影响了另一个模块的功能 实现。 集成测试的策略主要有自顶向下和自底向上两种。 ( a ) 自顶向下集成 自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始,按照 软件的控制层次结构,逐步把各个模块集成在一起。 自顶向下集成测试的具体步骤为: 以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有 桩模块用实际模块替代; 依据所选的集成策略( 深度优先或广度优先) ,每次只替代一个桩模块; 每集成一个模块立即测试一遍; 只有每组测试完成后,才着手替换下一个桩模块; 为避免引入新错误,须不断地进行回归测试( 即全部或部分地重复己做过 的测试) 。从第二步开始,循环执行上述步骤,直至整个程序结构构造完毕。 自顶向下集成的优点在于能尽早地对程序的主要控制和决策机制进行检验, 因此较早地发现错误。缺点是在测试较高层模块时,低层处理采用桩模块替代, 不能反映真实情况,因此测试并不充分。 ( 2 ) 自底向上集成 自底向上测试是从“原子 模块( 即软件结构最低层的模块) 开始组装测试, 因测试到较高层模块时,所需的下层模块功能均己具备,所以不再需要桩模块。 自底向上集成测试的步骤分为: 把低层模块组织成实现某个子功能的模块群( c l u s t e r ) ; 开发一个测试驱动模块,控制测试数据的输入和测试结果的输出; 对每个模块群进行测试; 8 :镌研虫害 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能 的新模块群。 从第一步开始循环执行上述各步骤,直至整个程序构造完毕。 自底向上集成方法不用桩模块,测试用例的设计亦相对简单,但缺点是程序 最后一个模块加入时才具有整体形象。它与自项向下的测试方法优缺点正好相 反。因此,在测试软件系统时,应根据软件的特点和工程的进度,选用适当的测 试策略,有时混和使用两种策略更为有效,上层模块用自顶向下的方法,下层模 块用自底向上的方法。 3 ) 系统测试( s y s t e mt e s t i n g ) 系统测试是对已经集成好的软件系统进行彻底的测试,以检验软件系统的正 确性和性能( 如运算的精度、系统的反应时间等) 是否满足其规格说明书所指定的 要求。软件系统测试要确认软件可以在规定的操作环境里正常运行,还要考虑软 件在那些不正常的强度很大的环境里能正常运行的能力。一个系统也可以看成是 个大的单元,所以,系统测试的目的是要发现那些不能被单元测试或集成测试所 发现的错误。 在系统测试中,不仅需要对系统的功能进行测试,还要对非功能属性进行测 试。系统的非功能属性主要有性能、可用性、安全性、兼容性、恢复性等。非功 能测试的生命周期和功能测试一样,贯穿于软件开发的整个过程。与功能性测试 相比,非功能性测试需求是相当难以确定的,像可用性、可维护性这样的需求相 对比较主观,不是很容易测试。而且大多数的非功能性软件缺陷和设计有关,修 复的代价相对较高,因此,需要将非功能性测试在软件测试过程中适当提前准备, 而不是到用户验证时才进行。 软件系统测试方法很多,主要有功能测试、性能测试、压力测试、长寿命测 试、可靠性测试等。 系统测试在许多情况下是比较复杂的,仅仅编制一个测试程序是不够的,往 往伴随着要建立一个软硬结合的测试系统。在某种程度上来说,系统测试属于黑 盒测试,是站在用户的角度上来看待系统,对系统进行测试,证明系统是否已经 满足了用户的需要。其测试是基于需求规格说明书。系统测试是一种后期测试, 错误发现后的定位工作比较困难。 9 蔺誓一虫亨 基于关联规则挖掘的回归测试选择策略研究 兰州大学硕士学位论文 4 ) 验收测试( v e r i f i c a t i o nt e s t i n g ) 验收测试旨在向软件的购买者展示该软件系统满足其用户的要求。它的测试 数据通常是系统测试数据的子集。所不同的是,验收测试常常需要用户的代表在 场,甚至在软件安装的现场。 验收测试是将最终产品与最终用户的当前需求进行比较的过程,是软件开发 结束后软件产品向用户交付之前进行的最后一次质量检验活动,它解决开发的软 件产品是否符合预期的各项要求,用户是否接受等问题。验收测试不只检验软件 某方面的质量,还要进行全面的质量检验并决定软件是否合格。因此,验收测试 是一项严格的、正规的测试活动,并且应该在生产环境中进行。如果软件是按合 同开发的,在合同中规定了验收标准,则验证测试由签订合同的用户进行。如果 产品不是按合同开发的,开发组织可以采用其他形式的验收测试舢p h a 测试 和b e t a 测试。 a l p h a 测试和b e t a 测试都是在指定的时间内以生产方式运行并操作软件。 a l p h a 测试一般在开发公司内,由最终用户进行。被测试的软件由开发人员安排 在可控的环境下进行检验并记录发现的故障和使用中的问题。b e t a 测试则一般在 开发公司之外,由经过挑选的真正用户群进行,它是在开发人员无法控制的环境 下,对要交付的软件进行的实际应用性检验。在测试过程中用户要记录遇到的所 有问题,并且定期向开发人员通报测试情况。 l 5 ) 回归测试( r e g r e s s i o nt e s t i n g ) f 回归测试是在软件维护阶段,对软件修改之后进行的测试。其目的是检验对 软件进行的修改是否正确。这里,修改的正确性有两重含义:一是指所作的修改 达到了预期的目的,如错误得到了改正,能够适应新的运行环境;二是指不影响 软件的其它部分的正确性。 2 5 软件测试用例 在软件测试过程中,测试用例是按照一定顺序执行的与测试目标相关的一系 列测试活动的描述,是整个软件测试工作的核心,也是难点。r u p t 3 1 l 中对测试用 例的定义如下:测试用例是为特定目标开发的测试输入、执行条件和预期结果的 集合。这些特定目标可以是:验证或核实一个特定的程序路径是否符合特定需求。 1 0 :褥埘虫乎 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 测试用例的设计的好坏决定了被测软件的质量和软件测试的效果。设计测试用例 时既要有一般情况,也应有极限情况以及最大和最小的边界值情况。如何生成最 能发现被测程序问题的测试数据是测试人员一直努力追求的目标。 使用测试用例的好处有以下几种: 1 ) 测试用例构成了设计和制定测试过程的基础,在开始实施测试之前设计 好测试用例,可以避免盲目测试。测试组设计好测试用例之后,提交给开发组评 审,可以减少错误的测试用例对测试的影响,并且可以提高测试效率; 2 ) 测试用例的使用,使得软件测试的实施重点突出、目的明确; 3 ) 在软件版本更新后只需对以前的测试用例进行少部分的修改,便可投入 到当前的测试工作,提高工作效率,加快开发速度; 4 ) 功能模块的通用化和复用化使得软件易于开发,而测试用例的通用化和 复用化则会使软件测试易于开展,并随着测试用例的不断精化测试效率也会不断 提高; 5 ) 一个维护良好的测试用例库,为回归测试的正常运行提供重要的保证。 2 6 小结 本章简要地介绍了软件测试的一些概念,给出了软件测试的定义、相关技术、 步骤和方法等,详细介绍了测试用例的概念。 :篱留叮虫害 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 第三章软件回归测试 回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很 大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭 代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极限编程方法中, 更是要求每天都进行若干次回归测试。因此,测试用例库不断扩大,回归测试成 本也随之急剧增加。 目前,可以通过两种途径解决测试用例集膨胀的问题:一是测试用例最小化, 二是进行测试选择。测试用例最小化技术( t e s ts u i t em i n i m i z a t i o nt e c h n i q u e s ) 或测 试用例缩减技术( t e s ts u i t er e d u c t i o nt e c h n i q u e s ) ( 如文 1 6 - 2 1 1 ) ,就是在原始用例集中, 找到一个最小的测试用例子集,并能够提供跟原始测试用例集一样的测试覆盖 率;而测试用例选择( t e s ts u i t es e l e c t i o n ) ,就是从原始用例集中选择出一个用例 子集,能够覆盖所有的修改,但这种方法一般不能提供与原始测试用例集相同的 测试覆盖( 如文【1 4 , 2 2 , 2 3 , 7 a ) 。 回归测试有两种常见的策略,一种是重新测试所有部分的方法,它运行所有 的测试用例,但这种策略可能消耗大量的时间及资源;另一种是回归测试选择技 术,通过选择某些现存的测试库的子集去重新测试修改的程序,以降低时间需求。 回归测试选择技术也有两种方法:安全方法和最小化方法。安全方法是选择所有 覆盖了受影响的测试用例,而最小化方法是选择测试用例的最小子集,使得每一 个受影响的部分被覆盖至少一次。 当前的回归测试选择技术,大多是首先考虑如何高效地识别软件修改和修改 所影响的部分,从而能集中精力对这些修改和修改受影响的部分进行测试,然后 考虑如何重用现存的测试用例。 3 1 回归测试问题 软件的变化可能是源于发现错误并作了修改,也可能是因为在集成或者维护 阶段加入了新的功能。当软件中所包含的错误被发现时,如果错误跟踪与管理系 统不够完善,就可能会遗漏对这些错误的修改;或开发者对错误理解得不够透彻, 鹄科虫害 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 也可能导致所作的不正确的修改;或开发者修改了这个错误但是同时又引入了一 个新的错误。这些都是修改失败的情形。 回归测试的目的是检验对软件进行的修改是否正确。在此,修改的正确性有 两重含义:一是对软件的修改达到了预期目的;二是软件的修改没有对软件的其 他功能产生副作用,即没有导致其他功能的不正常。回归测试包括两部分:对修 改部分的测试以及与修改相关代码的测试。对被修改部分的重新测试,如果修改 部分的功能以及接口没有发生变化,可以直接运行原来的测试用例。但是如果修 改导致功能或接口发生变化,则要根据修改后的功能点或接口的变化增加、删除 或改进测试用例。由于程序的修改会对软件产生涟漪效应,因此对与修改部分有 交互关系的代码也要进行重新测试,以此来保证修改没有对软件产生不良作用。 回归测试主要解决的是怎样有效地确定修改受影响部分以及重利用测试用 例库的问题。修改影响分析为测试用例的选择提供了依据,因此在进行回归测试 选择之前,必须要确定修改以及修改受影响的部分。回归测试需要解决的四个基 本问题对应于回归测试的过程如下【1 0 ,1 1 】: 1 ) 修改影响分析:鉴别修改和修改受影响的部分。 2 ) 测试顺序:重测影响部分的策略。 3 ) 覆盖标准:重测部分的覆盖标准。 4 ) 测试用例库的维护:测试用例库的维护包括测试用例库的选择、重用和 更新。 在进行回归测试时,首先对程序的修改和修改影响范围进行确定,这部分工 作用于确定进行测试的对象。确定测试对象后,需要对测试对象选择测试用例。 在重测策略方面可以选择重测所有测试用例或选择性测试,由于重测所有策略的 工作量大,效果不明显,因此大部分回归测试都进行选择性测试,只选取一部分 测试用例进行测试。这导致需要确定选择测试用例的标准,即测试用例的覆盖标 准。通常,进行选择性回归测试的覆盖标准是要保证测试用例覆盖修改和修改影 响的部分。 回归测试还有一个重要的部分就是对测试用例库进行维护。由于程序的不断 改进和发展,其测试用例库越来越大,因此有些测试用例是冗余的,需要对测试 用例库进行精简。 掬孵虫害 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 3 2 回归测试范围 软件的测试用例库是由测试该软件的所有测试用例组成的。在进行回归测试 的时候,根据所确定的回归测试策略,从测试用例库中提取合适的测试用例组成 回归测试用例包,通过运行回归测试用例包来实现回归测试。不同的测试策略将 导致不同的测试结果。常用的回归测试策略根据测试的目标不同可分为以下三种 7 1 : 1 ) 局限在修改范围内的测试。这类回归测试仅根据修改的内容来选择测试 用例,这种测试只能保证修改的缺陷或新增的功能被实现了,对于修改是否对整 个系统产生影响并不加以考虑。因此,该类测试方法效率最高,但风险最大。 2 ) 在受修改影响的功能范围内进行回归测试。这类回归测试需要分析对当 前的修改可能影响到哪部分代码或功能,对于所有受影响的功能和代码都将被重 新测试。这类测试避免了第一类测试方法的不足,同时其测试效率比全部重测的 方法高。现有的回归测试策略基本上都采用这种方式。 3 ) 根据一定的覆盖率指标选择回归测试。该方法一般是在相关功能影响范 围难以界定的时候使用。由于功能范围难以界定,测试的对象就难以确定。为了 确定测试对象,同时提高测试效率,可以设定一个测试指标来进行测试。这种方 式最简单的策略是规定修改范围内的测试是1 0 0 9 6 ,其他范围内的测试规定一个 用例覆盖阈值,例如6 0 。 3 3 回归测试包 对于一个软件开发项目来说,项目的测试组在实施测试的过程中会将所开发 的测试用例保存到“测试用例库 中,并对其进行维护和管理。当得到一个软件 的基线版本时,用于基线版本测试的所有测试用例就形成了基线测试用例库【1 3 1 。 在需要进行回归测试的时候,就可以根据所选择的回归测试策略,从基线测试用 例库中提取合适的测试用例组成回归测试包,通过运行回归测试包来实现回归测 试。 1 4 :褥一虫争 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 3 3 1 测试用例库的维护 在软件不断地发展和维护过程中,程序会经常变动,如进行修改、添加或删 除等操作,将会导致软件功能、应用接口以及实现方式等发生变化。因此基线测 试用例库中的某些测试用例就失去了有效性,甚至完全不能运行。而且由于添加 了新的软件功能,对这些新增功能进行测试的测试用例往往都不在基线测试用例 库中,这将导致程序测试的遗漏,可能会引起整个系统的错误,产生严重的后果。 为了保证基线测试用例库中测试用例的有效性和完整性,必须对其进行维护 和升级。如果现有的测试用例失去了有效性或不能运行,必须设计添加新的测试 用例,同时将失效的测试用例从测试用例库中删除。并且,对软件的新功能或者 现有测试用例无法覆盖的软件功能或特征,必须增加新的测试用例。因此,基线 测试用例库的维护工作不仅包括确定测试用例库中测试用例的有效性,还包括增 加新的测试用例来保证测试的完整性。 测试用例库的维护工作【1 2 1 3 】是一个不问断的过程,在基线测试用例库的基础 上进行测试用例的添加、删除、改进等操作。测试用例库的维护主要包括以下两 个方面: 1 ) 测试用例库完整性保证方面 测试用例库完整性保证方面主要是添加新的测试用例,来保证对程序测试没 有漏洞,避免测试的不完整性和不充分性。如果程序中某部分构件或接口在现有 的测试中没有被测试,就需要设计新的测试用例来对其进行测试,并将新的测试 用例添加到测试用例库中。 2 ) 测试用例库有效性保证方面 测试用例库有效性保证方面主要是指删除无效的、冗余的测试用例和改进难 以约束的测试用例。 软件在其生命周期中会频繁地回溯,在此过程中会被修改和不断推出新的版 本,修改后的或者新版本的软件会添加一些新的功能或者在软件功能的实现上产 生某些变化。随着软件的改变,测试用例库中的一些测试用例可能会失去针对性 和有效性,而另一些测试用例可能会变得过时,还有一些测试用例将完全不能运 行。同时,被修改的或新增添的软件功能,重新运行以前的测试用例并不足以揭 麓曩岬j 天拿 基于关联规则挖掘的回归测试选择策略研究兰州大学硕士学位论文 示其中的问题,因为没有相应的测试用例针对软件新增的部分做验证。这就出现 开发信息和测试信息脱节的现象。当开发信息发生了变化,测试信息必须随之变 化。为了最大限度地满足客户的需要和回归测试的要求,保证测试用例库中测试 用例的有效性,必须对测试用例库进行维护。 测试用例库的维护工作主要有下述几个方面: 1 ) 删除过时的测试用例:因为需求或者其他开发信息的改变等原因可能会 使一个基线测试用例不再适合被测试系统,这些测试用例就会过时。所以,在软 件的每次修改后都应进行相应的过时测试用例的删除工作。 2 ) 改进不受控制的测试用例:随着软件项目的进展,测试用例库中的用例 会不断增加,其中会出现一些对输入或者运行状态十分敏感的测试用例。这些测 试不容易重复且结果难以控制,会影响回归测试的效率,需要进行改进,使其达 到可重复和可控制的要求。 3 )

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论