本科毕业论文基于遗传算法的测试用例生成方法精品毕业设计完整版.docx

上传人:b****0 文档编号:28689 上传时间:2022-10-01 格式:DOCX 页数:31 大小:146.67KB
下载 相关 举报
本科毕业论文基于遗传算法的测试用例生成方法精品毕业设计完整版.docx_第1页
第1页 / 共31页
本科毕业论文基于遗传算法的测试用例生成方法精品毕业设计完整版.docx_第2页
第2页 / 共31页
本科毕业论文基于遗传算法的测试用例生成方法精品毕业设计完整版.docx_第3页
第3页 / 共31页
本科毕业论文基于遗传算法的测试用例生成方法精品毕业设计完整版.docx_第4页
第4页 / 共31页
本科毕业论文基于遗传算法的测试用例生成方法精品毕业设计完整版.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

本科毕业论文基于遗传算法的测试用例生成方法精品毕业设计完整版.docx

《本科毕业论文基于遗传算法的测试用例生成方法精品毕业设计完整版.docx》由会员分享,可在线阅读,更多相关《本科毕业论文基于遗传算法的测试用例生成方法精品毕业设计完整版.docx(31页珍藏版)》请在冰豆网上搜索。

本科毕业论文基于遗传算法的测试用例生成方法精品毕业设计完整版.docx

本科毕业论文基于遗传算法的测试用例生成方法精品毕业设计完整版

摘要

软件测试是保证软件质量和可靠性重要手段,在这方面发挥着其它方法不可替代的作用。

然而,软件测试是一个复杂的过程,需要耗费巨大的人力、物力和时间,约占整个软件开发成本的40%~50%。

因此,提高软件测试工具的自动化程度对于确保软件开发质量、降低软件开发成本非常重要。

而提高测试用例生成的自动化程度又是提高测试工具乃至整个测试过程自动化程度的关键所在,本文主要针对这一问题进行了研究和设计。

本文在分析软件测试和遗传算法基本概念的基础上,提出软件测试用例的设计是软件测试的难点之一。

论文提出了基于遗传算法的测试用例生成的内含是应用遗传算法来求解一组优化的测试用例,其框架包括了测试环境构造、遗传算法及测试运行环境三部分,论文给出了基于遗传算法的测试用例生成的模型。

最后以三角形分类程序为例应用遗传算法进行测试用例生成的模拟,结果显示,应用遗传算法进行测试用例生成可行。

关键词:

软件测试测试用例遗传算法

ABSTRACT

Softwaretestistheimportantmeansthatguaranteesoftwarequalityandreliability,andinthisrespect,itplaystherolethatothermethodcannotreplace.Howeversoftwaretestisacomplexprocess,itneedstoconsumehugemanpower,materialresourcesandtime,whichtakesthe40%~50%ofentiresoftwaredevelopmentcostapproximately.Therefore,raisingtheautomationlevelofsoftwaretesttoolisveryimportantforensuresoftwaredevelopmentqualityandreductionsoftwaredevelopmentcost.Andthen,themostimportantisraisingtheautomationlevelofthetestcasegenerationforraisingtheautomationleveloftesttoolandevenentiretestprocess,sothispaperstudyanddesignmainlyaccordingtothisproblem.

Basedontheanalysisofbasicconceptsofsoftwaretestingandgeneticalgorithm,thisarticleproposesthatsoftwaretestcasedesignisoneofthedifficultiesofsoftwaretesting.Paperpresentstheinherentinsoftwaretestcasedesigningbasedongeneticalgorithmisusinggeneticalgorithmtosolveasetofoptimizationtestcases,andtheframeworkincludesthreepartswhicharetestenvironmentconstruction,geneticalgorithmandtheenvironmentfortest.Paperpresentsthemodelofsoftwaretestcasegenerationbasedongeneticalgorithm.Finally,wetakethetrianglecategorizerasanexample,simulatesoftwaretestcasegenerationbasedongeneticalgorithm.Theresultsdisplaythatsoftwaretestcasegenerationbasingongeneticalgorithmispossible.

