一种面向路径的测试数据自动生成方法技术

技术编号:2878730 阅读:205 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种面向路径的测试数据自动生成方法,目的是提出一种无数据依赖关系分析的能够用于白盒、黑盒的测试数据自动生成的方法。本发明专利技术约束构造器根据当前程序输入和各输入变量的增量执行路径W上的语句,不分析W上的语句之间的数据依赖关系,构造W上各谓词函数的线性算术表示,然后建立输入变量的线性约束系统;约束求解器采用线性规划、线性整数规划、线性混合整数规划和最小二乘解法相结合的方法求解线性约束系统,经过若干次迭代寻找所需的测试数据。本发明专利技术构造线性约束系统的效率高,生成测试数据的能力强,既能用于白盒测试,又能用于黑盒测试;通用性和可移植性好,适用范围广。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及计算机软件测试中为指定的程序路径自动生成测试数据的方法,尤其是指定的程序路径中包括函数调用或者可执行程序调用时的测试数据自动生成方法。
技术介绍
计算机及软件在国民经济和社会生活等方面的应用越来越广泛和深入。人们在开发软件的过程中难免会引入错误。软件测试是揭示软件错误的重要手段。在软件测试中,面向路径的测试数据生成问题可以描述为给定一个程序P和P中一条路径W,设P的输入空间为D,求x∈D,使得P以x为输入运行,所经过的路径为W。软件测试中的控制流测试中诸如语句覆盖、分支覆盖、条件覆盖、判定一条件覆盖、路径覆盖等问题,数据流测试中的定义覆盖、引用覆盖等问题,组装测试中的凋用对覆盖、数据流测试等问题,以及面向断言的测试和回归测试中的一些问题都可以归结为该问题。目前,测试人员一般采用手工方法寻找x。自动求解面向路径的测试数据将有效地提高软件测试的效率和质量。解决面向路径的测试数据生成的关键在于约束系统的建立和求解。建立约束系统的困难是分析、化简路径W上的各种语句成分和各种数据类型,建立尽可能简洁的约束系统;求解约束系统的主要困难是处理可能存在的非线性约束。Matiyasevi 和E.J.Weyuker等人的研究表明不存在通用的有效的算法,对于任意的P和W,能生成使W被经过的程序输入。但是实际应用的需要迫使人们进行研究,并提出各种方法求解该问题。对于某种面向路径的测试数据生成方法,当W上存在函数调用或者可执行程序调用,但是没有提供被调用的函数或程序的源代码,只是给出该函数编译后的目标代码或程序编译后的可执行代码,且后面的谓词函数对这些目标代码或可执行代码存在数据依赖关系,此时,若该方法仍能生成测试数据,则称该方法能够用于黑盒测试,否则称该方法不能用于黑盒测试。目前,国内外面向路径的测试数据生成方法可分为四类随机法、试探法、静态法和动态法。随机法实质上是困难的。试探法主要包括遗传算法和模拟退火法两种。遗传算法本身很复杂,其理论研究目前相当有限,结果也不太深入,作为遗传算法的理论基石之一的隐性并行性的证明还存在严重缺陷。模拟退火法的收敛速度很缓慢。静态法包括符号执行法和区间算术法,它们都需要对W上的语句进行转换,故不能用于黑盒测试。符号执行方法通常要进行复杂的代数运算,且难于处理依赖于输入变量的循环条件、数组元素下标和函数调用。区间算术法需要对变量的取值区间进行对分穷举,当变量的取值区间为无穷区间时,该方法也是困难的。动态法可分为直线式程序法和Bogdan Korel、M.Gallagher等人、Neelam Gupta等人分别提出的方法等几种。直线式程序法要求用户先提供所有整数类型的变量值,并且在数值优化过程有可能陷于局部极值。Bogdan Korel和M.Gallagher等人分别提出的方法一次只考虑一个分支谓词和一个输入变量,且使用回溯技术,迭代次数多,资源消耗大;且Bogdan Korel提出的方法为了减小搜索的盲目性,需要采用动态数据流分析技术确定影响分支谓词的变量,不能用于黑盒测试。Neelam Gupta等人于1998年在ACM SIGSOFT第六届软件工程基础国际研讨会的论文集(Proceedings of The ACM SIGSOFT Sixth InternationalSymposium on the Foundations of Software Engineering)上发表的论文“Automated test data generation using an iterative relaxationmethod”中提出一种动态方法,从程序输入空间D中任选一组程序输入考察W上各分支谓词,通过静态、动态数据流分析确定各谓词函数对于输入变量的依赖关系,构造谓词片和动态切片,建立这些谓词函数关于当前输入的线性算术表示,然后建立输入变量的增量的线性约束系统,进而建立输入变量的增量的线性方程系统,采用高斯消去法求解后得到各输入变量的增量,从而获得一组新的程序输入。该方法在构造线性约束系统的过程中必须分析W上各语句之间的静态、动态数据依赖关系,故构造线性约束系统的效率较低,求解问题的能力较弱,不能用于黑盒测试当W上有循环语句时,必须指明该循环的循环体执行的次数,并将循环在W上展开;当W上存在函数调用时,需要采用类似宏替换的方法用实参替换被调用的函数体中的形参,将被调用的函数体在调用处展开。该方法不允许W上有goto语句;且该方法采用高斯消去法求解所建立的线性方程系统存在以下缺点若自由变量取值不适当,可能导致线性方程系统不相容。Neelam Gupta等人于1999年在IEEE第十四届自动化软件工程国际会议的论文集(Proceedings of The 14th IEEE International Conference onAutomated Software Engineering)上发表的论文“UNA based iterativetest data generation and its evaluation”中提出基于最小二乘解的约束求解方法,克服了基于高斯消去法的约束求解方法的缺点,但仍存在以下缺点(1)存在这样的线性混合整数规划问题,至少有一组解,但是基于最小二乘解的约束求解方法找不到;(2)对于所有规模的问题,基于最小二乘解的约束求解方法寻找实数值解的迭代算法在最坏情况下不收敛。Jon Edvardsson等人于2001年在第八届欧洲软件工程会议与ACMSIGSOFT第九届软件工程基础国际研讨会的联合会议的论文集(Proceedings of The Joint 8th European Software EngineeringConference and 9th ACM SIGSOFT Symposium on the Foundations ofSoftware Engineering)上发表的论文“Analysis of the constraint solverin UNA based test data generation”中提出的基于线性规划、线性整数规划、线性混合整数规划的约束求解方法可以克服基于最小二乘解的约束求解方法的缺点。但是基于线性规划、线性整数规划、线性混合整数规划的约束求解方法仍存在以下缺点存在可行的W,并且W上某些谓词函数中含有输入变量的非线性函数,由于采用线性算术表示对谓词函数进行线性化,根据某些初始程序输入建立的线性约束系统转化为一个矛盾的线性方程系统,如果采用基于线性规划、线性整数规划、线性混合整数规划的约束求解方法,则无法生成相应的测试数据。此外,人们在建立约束系统后,还研究了一些其它的约束求解方法,效果均不理想。
技术实现思路
本专利技术所要解决的技术问题就是针对现有的面向路径W测试数据自动生成方法的不足,提出一种新的测试数据自动生成方法,无须分析W上各语句之间的数据依赖关系,通过计算W上各谓词函数的线性算术表示,为输入变量建立线性约束系统,采用线性规划、线性整数规划、线性混合整数规划和最小二乘解法相结合的约束求解方法,经过若干次迭代寻找所需的测试数据,该方法既能用于白盒测试,又能用于黑盒测试。本专利技术的技术方案是本专利技术由输入接口本文档来自技高网
...

