基于图形遍历算法的回归测试方法的研究以及应用硕士学位论文 精品.docx

上传人:b****5 文档编号:24841112 上传时间:2023-06-02 格式:DOCX 页数:65 大小:660.31KB
下载 相关 举报
基于图形遍历算法的回归测试方法的研究以及应用硕士学位论文 精品.docx_第1页
第1页 / 共65页
基于图形遍历算法的回归测试方法的研究以及应用硕士学位论文 精品.docx_第2页
第2页 / 共65页
基于图形遍历算法的回归测试方法的研究以及应用硕士学位论文 精品.docx_第3页
第3页 / 共65页
基于图形遍历算法的回归测试方法的研究以及应用硕士学位论文 精品.docx_第4页
第4页 / 共65页
基于图形遍历算法的回归测试方法的研究以及应用硕士学位论文 精品.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

基于图形遍历算法的回归测试方法的研究以及应用硕士学位论文 精品.docx

《基于图形遍历算法的回归测试方法的研究以及应用硕士学位论文 精品.docx》由会员分享,可在线阅读,更多相关《基于图形遍历算法的回归测试方法的研究以及应用硕士学位论文 精品.docx(65页珍藏版)》请在冰豆网上搜索。

基于图形遍历算法的回归测试方法的研究以及应用硕士学位论文 精品.docx

基于图形遍历算法的回归测试方法的研究以及应用硕士学位论文精品

基于图形遍历算法的回归测试方法的研究及应用摘要

自从发明计算机以来,信息技术飞速发展,相应的软件开发与测试也在飞速成长。

软件并没有人们想象当中的那么抽象与遥远,在日常生活中接触到的电脑软件、手机软件都涉及到了软件开发。

当然,软件在开发出来之后就需要经过测试来检测一下软件开发的结果,这就是软件测试。

在软件测试当中经常用到的验证测试方法当属回归测试。

虽然回归测试成本比较贵,但是其测试结果较准确。

当然,在现实中是非常激烈的。

如果使用一种有效手段,通过这种机制既可以大大降低回归测试所带来的成本又可以提高监测的效率,那么就会在竞争中处于领先地位。

因此,如何研发这种机制是当今软件测试的重点和难点。

Extend-Dejavu算法是目前使用广泛的回归测试用例选择算法,但是该算法需要利用元数据来构造控制流图和收集覆盖信息,因此在实际使用中难度很大。

本文借鉴Extend-Dejavu算法精华,开发了基于修改点控制流图的回归测试用例选择算法,能够对C语言单元函数进行逻辑结构上的比较。

从而减少测试用例,提高测试效率。

算法主要包括以下内容:

根据控制流图对比技术检测出有效修改点;根据语句节点的数据和控制之间的依赖关系构建基于修改点的软件切片;以切片得到的节点集合作为目标覆盖集合,从基准用例库中选取相关测试用例构造回归用例选择子集T0;运行T0中测试用例;基于覆盖情况分析是否存在未覆盖的目标节点,若存在则构造回归用例新增子集T1;最后合并T0和T1得到回归测试用例集合。

与Extend-Dejavu算法相比,本论文主要有以下改进和创新:

基于控制流图对比技术检测有效修改点,能够精确定位代码修改点;在修改点的基础上进行语句级别切片,降低了回归测试的覆盖范围;补充新的用例以保证回归测试的充分性。

所以,本文提出的回归测试方法具有用例选择精度高、回归测试更加充分的特点,显著提高了回归测试的效率,明确体现了其有效性。

关键词:

软件测试,回归测试,Extend-Dejavu,测试切片

 

Abstract

Sincethecomputershavebeeninvented,theinformationtechnologyisdevelopingrapidly,atthesametime,thecorrespondingsoftwaredevelopmentandtestingisalsodevelopingrapidly.Intheprocessofsoftwaredevelopment,themoreimportantaspectistheregressiontest.Softwaredevelopmentisnotsofarfromus,inourlife,weareallexposedtocomputersoftwareandcellphonesoftware,andtheyareallrelatedtothesoftwaredevelopment.Ofcourse,softwaredevelopersneedtocomeoutafterthesoftwarehasbeentestedtodetectwhattheresultofthedevelopment,andthisiswhatweknowsoftwaretesting.Regressiontestisoftenusedtosoftwaredevelopment.Althoughthecostofregressiontestingisveryexpensive,itstestresultsareveryaccurate.Ofcourse,intoday'ssociety,competitionisveryfierce.Ifyoumasteraneffectivemechanism,wecangreatlyreducethecostofregressiontestingatthesametime,wecanimprovetheefficiencyofmonitoringthroughthismechanism.Itwillcompeteinaleadingposition.Therefore,howtodevelopsuchamechanismisthefocusanddifficultyoftoday'ssoftwaretesting.

