(计算机软件与理论专业论文)基于多层次功能模型的软件回归测试技术研究.pdf_第1页
(计算机软件与理论专业论文)基于多层次功能模型的软件回归测试技术研究.pdf_第2页
(计算机软件与理论专业论文)基于多层次功能模型的软件回归测试技术研究.pdf_第3页
(计算机软件与理论专业论文)基于多层次功能模型的软件回归测试技术研究.pdf_第4页
(计算机软件与理论专业论文)基于多层次功能模型的软件回归测试技术研究.pdf_第5页
已阅读5页,还剩60页未读 继续免费阅读

(计算机软件与理论专业论文)基于多层次功能模型的软件回归测试技术研究.pdf.pdf 免费下载

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

文档简介

上海帅范大学母 _ 上研究生学位论文摭于多层次功能模型的软件回归测试技术删f 究 摘要 软件回归测试是软件测试的主要方法之一,它保证软件被修改后,被修改 的部分按照预期目标正确运行,同时对软件的修改没有对软件的其它部分造成 负面影响,没有使原本正常的功能失效。软件回归测试是代价较高的测试方法, 但是在软件测试过程中又是必不可少的。如何减小回归测试用例集规模以降低 回归测试代价一直是软件回归测试研究的重点。 到目前为止,已经有很多软件回归测试技术,其中具有代表性的几种技术 是全部回归测试技术,随机选择回归测试技术,最小化回归测试技术,数据流 回归测试技术,安全回归测试技术等。但是这些回归测试技术都是基于源程序 的。其中安全回归测试技术虽然保证了测试质量,但是测试代价较高。另外, 在进行回归测试分析时,现有的研究一般基于程序流程图或单一的业务流程图, 没有考虑到业务之间的联系。现阶段,软件测试第三方逐渐介入到软件测试过 程中,功能测试是其中一项重要内容,而且对业务流程间联系的测试渐渐受到 重视,所以基于功能的、同时考虑业务需求的回归测试技术研究具有重要的瑗 实意义。 本论文致力于功能回归测试技术研究。考虑到业务之间的联系,本文提出 基于业务流程建立多层次功能模型。在分析并讨论了现有软件回归测试技术特 点和存在的问题的基础上,提出了基于多层次功能模型的安全选择回归测试技 术。该技术首先依据业务流程建立多层次功能模型以及在该模型基础上生成测 试用例和执行测试,之后在已经建立的多层次功能模型基础上进行安全回归测 试分析,其次根据测试时间和资金的限制进行基于变更的回归测试分析或基于 代价分析的回归测试分析。该技术在保证软件质量的基础上有效地降低了测试 花销,减小了回归测试用例集的规模。 最后本文结合中国银联信息处理中心系统集成测试一转接子系统功能测试 测试实例,说明该技术是一项灵活有效并且十分实用的回归测试技术。 关键词:软件回归测试,功能回归测试,多层次功能模型,安全选择回归测试 j :海帅范人学顿卜研究生学位论文 皋j + 多层次功能模型的软件嘲归测试技术研究 a b s t r a c t r e g r e s s i o nt e s t i n g iso n eo ft h ep r i m a r ys o f t w a r et e s t i n gt e c h n i q u e s r tis a p p l i e dt om o d i f i e ds o f t w a r et op r e y i d ee o n f i d e n c et h a t t h ec h a n g e dp a r t sb e h a v e a si n t e n d e da n dt h eu n c h a n g e dp a r t sh a v en o tb e e na d v e r s e l ya f f e c t e db yt h e m o d i f i c a t i o n t h o u g hr e g r e s s i o nt e s t i n si sc o s t l y ,i ti sa b s o l u t e t yn e c e s s a r yi n t e s tp r o c e s s i tisa l w a y sar e s e a r c hf o c u st h a t h o wt or e d u c et h ec o s to fr e g r e s s i o n t e s tb yr e d u c et h et e s ts u it e u pt on o w ,t h e r ea r em a n ys o f t w a r er e g r e s s i o nt e s t i n gt e c h n i q u e s ,s u c ha s f e t e s ta 1 1r e g r e s s i o nt e c h n i q u e ,r a n d o ms e l e c tr e g r e s s i o nt e e h n i q u e ,m i n i m i z a t i o n r e g r e s s i o nt e c h n i q u e ,d a t af l o wr e g r e s s i o nt e c h n i q u e ,s a f er e g r e s s i o nt e c h n i q u e e t c h o w e v e r ,a l lt h e s et e c h n i q u e sa r ec o d e b a s e d a m o n gt h e s et e c h n i q u e s ,t h e s a f er e g r e s s i o ng u a r a n t e e st h et e s tq u a l i t yb u tl o s e st h ee f f i c i e n c ya tt h es a m e t i m e i na d d i t i o n ,t h e s et e c h n i q u e su s et h ep r o g r a md a t af l o wg r a p ho rt h eo p e r a t i o n f l o wg r a p ho fas i n g l eo p e r a t i o na n di g u o r et h er e l a t i o n s h i p sb e t w e e nt h e o p e r a t i o n sw h i c ha r ea l s oi m p o r t a n tf o rt e s t i n gw h e np e r f o r m i n gt h er e g r e s s i o n t e s ta n a l y s e s t o d a y ,t h et h i r dp a r t yo fs o f t w a r et e s t i n gi st a k i n gp a r ti nt e s t i n g p r o c e s s a st h ef u n c t i o n a lt e s t i n gi sv e r yi m p o r t a n tf o rt h et h i r dp a r to fs o f t w a r e t e s t i n s ,a n dt h et e s tf o rr e l a t i o n s h i pb e t w e e no p e r a t i o n sh a sa t t a c h e di m p o r t a n c e , i ti sp r a e t i c a lt oi n v e s t i g a t et h er e g r e s s i o nt e c h n i q u eb a s e do nf u n c t i o na n d o p e r a t i o ns p e c i f i c a t i o n s i nt h i st h e s i s ,w ec o n c e n t r a t eo nt h er e s e a r c ho ft h ee f f i c i e n tr e g r e s s i o n t e c h n i q u eb a s e do nf u n c t i o n c o n s i d e r i n gt h er e l a t i o n s h i pb e t w e e nt h eo p e r a t i o n s , t h em u l t i l a y e rf u n c t i o n a lm o d e lw a sp u tf o r w a r dw h i c hi sc r e a t e df r o mt h e o p e r a t i o ns p e e i f i c a t i o n s a tt h es a m et i m e ,t h em e t h o do fc r e a t i n gt h et e s tc a s e s o ft h em u l t i l a y e rf u n c t i o n a lm o d e li sa l s om e n t i o n e d t h ec h a r a e t e r i s t i e sa n d d i s a d v a n t a g e so fs o m er e g r e s s i o nt e s t i n gt e c h n i q u e sa r ed i s c u s s e d , o nw h i c hw e b r i n go u tt h es a f es e l e c t i v er e g r e s s i o nt e e h n i q u e f i r s t l y ,t h em u l t i l a y e r f u n c t i o n a lm o d e lw a se s t a b l i s h e dw h i c hw a sb a s e do nt h eo p e r a t i o nf l o w sa n dt h e n t h et e s tc a s e sw e r ec r e a t e da n dp e r f o r m e d s e c o n d l y ,t h es a f er e g r e s s i o nt e c h n i q u e w a su s e dt oa n a l y z et h et e s t i n g f i n a l l y ,t h em o d i f i c a t i o n b a s e dr e g r e s s i o n t e c h n i q u eo rt h ec o s t b a s e dr e g r e s s i o nt e c h n i q u ew a st a k e na c c o r d j n gt o t h et j m e a n dt h ef i n a n c eo ft h ep r o j e c t t h es a f es e l e c t i v er e g r e s s i o nt e c h n i q u en o to n l y g u a r a n t e e st h eq u a l i t yo ft h ep r o j e c tb u ta ls or e d u c e st h ec o s ta n dt h er e g r e s s i o n t e s ts u i t e t h es a f es e l e c t i v er e g r e s s i o nt e c h n i q u eb a s e do nm u l t i l a y e rf u n e t i o n a lm o d e l w a sc a r r i e do u ti nt h ep r o j e c to ft h ec h i n a u n i o np a ys y s t e mi n t e g r a t i o nt e s t i n s - t h e n w i t c hs u b s y s t e mf u n c t i o n a lt e s t i n si ti si n d i c a t e dt h a tt h et e c h n i q u ei sf l e x i b l e e f f e c t i v ea n dp r a e t i c a b l e k e y w o r d s :s o f t w a r et e s t i n g ,f u n c t i o n a lr e g r e s s i o nt e s t i n g ,m u l t i l a y e rf u n c t i o n a t m o d e l s a f es e l e c t i v er e g r e s s i o nt e c h n i q u e 上海帅范大学研究生学位论文 基于多层次功能模型的软件吲归测试技术研究 第一章绪言 1 1 论文研究背景 软件测试是软件工程中的重要环节,随着软件规模的日益扩大,软件测试 成为保证软件质量的重要手段。大量统计资料表明,软件测试的开销在整个软 件开发费用中占到总开销的4 0 到6 0 “3 。 功能测试是一种解决模块测试问题的重要测试方法。用这种方法进行测试 时,被测程序被当作打不开的黑盒,在完全不考虑程序内部结构和内部特征的 情况下,测试者只知道程序输入与输出之间的关系或是程序的功能,必须依靠 能够反映这一关系的程序功能需求说明书确定测试用例,从而推断测试结果的 正确性。 如果测试出某个功能失效,那么修复缺陷时需要对软件进行修改。这些对 软件的修改可能无效,也可能会导致原本正常的其它功能失效。同样,当添加 新的业务功能点时,软件的功能流程就会发生改变。新的功能流路径建立起来, 新的i 0 操作可能也会出现,还有可能激活新的逻辑0 1 。基于功能的回归测试 是对某些已经进行过测试的功能点的重新测试,以保证对软件的修改不会传播 无法预料的作用。 软件回归测试在软件测试中扮演着重要的角色,是一种代价较高的测试方 法。如何减小回归测试代价是软件回归测试研究的重点和难点。回归测试用例 从原测试用例集中有目的地进行选择,需要运用有效的回归测试技术。 到目前为止,已经有很多软件回归测试技术。1 ,其中具有代表性的几种技术 有全部回归测试技术( r e t e s t a l lt e c h n i q u e ) 、随机选择回归测试技术( r a n d o m t e c h n i q u e ) 、最小化回归测试技术( m i n i m i z a t i o nt e c h n i q u e ) 、数据流回归测 试技术( d a t af l o wt e c h n i q u e ) 、安全回归测试技术( s a f et e c h n i q u e ) 等。全部 回归测试技术适用于系统规模较小,或系统改动较大的情况,随机选择回归测 试技术中测试用例的选择一般根据测试人员的专业知识或主观经验。最小化回 归测试技术目标在于选择出一个最小的测试用例集合,这些测试用例可以覆盖 所有程序p 被修改的部分”“。h o r r o d 和s o f f a 研究的数据流回归测试技术 重新测试那些覆盖了从程序尸中删除、新增或者修改的数据定义的测试用例以 及覆盖了被修改谓词的测试用例”1 。h o r r l d 和r o t h e r m e l 的安全回归测试中使 用控制流图来描述源程序j d 和已经更改的程序p ,使用测试统计表来选择那些 至少覆盖一条已经更改语句或增添语句的测试用例。 i 海师范人学研究生学位论文基于多层次功能模型的软件l n l 归测试技术研究 但是,以上介绍的各种回归测试技术都基于源程序,基于功能的回归测试 技术研究较少。但随着软件规模的扩大和软件复杂度的增加,软件测试逐渐成 为一支独立的队伍参与到软件工程中,软件测试人员只能根据可以得到的软件 信息进行测试,所以基于源程序的回归测试对于本来测试时间就很紧张的软件 项目来说是不现实的。由此可见,如何提高基于功能回归测试的效率及减小回 归测试用例集是一个具有现实意义的课题。 其次,几种回归测试技术中,虽然安全回归测试技术的可靠性较高,但通 过该技术得到的回归测试用例集一般比较大。另外,回归测试用例集规模受到 被修改程序所在位置的影响。所以虽然测试质量得到保证,但是在实际操作中 的回归测试效率下降很多。 再次,在进行回归测试分析时,现有研究一般基于程序流程图或单一的业 务流程图“”,但忽略了业务之间的联系。实际应用中,业务之间存在必然的联 系,这种联系往往在软件需求中很重要,然而对这种联系进行的测试没有得到 足够的重视,已有的回归测试技术没有体现整体业务流程关系。关注业务之间 联系对于整体提高测试质量也起着重要作用。 基于以上问题,本文结合笔者参加的中国银联信息处理中心系统集成测试一 转接子系统功能测试,提出了基于多层次功能模型的安全选择回归测试技术。 该技术针对软件功能回归测试,首先,依据业务流程建立多层次功能模型以及 在该模型基础上生成测试用例并执行测试。其次为了保证回归测试质量,选用 安全回归测试技术进行分析,之后根据软件项目的时间、资金条件进行基于变 更回归测试分析或基于代价分析的回归测试分析以降低回归测试的花销。实践 证明,基于多层次功能模型的安全选择回归测试技术既保证了测试质量,又灵 活应用其它测试分析方法来减小测试代价,是一种有效实用的回归测试技术。 1 2 论文的主要工作 本文首先阐述了软件测试和软件回归测试的基本概念。其次分析了基于功 能的软件回归测试的重要性和现有软件回归测试技术的特点和存在的问题,并 在此基础上提出基于业务流程建立多层次功能模型,同时给出了基于多层次功 能模型的测试用例生成方法。在多层次功能模型的基础上,本文详细描述了安 全选择回归测试技术的思想和过程。本文根据多层次功能模型的特征,对安全 回归测试技术及基于变更的回归测试技术做了有效修改,还根据多层次功能模 型的特点制定了基于代价分析的回归测试的代价分析规则,大大提高了测试质 量。结合多层次功能模型及安全选择回归测试技术,可以灵活有效地进行功能 回归测试。最后,本文结合中国银联信息处理中心系统集成测试一转接子系统功 | 二海师范大学圳宄生学位论文 早f 多层次功能模型的软件刚归测试技术研究 i i i ! , i 试实例,说明基于多层次功能模型的安全选择回归测试技术是一种既可以 保证测试质量又可以根据实际测试情况灵活应用、有效的回归测试技术。 1 3 论文的结构 本文的章节安排如下: 第一章绪言,介绍了论文的研究背景、论文的主要工作及论文结构。 第二章软件测试与软件回归测试,论述了软件测试的概念、分类、阶段划 分及软件测试生命周期和软件生命周期的关系;阐述了软件回归测试的基本概 念、分类及现有的各种软件回归测试技术并提出存在的问题。 第三章多层次功能模型,在介绍软件功能测试和功能回归测试的基础上引 出多层次功能模型概念,并给出多层次功能模型的构建方法。 第四章基于多层次功能模型的安全选择回归测试技术,先总体介绍基于多 层次功能模型的安全选择回归测试过程,之后详述了基于多层次功能模型的测 试用例生成方法以及安全选择回归测试步骤。 第五章测试实例及分析,根据中国银联信息处理中心系统集成测试一转接 子系统功能测试实例建立多层次功能模型,并生成测试用例、执行测试用例。 根据测试结果,进行安全选择回归测试分析,最后给出实验结果和结果分析, 证明基于多层次功能模型的安全选择回归测试技术的灵活性、有效性和实用性。 第六章总结与展望,对本文的工作进行了总结并提出下一步的工作。 上簿师箍人学研究生学位论文 笨于多崖次功能模型的软件匣i 归钡6 试技术研究 第二章软件测试与软件回归测试 2 。1 软件测试 2 1 1 软件测试概述 软件测试是软件开发阶段的个重要的环节,在软件开发的过程中,开发 者的主观认识可能有与客观事实不相符的地方,在软件生命周期的每个阶段都 有可能产生误解或差错。r w j e s e n 曾经列出一个表格,说明了几个典型系统 中软件测试所占的开销,平均约占4 8 ,并且给出了一个突出的例子:美国n a s a 的a p o l i o 登月计划,大约有8 0 的经费用于系统测试中。在极端情况下,例如 那些关系到生命安全、重大财产安全的软件的测试费用,可能相当于软件工程 其它步骤的3 到5 倍。由此可见软件测试在大型系统开发中的地位和作用。其 实随着人们对软件系统的期望值日益提高,软件的规模和软件的复杂程度也会 日益增加,软件测试所占的比重和地位也会越来越高。 在i e e e 提出的软件工程标准术语中给软件测试下的定义为。3 : “使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它 是否满足规定的需求或是弄清楚预期结果与实际结果之间的差别。”g r e n f o r d j m y e r s 在t b ea r to fs o f t w a r et e s t i n g ) ) 一书中明确指出了软件测试的目 的1 : ( 1 ) 软件测试是为了发现错误而执行程序的过程。 ( 2 ) 测试是为了证明程序有错,而不是证明程序没有错误。 ( 3 ) 一个好的测试用例是在于它能发现至今没有发现的错误。 ( 4 ) 一个成功的测试是发现了至今没有发现的错误的测试。 这就说明软件测试以发现错误,检查是否满足需求为目标。 近年来,尽管软件测试技术有长足的进步,但总的来说,仍然和软件开发 实践提出的要求有相当大的距离。测试手段的进展也远远没有达到令人满意的 程度。 2 1 。2 软件测试的分类 软件测试可以从不同的角度进行分类: 1 根据程序执行的方式,可以将软件测试方法分为人工测试( m a n u a lt e s t i n g ) 和自动化测试( a u t o m a t i ct e s t in g ) 两类。 2 根据测试过程中程序的执行状态,可以将软件测试分为静态分析测试 上海师赴凡学研究生学位论文基十多謦敬功能稹型的较侍虹溅道教术q ;克 ( s t a t i ca n a l y s i s ) 和动态测试( d y n a m jct e s t jn g ) “。 ( 1 ) 静态分析方法是对被测试程序特征分析的一些方法的总称,其最大的 特征是在对程序进行静态分析的过程中不执行被测程序。目前,人们 已经开发出一些静态分析系统作为软件测试工具,如p u r i f y 、 l o g js c o p e 、m a c a b e 等。静态分析被当作是一种自动化的代码检验过程, 主要对程序进行控制流分析、数据流分析、接口分析和表达式分析等。 静态分析一般由计算机辅助完成,其对象是计算机程序,根据程序设 计语言的不同,相应的静态分析工具也往往不同。 ( 2 ) 动态测试方法的一个最大的特征就是在测试的过程中执行被测试源程 序。其基本思想是使程序有控制地进行,并从多种角度观察程序运行 时的行为。在对程序进行动态测试的过程中,一般首先利用动态测试 工具在被测试的源程序中的某些位置自动的插入测试探针,插入探针 后的源程序经过编译运行后,可以记录得到被测试程序对给定的测试 用例的逻辑覆盖以及所有被测试的可执行语句的执行状态报告等信 息。另外,在动态测试时经常需要为被测试的源程序编写驱动模块 ( d r i v em o d e l ) 和桩模块( s t u bm o d e l ) ,并且有目的、有针对性地选择 一些测试用例,以驱动其运行“。 3 根据测试过程中对被测程序内部细节的关心情况,软件测试方法可分为黑盒 测试和白盒测试o “。 ( 1 ) 黑盒测试又称为数据驱动测试( d a t ad r i v i n gt 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 ) 。在进行黑盒测试时,把软 件当作一个黑盒,只需找到程序输出和输入之间的关系或者程序的功 能。因此,黑盒测试是从用户的观点出发的测试。它是从软件需求出 发,根据软件需求规格说明设计测试用例,并按照测试用例的要求运 行被测程序的测试方法。它较少关心程序内部的实现过程,侧重于程 序的运行结果,把被测程序看成是不可见的盒子,因此被称为黑盒测 试。 ( 2 ) 白盒测试也称为结构测试( s t r u c t u r et e s t i n g ) 、逻辑驱动测试 ( l o g i c a ld r i v i n gt e s t i n g ) 或基于程序的测试( p r o g r a m b a s e d t e s t i n g ) 。采用这种测试方法,测试者需要掌握被测试程序的内部结 构,分析程序的内部结构,并根据内部结构构造测试用例。白盒测试 是一种按照程序内部的逻辑结构和编码结构设计并执行测试用例的测 试方法。白盒测试通常根据覆盖准则设计测试用例,使程序中的每个 语句、每个条件分支、每个控制路径都在程序测试中受到检验。白盒 海帅范大学研究生学位论文 拱十多层次功能模型的软件叫归测试投术研究 测试需要运行程序,并能在运行过程中跟踪程序的执行路径。 黑盒测试和白盒测试二者的测试侧重点不同,使用场合也有差别。单元测 试一般采用白盒测试,功能测试和系统测试一般采用黑盒测试“。 2 1 3 软件测试的阶段划分 软件测试各测试阶段包括单元测试、集成测试、确认测试和系统测试和回 归测试“,如图2 1 软件测试的阶段划分所示。开始分别完成每个单元的测试 任务,以确保每个模块正常工作,尽可能的发现模块内部的程序差错。然后, 把己测试过的模块组装起来进行集成测试。集成测试的目的是检验与软件相关 的程序结构问题。完成集成测试后,要对开发工作初期制定的确认准则进行检 验。确认测试是检验所开发的软件能否满足所有功能和性能需求的最后手段。 完成确认测试以后,给出的应该是合格的软件产品,但为了检验它能否与系统 的其它部分协调工作,需要进行系统测试。回归测试存在于软件测试各个阶段, 当软件进行修改后都需要进行回归测试,以确定对软件的修改达到预期的目的 同时没有使原本正常的软件功能失效,如图2 - 1 中虚线所示。 回归测试其 图2 1 软件测试的阶段划分 1 单元测试 单元是程序的最小组成单位,单元测试是检验程序最小单位有无错误。单 元测试要解决以下五个方面的问题: ( 1 ) 模块接口:被测试的模块和信息能否正常无误的流入和流出。 ( 2 ) 局部数据结构:在模块工作过程中,其内部的数据能否保持其完整性, 包括内部数据的内容、形式及相互关系不发生错误。 ( 3 ) 边界条件:在为限制数据加工而设置的边界处,模块是否能正常工作。 ( 4 ) 覆盖条件:模块的运行能否做到满足特定的逻辑覆盖。 ( 5 ) 出错处理:模块工作中发生了错误,其中的出错处理设施是否有效。 上海帅范大学研究生学位论文 基于多层次功能模型的软件i 到归测试技术研究 2 集成测试 在每个模块完成单元测试以后,需要按照设计时做出的结构图,把它们连 接起来。实践证明,一些模块能单独的工作,并不能保证连接起柬也能正常工 作。程序在某些局部反映不出的问题,在全局上很可能暴露出来,影响功能的 发挥。 集成测试有非增式测试和增式测试两种方式。 3 确认测试 集成测试完成以后,测试工作进入确认测试阶段,它检验所开发的软件是 否能按用户提出的要求运行。 确认测试准则:确认测试除了检验功能及性能以外,还需检验软件是否具 有可移植性、兼容性、可维护性、人机接口以及开发的文件资料等是否符合要 求。 4 系统测试 软件在开发完成后,最终还要与系统中的其它部分配套进行。系统在投入 运行之前各部分需完成组装和确认测试,以保证各个组成部分不仅能单独的受 到检验,而且在系统各部分协调工作的环境下也能正常工作。系统的组成部分 除了软件以外,还包括计算机硬件及其相关的外围设备、数据及其收集和传输 机构,掌握计算机系统运行的人员及其操作,还包括受计算机控制的执行机构 等。 5 回归测试 在软件生命周期中的任何一个阶段,只要软件发生了变化,就需要进行回 归测试。软件的变化可能是源于发现错误并作了修改,也可能加入了新的模块。 回归测试存在于测试生命周期的始终,根据软件项目开发的实际情况调整回归 周期,可以是一天,也可以是一周,也可以根据开发模块进行回归测试。回归 测试概念将在第2 2 章节进行具体描述。 2 1 4 软件测试生命周期与软件生命周期的关系 按照软件工程的概念,软件开发有它的生命周期,同样,软件测试也有测 试生命周期。 按照软件的测试生命周期,测试工作需要经历6 个阶段:系统子系统测试 计划、测试计划,测试设计、测试开发、测试执行、测试评估。为了及早发现 软件存在的缺陷,减少软件开发成本,测试过程应该同开发过程同步进行,图 2 2 是软件测试生命周期与软件开发周期关系”。 【i 海帅范大学研究生学位论文基于多层次功能模型的软件h ! i = 】测试投术研,: 图2 - 2 软件测试生命周期与软件开发周期关系 2 2 软件回归测试 2 2 i 软件回归测试的定义 所谓软件回归测试是保证对软件的修改按照预期目标正常运行,同时该修 改没有对软件的其它部分造成负面影响、没有使原本正常的功能出现错误。 软件的变化可能是源于发现错误并作了修改,也可能是因为在集成或维护 阶段加入了新的模块。当软件中所包含的错误被发现时,如果错误跟踪与管理 系统不够完善,就可能会遗漏对这些错误的修改;而开发者对错误理解得不够 透彻,也可能导致所作的修改值修正了错误的外在表现,没有修复错误本身, 从而造成修改失败。修改还有可能产生副作用,从而导致软件未被修改的部分 又产生新的问题,使本来正常工作的功能产生错误。同样,在有新代码加入软 件的时候,除了新加入的代码中有可能含有错误外,新代码还有可能对原有的 代码带来影响。因此,每当软件发生变化时,我们就必须重新测试现有的功能, 以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。 同时,还需要补充新的测试用例来测试新的或被修改了的功能。为了验证修改 的正确性及其影响就需要进行回归测试。 回归测试在软件生命周期中扮演着重要的角色,因忽视回归测试而造成严 重后果的例子不计其数,阿利亚娜5 型火箭发射失败的软件缺陷就是由于复用 的代码没有经过充分的回归测试造成的”。 2 2 2 软件回归测试的过程 软件回归测试的基本过程是: 1 识别出软件被修改的部分。 2 从原基线测试用例库z 中,排除所有不再适用的测试用例,确定那些对新的 软件版本依然有效的测试用例,其结果是建立一个新的基线测试用例库r o 。 8 上海师地人学研究生学位论文基十多层次功能模型的软件川归测试技术研究 3 依据一定的策略从r o 中选择测试用例测试被修改的软件。 4 如果必要,生成新的测试用例集,- ,用于测试凡无法充分测试的软件部分。 5 用7 t 执行修改后的软件。 第2 和第3 步测试验证修改是否破坏了现有的功能,第4 和第j 步测试验 证修改工作本身。 在组织回归测试时需要注意两点,首先是各测试阶段发生的修改一定要在 本测试阶段内完成回归,以免将错误遗留到下一个测试阶段。其次,回归测试 期间应对该软件版本进行冻结,将回归测试发现的问题集中修改,集中回归“。 2 2 3 软件回归测试的分类 1 根据软件测试过程中发现错误的阶段或软件维护的类型,将软件回归测试分 为渐增性回归测试和改错性回归测试“。 ( 1 ) 渐增性回归测试:软件测试过程中若发现是需求分析的错误,或者软 件维护的类型是适应性维护或完善性维护,则需要改动程序规格说明。 在规格说明改变的情况下进行回归测试时,需要设计新的测试用例, 、我们把这种回归测试称之为渐增性回归测试。 ( 2 ) 改错性回归测试:软件测试过程中若发现是设计或编码阶段的错误, 或者软件维护的类型是改错性维护,不需要改动程序规格说明。规格 说明不改动的情况下,对改动后的程序进行回归测试可以重用原先程 序的测试用例,这种回归测试被称之为改错性回归测试。 2 根据对回归测试用例集的选择方式,将回归测试分成全部回归和选择性回 归: ( 1 ) 全部回归:“重测所有”以前的测试用例,这种方法对于系统规模较小, 或系统改动较大的情况是可行的。但是对于测试数据较大,系统改动 较小的情况,测试所有的用例会带来时间和人力的浪费,有时是不可 能做到的。 ( 2 ) 选择性回归:从原测试用例集中选取一个子集作为回归测试用例集。 采用选择性的方法,会大大减少时间和人员的开销,同时又能保证系 统的质量。选择性回归测试的方法有很多种,r o t h e r m e l 总结了1 1 种 有代表性的方法“”“,包括线性方程技术、符号执行技术、路径分析 技术、基于程序流图的技术等。大多数技术都采用对程序结构进行再 分析,找出改动了的程序部分与原有部分的关系,选取相关性最大的 部分设计测试用例。这样又会有一个新的问题,就是对程序进行分析 的花费与运行程序相比,哪一种代价更小。据此,他们提出了一种搜 上海师范人学研究生学位论文堆十多层次功能模型的软件归测试披术研究 索算法用于寻找源程序和改变了的程序之间的变化之处。利用程序得 到源程序和变化后的程序的控制流图,以深度优先进行分别搜索,得 到变化( 增加的或改变的) 顶点,选取原测试包中所有达到该顶点的测 试用例进行重新再测试“。 3 根据软件体系结构,软件回归测试分为结构化软件回归测试和面向对象软件 回归测试: ( 1 ) 结构化软件回归测试:结构化软件开发生命周期中要用到的软件测试 是为了揭露系统不同程度的错误:如单元测试、集成测试和系统测试 等。相对应,回归测试也可用于这些级别:单元级别的回归测试、集 成级别的回归测试和系统级别的回归测试。 ( 2 ) 面向对象软件回归测试:r o t h e r m e l 和h a r r o l d 将选择性回归测试的概 念运用于面向对象的程序中,他们的算法可以构造程序或类依赖图并 使用这些图决定选择哪些测试用例o ”。 2 2 4 现有软件回归测试技术研究及不足 到目前为止,已有许多软件回归测试技术。儿“。”“,以下是一些具有代表性 的回归测试技术并给出比较简单的例子。 1 全部回归测试技术( r e t e s t a 1 1t e c h n i q u e ) :由于这种方法重新执行测试用 例集中所有的测试用例,所以花销很大。若测试完全不考虑花销的情况下可 以使用该方法,比如系统规模较小,测试集规模也比较小,重新运行所有测 试用例的代价完全可以接受,那么可以使用全部回归测试技术。 2 随机选择回归测试技术( r a n d o mt e c h n i q u e ) :当时间不允许全部回归测试, 而又没有其它的回归测试技术供选择,此时可以选择随机选择回归测试技 术。一般情况下,测试人员依照专业知识或主观经验选择回归测试用例。一 种随机选择回归测试技术就是随机选取某一百分比的测试用例作为回归测 试集。 3 最小化回归测试技术( m i n i m i z a t i o nt e c h n i q u e ) :其目标在于选择出一个最 小的测试用例集合,这些测试用例可以覆盖所有程序p 更改的部分”“。一 种最小化回归测试技术选择至少一个测试用例,这些测试用例可以运行每一 个增加到程序中或程序更改的语句部分。 4 数据流回归测试技术( d a t af l o wt e c h n i q u e ) :基于数据流覆盖的回归测试 用例选择技术后来被称为数据流技术,该技术根据受程序修改影响的数据及 其相互关系来选择测试用例”1 。比如说,h o r r o l d 和s o f f a 研究的数据流回 归测试技术重新测试那些覆盖了从程序p 中删除、新增或者修改的数据定义 上| 海师范人学研宄生学位论史基十多层次助能模型的软件吲归测试技术研究 的测试用例以及覆盖了被修改谓词的测试用例“。 j 安全回归测试技术( s a i et e c h n jq u e ) :无论最小化回归测试技术还是数掘流 回归测试技术,都是不安全的。不安全的回归测试技术就可能漏选一些测试 用例,而这些测试用例可以测试出新版本程序中的缺陷。与之相对比的,如 果在一定测试条件可以满足的情况下,安全回归测试技术可以保证新的回归 测试集包含测试出新版本程序中所有缺陷的测试用例。现在己经提出了很多 安全的回归测试技术,如t e s t t u b e 技术“。、g r o t h e r m e l 和m h a r r o l d 提出的安全选择回归测试技术o ”和基于文本相异的回归测试技术”等。在 h o r r i d 和r o t h e r m e l 的文章中给出了安全回归测试的具体理论。他们使用控 制流图来描述源程序p 和已经更改的程序p ,使用测试统计表来选择那些至 少覆盖一条已经更改语句或增添语句的测试用例。 通过以上论述,我们可以发现以下几个问题: 首先,现有的回归测试技术多数基于源程序,然而随着软件规模和复杂度 的增加,软件测试逐渐成为一支独立的队伍参与到软件工程中,为软件工程提 供专业化的技术服务。软件测试人员根据可以得到的软件信息进行测试。按照 软件测试流程,基于源程序的测试由软件开发人员完成,比如单元测试。设想 如果由测试员来完成单元测试,测试员首先要得到程序的代码,之后完全理解 代码,并在此基础上进行进一步的测试。这将带来很多麻烦,完全读懂和理解 其他人写的程序是一件很费时间的事情,不同的程序员编写的代码风格迥异, 这对于本来测试时间就很紧张的软件项目来说是不现实的。此外,基于源程序 的回归测试技术往往是基于某种具体的语言。在一个比较大型的系统中,可能 使用多种语言,比如前台部分将使用到j a v a 和h t m l 语言,后台要用到c 语言 等。在这种情况下,使用多种回归测试技术才可以达到满意的效果。这样使一 个软件系统的回归测试变得十分复杂。可见,对于测试小组来说,基于源程序 的回归测试是低效的,所以,如何进行有效的基于功能的回归测试,提高基于 功能回归测试的效率以及有效减小回归测试用例集是一个很具有现实意义的课 题。 其次,虽然安全回归测试技术是一种可靠性很高的回归测试技术,但是由 于该技术生成的回归测试用例集一般比较大,并且测试集的大小受被修改程序 所在位置的影响,如果在流程图的起始部分,回归测试用例集则基本与原测试 用例集相同。若单独使用安全回归测试技术,虽然测试质量得到保证,但是在 实际操作中的测试效率下降了很多。 再次,在进行回归测试分析时,现有研究一般基于程序流程图或单一的业 务流程图”“,却忽略了业务之间的联系。实际应用中,业务之间存在必然的联 上海帅范大学刖f 究生学位论文捧于多层次功能模型的软件回归测试技术研究 系,这种联系往往在软件需求中很重要,然而对这种联系进行的测试没有得到 足够的重视。关注业务之间的关联对于整体提高测试质量也起着重要作用。 基于以上问题,本文提出根据业务流程建立多层次功能模型,在该模型基 础上运用安全选择回归测试技术,灵活有效的进行回i j j 测试。下一章节将详细 描述多层次功能模型的概念及构建步骤。 上海师范人学 i j f 究生学位论文基十多层次功能模型的软件州归测试技术州究 第三章多层次功能模型 3 1 基于功能的软件回归测试 3 1 ,1 功能测试的概念和基本方法 功能测试是解决模块测试问题的一类重要的测试方法。用这种方法进行测 试时,被测程序被当作打不开的黑盒,在完全不考虑程序内部结构和内部特征 的情况下,测试者只知道程序输入与输出之间的关系或是程序的功能,必须依 靠能够反映这一关系的程序功能需求说明书考虑确定测试用例,从而推断测试 结果的正确性。功能测试原理如图3 1 所示: z 二乎。 p = f ( i ,o ) 固3 1 功能测试原理 在功能测试中,一个模块可以看作是一组变量到另一组变量之间的映射。 模块m 可如下表示: m = 舡l ,x 2 ,x f 鸟y 1 ,j ( 3 1 ) 其中,= j 表示定义为, 传= 1 ,0 是模块的输入变量,y 。传= 1 是模块的 输出变量,厂是模块所计算的函数。 对于每个x k ( k = l ,0 ,都有一个对应的定义域a 。对于每个y 。僻= l 都有一个对应的值域k 。功能测试的准则就是要在d 中找出代表性的点,并且 在d 中找的点可以使厂产生矿中有代表性的点。这里,d = d ,x d :d 3 d , v :醵以k 以,其中是笛卡尔乘积“。 功能测试的主要任务是测试开发软件的功能、性能以及其它要求是否己满 足用户的需要,软件是否满足需求规格说明书的规定,软件是否可以被认为是 合格的以及软件是否可以被接受。 根据功能测试的含义和任务,常用的功能测试的方法有:等价类划分法、 因果图法、边值分析法、判定表驱动法等。 ( 1 ) 等价类划分法是把程序的输入域化分成若干部分,然后从中选取少数 有代表性的测试数据当作测试用例。使用这种方法设计测试用例前必 上海师范大学研究生学位论文基十多崖次上j 能模型的软件川归测试技术研究 须在分析需求规格说明的基础上划分等价类,列出等价类表。 ( 2 ) 因果图法是基于等价类方法的基础上,考虑到各种输入条件的制约关 系的因果图而采用的选取测试用例的方法。 ( 3 ) 边值分析法是针对程序或软件输入域的边界或输出域的边界专门设计 测试用例的方法。 ( 4 ) 判定表驱动法是对于一些功能需求可以用判定表表达得非常清楚的软 件的一种设计测试用例的方法”。 其中,等价类划分是一种典型的功能测试方法,用这一方法设计测试用例 完全不考虑程序的内部结构,只是根据程序的需求说明。测试前必须仔细分析 和推敲说明书的各项需求,特别是功能需求,需要把说明书中对输入的要求和 输出的要求区别开来并加以分解。既然穷举测试的方法由于数量太大,无法实 际完成,因此必须在大量的可能数据中选取其中的一部分作为测试用例“。 本文提出的多层次功能模型根据等价类划分法作了修改。本文侧重于业务 流程,根据业务流程划分输入域和输出域,选择正常业务流程数据或异常业务 流程数据生成测试用例。为了便于分析,本文使用正常业务流程作为说明依据。 3 1 2 基于功能的回归测试的概念和流程 若在集成测试中测试出某个功能失效,为了修复缺陷,必须对软件进行修 改。这些软件的修改可能是无效的,也可能导致原本

温馨提示

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

评论

0/150

提交评论