KEYWORDS:

softwaretest,testcase,geneticalgorithm

第一章绪论

1.1问题的提出

在信息化普及的今天,计算机在人们的生活和工作中占据着重要地位,使人们的工作效率提高,也使生活更丰富多彩。

而作为计算机的重要组成部分,软件的重要性不言而喻。

随着计算机技术的日益发展,计算机软件的规模越来越庞大,复杂性越来越高,这就为软件质量的保证带来了困难。

因为软件的开发过程大部分是由人的智力活动构成,不可能完美无缺。

而软件缺陷如果不能及时发现,带来的损失可能是巨大的,有的甚至会危及人的生命。

在历史上臭名昭著的软件缺陷案例有[1]:

1999年12月3日,美国航天局的火星基地登陆飞船在试图登陆火星表面时失踪,原因仅仅是一个数据位的意外更改;美国爱国者导弹防御系统曾在几次对抗导弹战役中失利,其中一次竟然误使28名美国士兵丧生,原因是一个很小的系统时钟错误导致系统累计拖延了100多个小时使跟踪系统失去准确度;还有就是大名鼎鼎的“千年虫”问题,起因是在20世纪70年代,为了节省硬盘空间,美国某位程序员在编写工资系统时将4位数日期(如1975)改成了2位数日期(如75),该缺陷一直拖到1995年都没有修复,最终给全球带来了高达数亿美元的损失等等。

作为提高软件质量的重要手段,软件测试越来越受到重视。

在美国的微软公司,测试人员和开发人员的比例达到了2:

1[2]。

软件测试伴随着整个开发过程,是一个非常复杂的过程,其消耗的人力和资金一般占整个项目的一半左右。

而在某些特别重要的软件开发过程中,为保证软件的质量,测试的费用甚至是其它各阶段之和的3到5倍[3]。

测试过程中,测试人员通常需要分析、设计和执行大量的测试用例,从而耗费了大量资源,因此找出合理的测试用例生成方法可以有效缩短测试时间,减少损耗,一般可以有效降低整个项目的4%费用[4]。

然而,目前生成测试用例的方法主要是向前核查法和逆向回溯法,测试人员根据自己的项目经验手工为指定的程序路径生成测试数据[5]。

向前核查法是指沿预期的路径向前检查,确定到每一个判断点时变量所能提供的最宽数值区间,然后继续前行,从而将多个变量的可能取值范围逐渐缩小,到达程序出口后,就能找到覆盖这条路径所需的输入数据。

逆向回溯法正好相反,是指从期望执行的程序位置出发,逆向回溯,在每个判断点处逐渐调整各变量取值,直到退到程序入口,即获得所需的输入数据。

向前核查法和逆向回溯法的局限性是,对某些条件要求苛刻的路径使用时非常困难,同时由于大多数程序中包含的路径数非常多,如果按每条路径手工测试,显然带来的工作量是非常巨大的。

由于测试的工作量大、测试过程的重复性高等特点,自动化测试正逐渐得到广泛的应用。

很多测试工具的使用大大提高了测试人员的工作效率,有效减少了项目开支。

然而这些工具主要为测试的执行、管理和度量工具,在测试用例自动生成方面还不完善。

而在软件测试过程中,动态测试作为测试的重要环节占了很大比例,动态测试的关键正是测试用例的生成问题。

因此,寻找一种有效的测试用例生成方法是提高测试自动化的重中之重。

1.2国内外研究现状

自上世纪60年代起,国内外的学者专家对测试用例的自动生成提出了很多方法,应用较为广泛的有随机法、静态法、动态法以及试探法[5][6][7][8][9][10][11][12]。

D.Bird[13]等提出了采用随机法生成测试用例,其思想是不受限制地随机产生大量的测试用例。