TheExtend-Dejavualgorithmiswidelyusedtheregressiontestcasesselectionalgorithm,butthealgorithmneedstousemetadatatocontrolflowgraphandcollectinformation,sointhepracticaluseisverydifficult.Essence,thispaperExtend-Dejavualgorithmisdevelopedbasedonthemodifiedpointcontrolflowgraphofregressiontestcaseselectionalgorithm,cancarryonthelogicalstructuretothefunctionClanguageunitincomparison.Toreducethetestcases,improvethetestefficiency.Algorithmmainlyincludesthefollowingcontent:

accordingtothecontrolflowchartcomparestechnologytodetecttheeffectivemodificationpoint;Accordingtothestatementdatadependencyandcontroldependencybetweennodesbasedonmodifiedpointbuildofthesoftwaresection;Toslicethenodesetasthetargetcoverageset,fromthebaselinetestcasesselectingtherelatedtestcaselibraryT0selectsubsetregressioncases;RuntestcasesintheT0;Basedontheanalysiswhetherthecoverhasnotcoveredthetargetnode,ifthereisthestructurenewsubsetregressioncaseT1;FinallymergeT0andT1regressiontestcaseset.

ComparedwiththeExtend-Dejavualgorithm,thisthesismainlyhasthefollowingimprovementsandinnovations:

detectionbasedoncontrolflowchartcomparestechnologymodification,canaccuratepositioningpointcodechange;Atmodifythestatementsonthebasisofthelevelsection,narrowedtherangeofregressiontesting;Addnewtestcasestoensuretheadequacyoftheregressiontest.Regressiontestingmethodisproposedinthispaper,therefore,theusecaseswithhigherprecision,morefullythecharacteristicsofregressiontesting,greatlyimprovetheefficiencyandeffectivenessoftheregressiontest.

KeyWords:

SoftwareTesting,RegressionTesting,Extend-Dejavu,TestSection

目录

摘要I

AbstractII

图目录III

表目录IV

第1章绪论1

1.1课题背景1

1.2国内外研究现状及进展2

1.3本文主要研究工作5

1.4论文组织形式5

1.5本章小结6

第2章软件测试和回归测试的策略7

2.1软件测试7

2.1.1软件测试的目的7

2.1.2软件测试方法7

2.1.3软件测试策略8

2.2回归测试9

2.2.1回归测试分类9

2.2.2回归测试策略9

2.3软件测试与回归测试比较11

2.4本章小结12

第3章基于字节码控制流图的回归测试用例选择算法综述13

3.1Dejavu算法以及扩展算法的介绍13

3.2UT2测试实例15

3.2.1测试环境15

3.2.2新旧版本字节码16

3.2.3原始Dejavu算法控制流图16

3.2.4Extend-Dejavu算法控制流图17

3.2.5测试结果18

3.3本章小结18

第4章基于修改点控制流图的回归测试用例选择算法19

4.1算法概述19

4.2无效修改点判定设计19

4.2.1基本概念19

4.2.2设计原理与算法23

4.3确定测试切片29

4.3.1基本概念30

4.3.2设计原理与算法32

4.4UT3测试实例34

4.4.1无效修改点判定测试34

4.4.2确定测试切片测试36

4.5本章小结39

第5章优化算法对比分析及实际应用40

5.1对比分析40

5.1.1单测试用例算法精度对比41

5.1.2多测试用例算法精度对比42

5.2TD-LTE项目中自动化测试平台应用43

5.2.1用例库管理44

5.2.2系统运行44

5.2.3OMCR-CT及DEBUGTOOL47

5.2.4测试结果及分析49

(一)测试报告49

(二)结果分析50

5.3本章小结51

第6章总结与展望52

参考文献54

作者简历57

致谢59

图目录

图2.1软件测试一般过程图11

