面向路径的软件测试数据进化生成系统技术方案

技术编号:7072012 阅读:271 留言:0更新日期:2012-04-11 18:40
本发明专利技术开发出一套面向路径的软件测试数据进化生成系统,该系统不仅能够根据用户选择的测试路径,使用遗传算法自动生成穿越目标路径的测试数据,而且在使用遗传算法生成测试数据的过程中,提供了多种可供选择的遗传算法个体编码方式、适应值计算方法、选择方式、交叉方式、变异方式等,方便用户根据不同类型的被测程序选择不同的测试数据生成方法,另外本系统还提供了传统随机法的测试数据生成方法作为对比,真正实现软件测试数据自动化生成。运用本发明专利技术系统,不仅使得软件测试效率的大大提高,也节约了软件开发的大量资源,更为国家相关计划和工程的可信软件研发提供了技术支持,促进我国软件业的发展。

【技术实现步骤摘要】

本专利涉及软件测试领域,设计并开发了一个面向路径的软件测试数据自动生成系统。
技术介绍
软件测试是软件质量保证的关键,是软件开发中不可缺少的环节,也是软件工程的重要组成部分,测试的效果直接关系到软件产品的质量。据美国工业界的统计,软件测试占整个软件开发周期总成本的50%以上,包括十分耗时、枯燥、非常困难且容易出错的诸多环节。另外,随着计算机控制对象复杂度的不断提高和软件功能的不断增强,软件的规模也在不断地增大。大型系统的代码量甚至达到了千万行以上,这使得软件测试的开销也越来越大。在软件测试工作中最重要的环节就是测试数据的生成,这也是非常耗时的一个环节, 则试数据的合理、准确与否常常关系到整个测试的成败。因此如果将该环节自动化,无疑将会缩短软件的开发周期,提高软件质量。近几十年来,国际上和国内少数研究机构针对不同的计算机语言开发出路径覆盖测试数据生成的系统,其中Scott开发的系统是针对!Fortran语言的,但只考虑了有限的 Fortran语句,如if语句,和一些简单的算术分支谓词以及简单的变量类型;Ferguson和 Korel开发了一个名为TESTGEN的测试数据生成系统,该系统支持fiscal语言编写的程序模块的测试数据生成。这个系统具有以下的限制性只支持整型数据的生成;只支持简单的算术和布尔分支谓词;只支持了 fiscal语言的一个子集,一些很重要的元素不能应用, 如过程等。单锦辉等在2002年《计算机工程与科学》第M卷第1期上给出了一种面向路径的测试数据自动生成工具的设计与实现,但是该方法使用的测试数据生成方法是基于改进的松弛迭代方法进行的,需要用户实现的初始操作较多,面对非专业的软件测试人员是较难使用;刘义等2005年在《中国科教博览》杂志上发表的C程序路径覆盖及测试数据自动生成系统,该方法只是针对分支覆盖准则的路径覆盖;李宝林等在2007年《计算机工程》 第33卷第15期中提出的面向路径的测试数据自动生成工具,该方法在路径选择和测试数据生成方法方面均有待改进,且测试数据生成的效率有待提高。目前在软件测试各种覆盖准则中,路径覆盖对程序的覆盖程度最高,检错效率也最高,因此设计开发基于路径覆盖的测试数据自动生成系统十分必要。现有路径覆盖的测试数据生成方法有很多,遗传算法作为一种高效的全局搜索方法,已经被广泛应用于测试数据生成中,现有使用该方法自动生成路径覆盖测试数据的系统软件采用的都是传统遗传算法,遗传算法的个体编码方式、适应值计算、选择方式、交叉方式以及变异方式等均只使用一种方法,测试数据生成的效率有待提高。实际上被测程序是多种多样的,如能针对不同被测程序,可以采用不同的编码方式和不同的适应值计算方法,将能够有效提高测试数据的生成效率。软件测试行业需要一种能够结合现有改进的遗传算法,快速生成被测程序测试数据的软件,真正实现软件测试数据生成的自动化。
技术实现思路
为了实现软件测试数据生成的自动化,提高软件测试的效率和质量,本专利技术开发出一套面向路径的软件测试数据进化生成系统,该系统不仅能够根据用户所选择的测试路径,自动生成穿越这些目标路径的测试数据,而且在使用遗传算法生成测试数据的过程中, 提供了多种可供选择的遗传算法个体编码方式、适应值计算方法、选择方式、交叉方式、变异方式等操作,方便用户根据被测程序的不同类型选择不同的测试数据生成方式,真正实现软件测试数据自动化生成。主要包含以下三大模块1、软件测试系统管理模块本模块主要实现的功能是被测程序的选择、插装、输入输出处理以及外部变理处理等一系列设置操作,是通过一个交互式界面来实现的。1. 1被测程序插装是指为了动态的获取某一数据在程序中的运行状态,在程序中插入一些检查语句,通过这些检查语句的执行并输出程序的运行特征数据。本系统主要针对被测程序中的分支语句进行插装。1. 2输入处理包含被测程序的导入、被测程序的编辑操作等部分。另外还包括对文件或程序的打开、保存、另存为、编辑、打印等一系列的操作处理。1. 3外部变量处理是对系统中软件测试数据生成方法的选择设置,还包含对系统本身的设置操作。2、被测程序分析操作模块本模块实现了通过对被测程序的内部分析,得出被测程序的输入数据类型、被测程序的控制流图、进一步得到针对路径覆盖准则的目标路径等。2. 1被测程序的输入值个数、输入值类型及其范围是应用遗传算法生成测试数据的重要条件。不同的被测程序输入值个数不同、输入值类型及取值范围也不会相同。2. 2程序的控制流程图(CFG)是根据被测程序的结构特征来生成的,其能够指导用户生成软件测试所需要的目标路径。被测程序的结构可用控制流图CFG = (V,E, entry, exit)表示,V是语句节点的集合,E是边集,表示语句间可能的控制流向,entry是唯一的源节点,对应程序的开始语句,exit是唯一的汇节点,对应程序的结束语句。2. 3针对用户选择的目标路径,将其表示成编码形式,本专利技术使用的编码是基于赫夫曼编码的形式,由0、1代码组成,对于任何一个分支语句,如果路径选择真分支,则用1表示,选择假分支则用0表示,这样路径编码能保证任何一个目标路径的编码都不是其他编码的前缀。3、软件测试数据生成模块本模块是专利技术的核心内容,本专利技术主要使用遗传算法生成穿越目标路径的测试数据,系统中我们对传统遗传算法进行了改进,生成测试数据的效率较高,为了给科研人员进行研究对比,我们还提供了随机法生成穿越目标路径的测试数据。本模块包括遗传算法和随机法执行过程中所需要的参数设置、执行过程、结果输出等。3. 1遗传操作方式及其参数的设定,对于遗传算法包括的选择算子、交叉算子、变异算子、交叉概率、变异概率、遗传算法种群规模、遗传算法终止代数、染色体编码方式、适应值函数、被测程序的输入值类型及取值范围、测试路径输入、实验执行次数等,如果是随机法则包括种群规模、最大运行代数、实验执行次数等;可以根据测试人员或是科研人员的实际需要进行设定,如果不重新设定,则采用系统的初始设定方式和参数执行相应的操作。3. 2测试数据的生成方法包括改进的遗传算法和随机法。遗传算法需要首先随机生成初始种群,然后重复做以下操作解码进化个体,运行被测程序,检查是否有种群个体穿越目标路径,若有则记录该个体,删除找到的目标路径, 如果没达到终止条件,计算个体适应值,执行选择、交叉、变异操作,得到新的种群。直到生成了全部目标路径的测试数据或者达到了最大运行代数,算法结束。解码最优个体,得到测试数据。本专利技术中提供了多种个体编码方式和适应值计算方法、选择方式、交叉方式、变异方式,可供用户自由选择。随机法不进行进化操作,每一代都是随机生成测试数据,运行被测程序,检查是否有穿越目标路径的测试数据,如果有则记录该数据并删除找到的目标路径,如果生成了全部目标路径的测试数据或是达到最大运行代数则结束算法。3. 3生成的测试数据,在输出窗口以表格形式输出。详细给出每条目标路径对应的测试数据,以及生成该数据的运行代数,生成所有测试数据所需要的运行时间等具体信息。本专利技术提供了一种面向路径的软件测试数据进化生成系统,该系统能够根据用户需求,应用遗传算法生成软件测试所需要的测试数据,提供了多种遗传操件的方式可供用户选择,并设计了随机法作为对比本文档来自技高网
...

【技术保护点】
1.面向路径的软件测试数据进化生成系统,其特征如下:软件测试系统管理模块,是被测程序的选择、插装、输入处理以及外部变量处理等一系列设置操作,是通过一个交互式界面来实现的。被测程序分析操作模块,实现了通过对被测程序的内部分析,得出被测程序的输入数据类型、被测程序的控制流图、进一步得到针对路径覆盖准则的目标路径等。软件测试数据生成模块,主要使用遗传算法生成穿越目标路径的测试数据,本系统对传统遗传算法进行了改进,生成测试数据的效率较高,还提供了随机法生成穿越目标路径的测试数据作为对比。本模块包括遗传算法和随机法执行过程中所需要的参数设置、执行过程、结果输出等。

【技术特征摘要】

【专利技术属性】
技术研发人员:巩敦卫罗永金张岩吴川姚香娟任丽娜张婉秋
申请(专利权)人:中国矿业大学
类型:发明
国别省市:32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1