【技术保护点】
一种面向路径的测试数据自动生成方法,由输入接口、词法分析器、语法分析器、约束构造器、约束求解器、路径满足检查器、输出接口模块实现测试数据自动生成,其特征在于其实现步骤是: [1]用户从输入接口指定程序路径W、各输入变量的初值和增量以及其它参数值,如W上的所有谓词函数是否均为输入变量的线性函数、当W上的某谓词函数为输入变量的非线性函数时迭代求解的次数上限、以及当W上存在黑盒且黑盒中包含输入语句时,根据黑盒的接口规范所规定的黑盒中的输入变量的个数及各输入变量的数据类型等; [2]词法分析器对W进行词法分析后,语法分析器根据词法分析的结果对W进行语法分析,将W转换为约束构造程序和路径满足检查程序,约束构造程序经编译产生约束构造器,路径满足检查程序经编译产生路径满足检查器; [3]约束构造器根据当前程序输入和各输入变量的增量执行W上的语句,不分析W上的语句之间的数据依赖关系,构造W上各谓词函数的线性算术表示,然后建立输入变量的线性约束系统; [4]约束求解器采用线性规划、线性整数规划、线性混合整数规划和最小二乘解法相结合的方法求解该线性约束系统:若用户指定W上的谓词函数均为输入变量的线性函数,则采用线性规划、线性整数规划、线性混合整数规划方法求解;若用户指定W上的谓词函数中含有输入变量的非线性函数,则先采用线性规划、线性整数规划、线性混合整数规划方法求解,若无法找到解,则将该线性约束系统转换为线性方程系统,求它的最小二乘解;求解后获得新的程序输入即测试数据;最后由路径满足检查器进行检查,若该程序输入能使W被经过则结束,若该程序输入不能使W被经过则根据W上所有谓词函数是否为输入变量的线性函数以及迭代次数上限决定是否继续迭代求解;求解结果由输出接口输出。...

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:单锦辉王戟齐治昌
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:43[中国|湖南]

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

1