图3.1TD-LTE项目中旧版本方法Dispenser.dispenseO的控制流图17

图4.1删减语句导致的控制流图的变化24

图4.2广度优先对比25

图4.3深度优先对比26

图4.4N1为终结符节点,N2为普通节点的示例图28

图4.5N1为普通节点,N2为终结符节点的示例图28

图4.6计算修改点的流程图29

图4.7静态切片(左)与动态切片(右)30

图4.8静态切片(上)与动态切片(下)31

图4.9TD-LTE项目中equation函数的原代码(左)和修改后代码(右)35

图4.10被测单元f1的控制流图36

图4.11被测单元f修改前后的代码37

图4.12被测单元f的控制流图38

图4.13被测单元f关于节点decl_stmt_1的依赖图39

图5.1配置文件存放形式44

图5.2用例库管理操作界面44

图5.3TR-PC启动45

图5.4TmView操作界面45

图5.5TmView操作界面46

图5.6TR-PC执行操作界面46

图5.7TR-PC执行操作界面47

图5.8OMCR-CT工具操作显示界面48

图5.9板件消息显示48

图5.10OMCR-CT启动48

图5.11OMCR-CT结束48

图5.12DEBUGTOOL启动49

图5.13DEBUGTOOL结束49

 

表目录

表2.1渐增性回归测试和改错性回归测试主要区别8

表4.1修改点有效性分析23

表4.2函数f的控制流图和源程序的对应关系35

表5.1两种回归测试用例选择算法的回归测试用例选择集42

表5.22种不同算法针对3个实例运算的运算结果对比44

绪论

课题背景

其实计算机在安全上的问题已经存在很久了,特别在软件层面上,软件产生的故障问题越发的频繁,随之造成的危机也经常导致严重的后果,给人们带来了很多的教训。

从这些教训中我们可以总结出:

软件开发过程中软件测试对最后软件成功与否意义重大。

当然,随着计算机的普及,各种软件进入了人们的视野。

从普通的软件到一些专业的软件,软件的应用领域非常广泛,规模也是非常庞大。

现在人们面临的技术层面的难题就是如何在琳琅满目的软件当中选择符合人们要求的软件,如何在符合要求的基础上确保这些软件的质量及可靠性。

软件的一些很小的差错就有可能对国家、财产、军事、航天事业以及生命等方面造成巨大的损失,我们必须极力的阻止这类事件的发生。

有人对美国当今的软件的现状进行了相应的研究,这些研究表明:

到上个世纪末为止,美国的软件领域的从业人员已经达到了接近130万人。

作为关键领域的巨头,微软每年在软件方面的销售总额在整个美国也是相当可观的。

但是,虽然销售总额很高,利润却没有人们想象当中的那么高。

这些损失很大成份是由软件错误造成的。

降低了软件产生的错误,就可以挽回很大的损失。

如何改进软件系统的质量问题已然成为取得高回报的有效手段,在安全和财产保障中,软件质量影响深远,也是国家、人身安全、军事航天事业等方面的保障。

软件工程概念的提出是针对高质量和高可靠性的软件设计提供了基础。

而在软件工程中的软件测试的概念由BillHctzel在1972年首次提出。

在软件开发过程中,软件测试更是重中之重,它是软件开发过程的最后一道保障环节。

软件测试经过最近几十年的发展已经越来越迅速,尤其是最近几年。

软件测试最重要的也是最直接的目的就是发现系统软件中的漏洞以及错误,及时通知软件开人员,避免重大损失。

据统计,在美国,那些对于安全性要求较高的软件来时,软件测试所要花费的费用可能会超过40%以上。

因此,软件测试已经受到越来越多的专家的重视,很多专家也对如何降低测试费用进行了探讨。

在软件的整个生命周期中,软件的代码这一因素也是相当重要的。

如果软件设计过程中软件的代码发生了变化,那么软件开发会带来很多的问题,所以,在软件开发之前就应该把相应的需求分析做好。

软件测试的时候必须注意以前已经测试过得基本模块,以便确定相应的修改是否有影响到原来的功能实现,并要确认其修改是否产生了新的问题,这种测试就是著名的回归测试。

软件在开发过程中所涉及的软件代码是相当复杂的,而且代码之间都具有关联性,如果软件部分代码被改正以后相关联的代码可能就会瘫痪掉。

