基于遗传算法的测试用例生成方法本科毕业论文docx.docx
- 文档编号:11700223
- 上传时间:2023-03-30
- 格式:DOCX
- 页数:33
- 大小:280.18KB
基于遗传算法的测试用例生成方法本科毕业论文docx.docx
《基于遗传算法的测试用例生成方法本科毕业论文docx.docx》由会员分享,可在线阅读,更多相关《基于遗传算法的测试用例生成方法本科毕业论文docx.docx(33页珍藏版)》请在冰豆网上搜索。
基于遗传算法的测试用例生成方法本科毕业论文docx
基于遗传算法的测试用例生成方法
本科毕业论文
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文屮特别加以标注和致谢的地方外,不包含其他人或组织己经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历
而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
R期:
指导教师签名:
EI期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论
文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的卬刷本和电子版,并提供目录检索与阅览服务;学校可以釆用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重耍贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后杲由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位
论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩
印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年
月
日
导师签名:
口期:
年
月
注意事项
1•设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)屮文摘要(300字左右)、关键词
4)外文摘要、关键词
5)H次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包扌舌图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3•附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4•文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题FI的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单而打印,论文50页以丄的双而打印
4)图表应绘制于无格子的页面丄
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装
指导教师评阅书
指导教师评价:
一、撰写(设计)过程
1、学生在论文(设计)过程屮的治学态度、工作精神
□优□良□屮□及格口不及格
2、学牛掌握专业知识、技能的扎实程度
□优□良□屮□及格口不及格
3、学牛综合运用所学知识和专业技能分析和解决问题的能力
□优□良□屮□及格口不及格
4、研究方法的科学性;技术线路的可行性;设计方案的合理性
□优□良□屮□及格口不及格
5、完成毕业论文(设计)期间的出勤情况
□优□良□屮□及格口不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□屮□及格口不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□屮□及格口不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□屮□及格口不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□屮□及格口不及格
3、论文(设计说明书)所体现的整体水平
□优□良□屮□及格口不及格
建议成绩:
□优□良□中□及格口不及格
(在所选等级前的□内画“丁”)
指导教师:
(签名)单位:
(盖章)
年月日
评阅教师评阅书
评阅教师评价:
一、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□屮□及格口不及格
2、是否完成指定的论文(设计)任务(色括-装订及附件)?
□优□良□屮□及格口不及格
二、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□屮□及格口不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□屮□及格口不及格
3、论文(设计说明书)所体现的整体水平
□优□良□屮□及格口不及格
建议成绩:
□优
□良□中
□及格
□不及格
(在所选等级前的□内画
“J”)
评阅教师:
(签名)
单位:
(盖章)
年月
日
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价:
一、答辩过程
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优
□良
□屮
□及格
□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优
□良
□屮
□及格
□不及格
3、论文(设计说明书)所体现的整体水平
□优
□良
□屮
□及格
□不及格
评定成绩:
□优□良□中□及格口不及格
教研室主任(或答辩小组组长):
(签名)
年月日
教学系意见:
摘要
软件测试是保证软件质量和可靠性重要手段,在这方面发挥着其它方法不可替代的作用。
然而,软件测试是一个复杂的过程,需要耗费巨大的人力、物力和吋间,约占整个软件开发成本的40%〜50%。
因此,提高软件测试工具的自动化程度对于确保软件开发质量、降低软件开发成本非常重要。
而提高测试用例牛成的自动化程度又是提高测试工具乃至整个测试过程自动化程度的关键所在,木文主要针对这一问题进行了研究和设计。
本文在分析软件测试和遗传算法基本概念的基础上,提出软件测试用例的设计是软件测试的难点Z—。
论文提出了基于遗传算法的测试用例牛成的内含是应用遗传算法來求解一组优化的测试用例,其框架包括了测试环境构造、遗传算法及测试运行环境三部分,论文给出了基于遗传算法的测试用例牛成的模型。
最后以三角形分类程序为例应用遗传算法进行测试用例牛成的模拟,结果显示,应用遗传算法进行测试用例牛成可行。
关键词:
软件测试测试用例遗传算法
ABSTRACT
Softwaretestistheimportantmeansthatguaranteesoftwarequalityandreliability,andinthisrespect,itplaystherolethatothermethodcannotreplace・Howeversoftwaretestisacomplexprocess,itneedstoconsumehugemanpower,materialresourcesandtime,whichtakesthe40%~50%ofentiresoftwaredevelopmentcostapproximately・Therefore,raisingtheautomationlevelofsoftwaretesttoolisveryimportsntforensuresoftwaredevelopmentqualityandreductionsoftwaredevelopmentcost.Andthen,themostimportsntisraisingtheautomationlevelofthetestcasegenerationforraisingtheautomationleveloftesttoolandevenentiretestprocess,sothispaperstudyanddesignmainlyaccordingtothisproblem・
Basedontheanalysisofbasicconceptsofsoftwaretestingandgeneticalgorithm,thisarticleproposesthatsoftwaretestcasedesignisoneofthedifficultiesofsoftwaretesting・Paperpresentstheinherentinsoftwaretestcasedesigningbasedongeneticalgorithmisusinggeneticalgorithmtosolveasetofoptimizationtestcases,andtheframeworkineludesthreepartswhicharetestenvironmentconstruction,geneticalgorithmandtheenvironmentfortest・Paperpresentsthemodelofsoftwaretestcasegenerationbasedongeneticalgorithm.Finally,wetakethetrianglecategorizerasanexample,simulatesoftwaretestcasegenerationbasedongeneticalgorithm・Theresultsdisplaythatsoftwaretestcasegenerationbasingongeneticalgorithmispossible.
KEYWORDS:
softwaretest,testcase,geneticalgorithm
摘要1
ABSTRACT9
FI录10
第一章绪论12
1.1问题的提出12
1.2国内外研究现状13
1.3论文研究内容15
第二章软件测试及遗传算法基本概念16
2.1软件测试基本概念16
2.1.1软件测试的目的16
2.1.2软件测试的原则16
2.2软件测试的难点17
2.3遗传算法18
2.3.1遗传算法的思想及流程18
2.3.2遗传算法的特点20
2.4本章小结21
第三章基于遗传算法的测试用例生成22
3.1基于遗传算法的测试用例牛成基本内涵22
3.1.1软件测试用例的基本内涵22
3.1.2基于遗传算法的测试用例牛成的基本内涵23
3.2基于遗传算法的测试用例牛成框架23
3.3基于遗传算法的测试用例牛.成算法实现25
3.3.1编码策略25
3.3.2适应度函数及程序插桩26
3.3.3遗传策略27
3.3.4参数控制28
3.4本章小结29
第四章实验及结果分析30
4.1待测程序分析30
4.1.1待测程序引入30
4.1.2程序流程分析30
4.1.3路径分析31
4.2程序插桩31
4.3参数设定及程序实现32
4.3.1参数设定32
4.3.2部分程序实现33
4.4结果分析35
4・5本章小结37
第五章总结与展望38
致谢语39
参考文献40
第一章绪论
1.1问题的提出
在信息化普及的今天,计算机在人们的牛活和工作屮占据着重要地位,使人们的工作效率提高,也使牛活更丰富多彩。
而作为计算机的重要组成部分,软件的重要性不言血喻。
随着计算机技术的日益发展,计算机软件的规模越来越庞大,复杂性越来越高,这就为软件质量的保证带来了困难。
因为软件的开发过程大部分是由人的智力活动构成,不可能完美无缺。
而软件缺陷如果不能及时发现,带来的损失可能是巨大的,有的甚至会危及人的牛命。
在历史上臭名昭著的软件缺陷案例有C1:
:
1999年12月3日,美国航天局的火星基地登陆飞船在试图登陆火星表而时失踪,原因仅仅是一个数据位的意外更改;美国爱国者导弹防御系统曾在几次对抗导弹战役屮失利,其屮一次竟然误使28名美国士兵丧牛,原因是一个很小的系统时钟错误导致系统累计拖延了100多个小时使跟踪系统失去准确度;还有就是大名鼎鼎的“千年虫”问题,起因是在20世纪70年代,为了节省硕盘空间,美国某位程序员在编写工资系统时将4位数日期(如1975)改成了2位数FI期(如75),该缺陷一直拖到1995年都没有修复,最终给全球带来了高达数亿美元的损失等等。
作为提高软件质量的重要手段,软件测试越來越受到重视。
在美国的微软公司,测试人员和开发人员的比例达到了2:
1[2\软件测试伴随着整个开发过程,是一个非常复杂的过程,其消耗的人力和资金一般占整个项FI的一半左右。
而在某些特别重要的软件开发过程屮,为保证软件的质量,测试的费用甚至是其它各阶段Z和的3到5倍肚。
测试过程屮,测试人员通常需要分析、设计和执行大量的测试用例,从而耗费了人量资源,因此找出合理的测试用例牛成方法可以有效缩短测试吋间,减少损耗,一般可以有效降低整个项H的4%费用⑷。
然而,H前牛成测试用例的方法主要是向前核查法和逆向回溯法,测试人员根据自己的项H经验手工为指定的程序路径牛成测试数据曲。
向前核查法是指沿预期的路径向前检查,确定到每一个判断点时变量所能提供的最宽数值区间,然后继续前行,从血将多个变量的可能取值范围逐渐缩小,到达程序出口后,就能找到覆盖这条路径所需的输入数据。
逆向回溯法正好相反,是指从期望执行的程序位置出发,逆向冋溯,在每个判断点处逐渐调整各变量取值,直到退到程序入口,即获得所需的输入数据。
向前核查法和逆向冋溯法的局限性是,对某些条件要求苛刻的路径使用吋非常困难,同吋由于大多数稈•序屮包含的路径数非常多,如果按每条路径手工测试,显然带来的工作量是非常巨大的。
由于测试的工作量人、测试过程的重复性高等特点,自动化测试正逐渐得到广泛的应用。
很多测试工具的使用大大提高了测试人员的工作效率,有效减少了项n开支。
然而这些工具主要为测试的执行、管理和度量工具,在测试用例自动牛成方面还不完善。
而在软件测试过程屮,动态测试作为测试的重要环节占了很大比例,动态测试的关键正是测试用例的牛成问题。
因此寻找一利有效的测试用例牛成方法是提高测试自动化的重屮之重。
1.2国内外研究现状
自上世纪60年代起,国内外的学者专家对测试用例的动牛成提出了很多方法,应用较为广泛的有随机法、静态法、动态法以及试探法⑸⑹[7]蓟9]如心2]。
D.Bird[,3]等提出了采用随机法牛成测试用例,其思想是不受限制地随机产牛大量的测试用例。
该方法产牛测试用例的成本很低,在某些抽样测试屮效果较好,但是该方法的针对性较弱,在输入空间为无穷大时产牛的测试用例集非常庞大,测试效率低,现在的很多工具都是采用的该方法。
静态法的典型代表是符号执行法,由P.D.Coward"和C.Ramanmoorthy13"等人提出。
该方法的主要思想是把符号值作为程序输入,静态“执行”指定路径的语句,从而得到变量的值。
这里所谓的执行,是指按照程序执行的顺序将相应的变量用符号表达式代换。
该方法的缺点为需要进行复朵的代数运算,难以处理依赖于输入变量的循环条件、数组元素下标和模块调用的情况,特别对于动态的面向对象程序不适合使用。
与静态法相对应的是动态法,该方法的基木思想是从输入空间屮任取一个假设解作为初始输入,通过实际运行程序不断调整输入,使得程序实际执彳亍路径向指定路径不断逼近,直到与指定路径完全一致。
Korer17:
法是动态法的典型代表:
其采用的是步进的方式执行程序,即一次只前进一个分支谓词;Korel还提岀了“谓词函数”的概念,用来度量分支谓词的接近满足程度。
然而,由于Korel法一次只考虑一个分支谓词,使用冋溯技术,所以要进行大量的迭代,浪费了大量的资源。
而且由于对于非线性路径约束,该方法只能找到局部极小值,当谓词函数有多个局部极小值吋显然将难以找到H标路径的解。
除此之外,动态法还色括程序插装的方法和迭代松弛法,M.Gallagher和NeelamGuptal18分别对这两种方法进行了全面的阐述。
第四种算法是试探法,该方法的基木思想是从输入数据空间屮选择输入数据,运行程序,将运行结果结合概率论的思想产牛新的数据继续进行试探。
其受搜索空间限制条件的约束小,且不需要其它辅助性信息,对于很多高复杂度问题(如大空间、多峰、非线性、全局优化等)具有独特的优势和高效性。
试探法主要包括遗传算法、模拟退火算法、禁忌搜索算法、混合策略的遗传算法等。
自20世纪90年代起,遗传算法因其独特的优点而开始被广泛的用于测试用例的牛成领域,并取得了良好的研究成果。
遗传算法模拟牛物学屮的遗传变界原理,采用编码技术将待求数据映射到基因空间,并通过选择、交叉、变杲等遗传操作和优胜劣汰的自然选择确定搜索方向,从血找到最优解。
实验证明,该算法具有隐性并行性和全局寻优能力,可以自动获取搜索过程屮的有关信息并用于指导优化。
Jones等人皿的实验表明,为使三角形分类等程序达到分支覆盖,遗传算法牛成的测试数据比随机法小一到两个数量级。
Jin-CherngLin等人加等人对适应度函数进行了研究,提岀了使用广义海明距离来构建适应度函数。
荚伟⑷分析了遗传算法在测试用例产牛这一问题上的可行性,提出了要有效解决该问题,必须从以下儿个角度进行研究:
参数的编码方法、适应度函数的构造、遗传算子的设计以及算法参数的选择等。
Berndt等人血将输入空间划分成多个区间,根据待选输入的多利】特性创建了一个最小化函数,使用简单遗传算法进行求解,并使用了求解过程屮的化石记录来指导求解过程。
景志远㈤则从数学的角度分析了将MGA和遗传K均值等改进的算法应用于测试用例的h动牛•成。
蔡立志等人凶提出了一种基于遗传算法的成对测试牛成方法,该方法用于选择当前局部优化覆盖的测试用例,以此构建满足成对测试基准的测试用例套,有效降低了相同覆盖率下的测试用例数量。
陈雨等人酬将自适应算子和禁忌搜索思想融入到遗传算法111,充分发挥遗传算法的全局搜索和禁忌搜索算法局部搜索优势,提高了测试数据的牛成能力。
全君林等人沁提出了一种应用于软件回归测试过程小的基于遗传算法的最小化测试用例集算法模型,该算法较一般的优化算法具有更高算法性能与效率。
1.3论文研究内容
本文主要做了以下方面的研究:
(1)广泛阅读了国内外相关文献资料,对软件测试和遗传算法的应用现状进行了概述,认为使用遗传算法进行测试用例牛成可行。
(2)分析了使用遗传算法进行测试用例牛成的基本内涵,提岀了算法框架及对遗传算法进行实现的具体策略。
(3)以三角形分类程序为例进行试验,分析了试验结果,证实了遗传算法的优越性。
第二章软件测试及遗传算法基本概念
2.1软件测试基本概念
2.1.1软件测试的目的
1983年TEEE在“软件工程标准术语”屮将软件测试定义为:
“使用人工或自动手段来运行或测定某个软件系统的过程,其FI的在于检验该被测软件是否满足规定的需求或是衡量预期结果和实际结果之间的差别。
”
定义屮指出软件测试的H的是“检验该被测软件是否满足规定的需求或是衡量预期结果和实际结果Z间的差别”
Grenford.J.Myers在其著作《TheArtOfSoftwareTesting》中提出了与软件测试相关的三个重要观点,指明了软件测试的H的为:
1软件测试是程序的执行过程,H的在于发现错误;
2一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;
3一个成功的测试是指发现了迄今为止尚未发现的错误的测试。
由此可见,软件测试的ri的可以概括为:
首先,软件测试要以最少的人力、物力,尽快找出软件屮潜在的各种缺陷,通过修正这些缺陷,提高软件产品质量,尽量减少软件产品发布后由潜在的软件缺陷带来的可能的商业风险。
其次,通过分析软件缺陷产牛的原因,可以帮助发现当前开发开发过程小的软件过程缺陷,以便进行软件过程的改进。
同时,通过对测试结果的分析整理,还可以修正软件开发规则,并为软件可靠性分析提供依据。
2.1.2软件测试的原则
软件测试作为一门独立的计算机软件技术,在执行过程屮必须遵守一定的原则,以保证测试效果。
软件测试的专家们经过长期的实践,总结出了软件测试的原则应如下:
1应把“尽早和不断地进行软件测试”作为软件开发者的座右铭。
实践证明单元测试能够尽早发现问题,减少后期测试的错误量。
单元测试过程屮可以使用相应白盒测试工具(如Junit,Jtest等)进行辅助测试,以提高测试效率。
2测试用例应由测试输入数据、测试执行步骤和与Z对应的预期输出结果三部分组成。
3应当避免由程序员检查自己的程序。
特别在后期的性能测试及系统测试屮,应避免程序员测试自己的程序。
这其屮除了某些心理因素外,该原则还可避免由于程序员个人的惯性思维而导致的某些理解错误。
4测试用例的设计耍确保能覆盖所有可能路径。
在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
不合理的输入条件是指异常的、临界的、可能引起问题的输入条件。
5充分注意测试111的群集现象。
经验表明,测试后程序残存的错误数FI与该程序11•已发现的错误数FI或检错率成正比。
应该对错误群集的程序段进行重点测试。
6严格执行测试计划,排除测试的随意性。
软件测试是有组织、有计划、有步骤的活动。
测试计划应包括:
所测软件的功能,输入和输岀,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的配置方式,跟踪规则,调试规则,以及回归测试的规定等等以及评价标准。
7应当对每一个测试结果做全面的检查。
8妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
2.2软件测试的难点
(1)测试用例设计
测试用例及测试例稈•是其设计者对被测对象实现原理和外部需求的理解,能否正确反映对被测对象的质量要求,很大程度上取决于其设计者的分析、理解和设计能力。
这是一•种缺乏指导性方法的、不易制订标准或规范的、需要“技巧”的设计活动。
(2)测试管理
H前缺乏测试管理方面的资料,几乎没有可供参考的、已实现的、完整的测试管理与测试实施模式。
(3)测试的组织
软件测试的有效实施需要开发组织与测试组织充分配合。
虽然测试活动看似是对开发人员劳动成果的不断“挑剔”,但测试工作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 遗传 算法 测试 生成 方法 本科毕业 论文 docx