该方法产生测试用例的成本很低,在某些抽样测试中效果较好,但是该方法的针对性较弱,在输入空间为无穷大时产生的测试用例集非常庞大,测试效率低,现在的很多工具都是采用的该方法。

静态法的典型代表是符号执行法,由P.D.Coward[14]和C.Ramanmoorthy[15][16]等人提出。

该方法的主要思想是把符号值作为程序输入,静态“执行”指定路径的语句,从而得到变量的值。

这里所谓的执行,是指按照程序执行的顺序将相应的变量用符号表达式代换。

该方法的缺点为需要进行复杂的代数运算,难以处理依赖于输入变量的循环条件、数组元素下标和模块调用的情况,特别对于动态的面向对象程序不适合使用。

与静态法相对应的是动态法,该方法的基本思想是从输入空间中任取一个假设解作为初始输入,通过实际运行程序不断调整输入,使得程序实际执行路径向指定路径不断逼近,直到与指定路径完全一致。

Korel[17]法是动态法的典型代表:

其采用的是步进的方式执行程序,即一次只前进一个分支谓词;Korel还提出了“谓词函数”的概念,用来度量分支谓词的接近满足程度。

然而,由于Korel法一次只考虑一个分支谓词,使用回溯技术,所以要进行大量的迭代,浪费了大量的资源。

而且由于对于非线性路径约束,该方法只能找到局部极小值,当谓词函数有多个局部极小值时显然将难以找到目标路径的解。

除此之外,动态法还包括程序插装的方法和迭代松弛法,M.Gallagher和NeelamGuptal[18]分别对这两种方法进行了全面的阐述。

第四种算法是试探法,该方法的基本思想是从输入数据空间中选择输入数据,运行程序,将运行结果结合概率论的思想产生新的数据继续进行试探。

其受搜索空间限制条件的约束小,且不需要其它辅助性信息,对于很多高复杂度问题(如大空间、多峰、非线性、全局优化等)具有独特的优势和高效性。

试探法主要包括遗传算法、模拟退火算法、禁忌搜索算法、混合策略的遗传算法等。

自20世纪90年代起,遗传算法因其独特的优点而开始被广泛的用于测试用例的生成领域,并取得了良好的研究成果。

遗传算法模拟生物学中的遗传变异原理,采用编码技术将待求数据映射到基因空间,并通过选择、交叉、变异等遗传操作和优胜劣汰的自然选择确定搜索方向,从而找到最优解。

实验证明,该算法具有隐性并行性和全局寻优能力,可以自动获取搜索过程中的有关信息并用于指导优化。

Jones等人[19]的实验表明,为使三角形分类等程序达到分支覆盖,遗传算法生成的测试数据比随机法小一到两个数量级。

Jin-CherngLin等人[20]等人对适应度函数进行了研究,提出了使用广义海明距离来构建适应度函数。

荚伟[21]分析了遗传算法在测试用例产生这一问题上的可行性,提出了要有效解决该问题,必须从以下几个角度进行研究:

参数的编码方法、适应度函数的构造、遗传算子的设计以及算法参数的选择等。

Berndt等人[22]将输入空间划分成多个区间,根据待选输入的多种特性创建了一个最小化函数,使用简单遗传算法进行求解,并使用了求解过程中的化石记录来指导求解过程。

景志远[23]则从数学的角度分析了将MGA和遗传K均值等改进的算法应用于测试用例的自动生成。

蔡立志等人[24]提出了一种基于遗传算法的成对测试生成方法,该方法用于选择当前局部优化覆盖的测试用例,以此构建满足成对测试基准的测试用例套,有效降低了相同覆盖率下的测试用例数量。

陈雨等人[25]将自适应算子和禁忌搜索思想融入到遗传算法中,充分发挥遗传算法的全局搜索和禁忌搜索算法局部搜索优势,提高了测试数据的生成能力。

全君林等人[26]提出了一种应用于软件回归测试过程中的基于遗传算法的最小化测试用例集算法模型,该算法较一般的优化算法具有更高算法性能

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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