特别容易放生在修改后产生新的错误,有数据表明这种情况发生的概率高达20%以上。

回归测试自从被提出来之后就获得了广泛的应用。

在基本的回归测试用例确定以后,后面即使有更改,先前确定的测试用例还是可以重用的。

随着项目的不断发展,后期加入的测试用例数目越来越多,在测试人员的流动性,测试用例的运行周期的冗长性等因素的影响下,对后期测试用例的控制性回越加把握不住,这些相关问题都会使得前期测试投入很大,也导致在后期测试工作中,每当有改动都要从头到尾重新测试,这不仅浪费时间也是没有必要的。

软件在开发过程中一定要有相关经验的软件人员,这样软件可以尽可能的减少代码的重写,从而降低由于代码重写所带来的回归测试的成本的增加。

当然,软件开发的时候最好是有一定的人员对软件测试用例库进行相关的维护以及管理,这样就会有个合理的组织、统一的管理。

计算机的发展带动了许多相关学科的发展,如今全球化的迅速发展也对移动通信提出了较高的要求。

随着移动通信系统的发展,我们的“空间”变得越来越小。

当今移动通信系统中的最新进展就是LTE,它延续了移动通信家族的技术演进,而且LTE完成了对移动通信业务的扩展。

世界上第一部电话发明出来的时候人们都被惊呆了,多年以后谁会想到移动通信系统会发展的这么迅速。

它不仅仅解决了人们日常生活中所用到的语音通信功能还建立了多业务空中接口。

因此,LTE现在已经被各个通信公司所看重,都当作通信企业的研究中心。

软件测试在软件开发工作中所占据的重要位置使得各个企业正向研发一个幼小的机制。

本课题即基于上述背景,设计并实现了用于TD-LTE项目的基于图形遍历方法的回归测试用例优化算法。

国内外研究现状及进展

回归测试方法在软件测试当中广泛应用,它的研究包括许多方面,包括捕获回放机制以及测试环境的自动化,当然还包括测试用例时所用到的选择优化技术等等[3],这些在回归测试当中应用十分广泛。

回归测试涉及面十分广泛,归纳起来主要包括四个方面的问题。

首先,代码修改后给软件开发带来的影响如何评估;其次,修改部分的测试如何单独进行;再次,回归测试评价的结果如何进行定义;最后就是修改代码之前的用例与修改代码之后的用例如何选择、重用和修改。

在回归研究当中最重要的是回归策略的研究,如何开发一个有效的策略使得以最低的成本对软件开发的测试结果做到最有效的评估这一问题已经受到越来越多的关注。

回归测试在进行测试的时候有两种模式可供选择及“重测所有”和“选择部分”用例,这两种模式是比较常见的。

前一种模式虽然可以将所有的用例进行重测但是成本比较高,而且随着软件开发的进展,测试用例会不断增多,这样重复性的重测原来的用例不仅使成本越来越高,也会带来很大的工作量,这样就会将软件开发的时间大大的推迟。

相比之下后一种模式的优势在于低成本、高效率,在软件回归测试当中人们用到的最多的还是“选择部分”这一模式。

近几年随着回归测试技术的发展,相应的策略与算法也相应的增多。

回归测试领域当中的著名学者LeungandWhiten曾经提出一种回归测试的方法:

将测试之前原始的用例进行分类划分,然后将用例进行相应的筛选,选出其中比较重要的用例,然后将这些用例进行整理,最后将用例集合进行回归测试。

这样测试结果不仅包括各个领域而且测试结果也具有一定的代表性,而且随着软件的不断开发,新增的用例也不用全部加入测试用例集合。

回归测试的研究主要包括四个方面:

首先,选择系统的规格信息进行回归测试,在测试之前主要对系统的规格信息调查清楚后才能进行后续的工作;其次,对软件开发过程当中的代码信息进行回归测试,这主要是针对软件规格相关,代码要有一定的规格才能进行;再次,回归测试当中用到的测试用例所涉及到的约简技术,它主要包括一些驱动方面的需求;最后就是测试用例选择的优先级问题的研究,在进行回归测试之前现将测试用例的优先级进行排序,将最重要的测试用例放在测试的第一位也就是越重要的最先执行。

在这里我们先进行简单的说明,在文章的后续部分我们会加以详细的讨论。

回归测试用例当中所用到的代码信息进行选择时一般都会用到选择算法,这里的选择算法主要分为两类,也是我们在编程过程当中经常提到的面向过程与面相对性两个方面。

什么是面向过程呢?

它是指将软件的各个功能模块之间的控制流程作为编程的重点,通过几个过程找出代码的修改部分来进行用例的选择。

而面向对象将测试的策略当作一个对象来加以研究,它具有面向过程所不具有的类、继承、封装等几个特性。

编程过程中用到的c语言可以说是面向过程的语言,而c++语言则是面向对象的语言。

面向对象的这几个特征决定了其测试用例的步骤和策略上的选择不同于面向对象的测试用例。

从面向过程与面向对象这两个程序特点,许多学者都提出了相应的策略以此来提高回归测试的效率。

国外学者Rothermel提出了面向过程的测试用例选择算法,这就是著名的基于CFG的用例选择算法。

这一用例算法将程序修改前后的CFG图进行比较,然后查看不同来查找软件开发的问题所在。

虽然这个算法比较实用,但是这个算法并没有考虑CFG所涉及的控制域问题。

值得庆幸的是,经过这些年的发展,学者们通过对CFG的研究之后借鉴面向对象的思想,发展了面向对象的测试用例的方法,并且把这些方法应用到了测试用例当中。

面向对象的测试用例的主要思想就是通过程序代码之间的依赖关系得到测试对象之间的方法序列,然后应用一定的技术将程序修改后的受到影响的测试用例加入到新的测试用例集合当中

许多学者提出了一种面向对象的算法,比如经常用到的“切片算法”,“切片算法”的主要思想就是先将程序进行分解,然后根据分解之后查看代码改变与未改变之间的关系,将这一结果进行分析之后选择相应的测试用例。

我国学者王影在“切片算法”的基础上提出了“条件切片”技术,这种技术不仅解决了面向过程当中所没有考虑到的控制域问题,而且大大降低了回归测试的成本。

我们每个人所用的电脑中都会用到防火墙,这样可以保护电脑以免受到非法操作与攻击。

国外学者提出了关于在回归测试方面的防火墙的概念,主要思想就是将程序中修改过的类进行标示,构建一个新的防火墙,然后对防火墙之中的类进行相应回归测试。

回归测试方法在软件测试当中广泛应用,它的研究包括许多方面,包括捕获回放机制以及测试环境的自动化,当然还包括测试用例时所用到的选择优化技术等等[4],这些在回归测试当中应用十分广泛。

许多专家学者对回归测试进行了深入的研究工作,包括测试用例的排序问题、优先级问题等等。

还有的学者将遗传算法应用到测试用例当中,其他算法还包括贪心算法、GRE算法等等,这些算法的应用使得回归测试的成本大大降低,应用范围也越来越广泛,提高了软件开发的成功率。

现有的测试用例优化技术各有各的特色和适用范围,效果仅仅只是针对部分的。

本文在现有回归测试的选择策略基础上,提出的改进策略能让测试过程更具系统性和规范性。

本文主要研究工作

本文的研究工作将着重解决C语言程序的单元自动化回归测试优化问题,在对目前应用广泛的基于字节码控制流图的回归测试用例选择算法的基础上,本文设计和实现了基于修改点控制流图的回归测试用例选择算法,通过实际程序验证该算法的可行性,表明基于该策略生成的单元回归测试用例集合,能够对被测单元进行有效而高效的回归测试。

本文的研究内容主要有以下几点:

(1)对现有的Extend-Dejavu算法进行深入分析,并以案例的方式验证算法的有效性。

但是复杂的控制流图构造流程及繁琐的收集覆盖信息操作表明该算法在现实使用中存在困难以及缺陷。

(2)软件修改点检测技术的研究:

本论文构造的回归测试用例集合的原则是与软件修改点相关的,因此首先需要解决的问题是如何检测出被测单元的修改位置。

为了将修改点检测技术更好地应用于回归测试,需要鉴别出哪些修改内容能够被判定为“有效的”修改点。

举例来说,若被测代码在一条声明语句中添加了一个变量声明,这条声明语句的改变并不会直接影响测试用例执行新旧代码得到的运行结果,因此这样的修改点会被忽略,而一条赋值

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1