一种基于混合策略的测试数据生成方法,综合利用多种技术的特点融合为测试数据的生成方法。虽然近来各种各样的测试数据生成机制层出不穷,每种技术还是有自己的局限性,例如囿于本身特点每种技术只对有限的几种数据结构适用性与精确性较强。以上的特点导致了单一测试数据生成技术不能广泛而精确地得到试用。我们的方法结合了随机策略,动态符号执行和搜索策略建立数据生成流程,构成了一个可以利用多种技术的优点而进行的高可靠性高拓展性的测试数据生成方法。
【技术实现步骤摘要】
一种基于混合策略的测试数据生成方法
本专利技术属于计算机
,涉及软件测试技术,尤其是软件测试测试数据生成领域,是一种基于混合策略的测试数据生成方法。
技术介绍
测试是软件开发周期中保障软件质量的一个极其重要的阶段,而测试本身正囿于测试数据规模的庞大和人工成本的繁多。其中,测试数据的生成是造成人工成本高昂的罪魁祸首之一。于是,为了减少测试数据生成的代价,人们提出了许多自动化的技术。这些技术大体上可以被归类为三种类型:随机策略(RS),动态符号执行(DSE)和基于搜索的策略(SBS)。然而,所有这些技术都有一个本质上的局限性,便是只在某些特征合适的数据结构上能产生优良和精确的效果。这个局限性很大程度上阻碍了这些测试数据生成技术被应用于真实世界的工业生产中。由此提出了混合策略,总的说来,混合策略在各种领域被成功的应用的本质原因就是因为单一技术的不完备性。本专利技术提出的混合策略方案可以融合最新技术优点,首先我们总结了本专利技术在基于混合策略方法所涉及到的一些技术的特点和局限性,如表1所示。表1技术随机策略动态符号执行基于搜索的策略特征随机利用路径的约束面向目标的优点快速,成本低利用了结构化信息可拓展性强缺点散乱复杂约束或路径爆炸局部最优和搜索瓶颈适合的数据类型*整型,枚举类型浮点类型,字符串类型在表格中,我们展示了随机策略、动态符号执行和基于搜索的策略各自的优点和缺点。随机测试是一个高性价比的方法,可以快速而低成本地生成大量地数据,但是生成的数据状态不稳定而且容易有很多冗余。至于动态符号执行,目前大多存在的相关技术对于整型及相关类型处理较好,可以准确而有效地计算满足约束的整型数,但是对于其他类型的数据类型支持相对一般。虽然有一些特定的技术旨在解决某一或某些特定类型,主流的约束求解器实践中并不能精确和低成本地得到使用。为了阐述得更加精确,我们列举以下几种典型类型作为例子:1.大多数约束求解器利用与有理数处理方法相同的方法处理浮点类型数值,换句话说就是利用了与浮点类型数值存储格式不同的数据结构的处理方法,因此我们利用该类约束求解器求出的浮点类型解就会有一定的精度损失,进而会导致我们遗失对于一些程序缺陷的检测或者获得高覆盖率。即使已经有人提出较好的能够处理浮点类型数的方法,这些方法仍存在自身的局限性,比如在处理整型数和浮点数结合的约束时会显得捉襟见肘。2.对于字符串类型的数据,约束求解器会利用类似数组形式数据的处理方法或者是利用自动机进行处理。利用数组型处理方法比如利用位向量,如果和目前的字符串长度相同的字符串都不能满足约束,我们就需要调整字符串的长度,利用不同长度的字符串来满足约束,于是我们的约束就需要被重新求解,这无疑大大增加了动态符号执行的成本。另一方面,若选择自动机方法,在借助自动机方法的同时会受制于自动机方法本质上的缺点,如对于否定约束处理的不完善(例如在Java中的不等于notEquals方法等)。鉴于约束求解器本身在面对多种多样不同的数据类型的时候存在缺点,更好的方法需要被提出及使用来更为妥善地处理这些数据类型。对于一些典型的数据类型如浮点数或者字符串类型,本专利技术选择利用基于搜索的策略去增加方案的稳定性和精度。本质上来讲,基于搜索的策略本身并不会和符号执行技术有什么冲突,反而能够很好地补充约束求解器的不足,有能力以更低的成本获取精度更高的浮点型、字符串乃至其他类型的数据。总的说来,任何一种单一的技术都远远不能满足一个相对可用的数据生成的要求。因此,混合策略成为了越来越多人选择的方向。尽管很多人提出了基于混合策略的技术,他们往往局限于两者之间,只利用一种技术去增进另一种技术。本专利技术想提出的是一个融合了多种技术的优点的一个有效而可用的方法。
技术实现思路
本专利技术要解决的问题是:现有的单一的自动化测试数据生成技术由于各自算法以及实现方法的局限性,对于不同类型的数据类型的生成所需的成本和提供的可用性差距很大,对于含有各种类型数据的真实世界中的软件的生成效果较差,所需成本却过高,因而需要提高测试用例生成技术的可用性并在同时削减成本。现有的混合策略方法只利用一种技术去增进另一种技术,达到的效果有限。本专利技术的技术方案为:一种基于混合策略的测试数据生成方法,利用混合测试数据生成技术制定生成流程:利用随机策略生成测试的基础数据,利用动态符号执行完成对于满足路径约束条件的整型数据的计算,利用基于搜索的策略完成对于其他类型数值型数据的精化以及对于字符串或用户自定义类型数据的获取,实现自动化的测试数据生成,包括以下步骤:1)随机策略生成初始数据,利用初始数据进行程序的动态执行,并记录路径约束;2)将步骤1)记录的路径约束的最后一个谓词进行反转,使其程序逻辑转向最后一个分支的另一边,生成一个新的路径约束,如果新生成的路径约束可解,则将新生成的路径约束对应的测试数据作为引导数据,进入步骤3),之后迭代进行步骤2)-5)直至到达极优解或使定时器超时而至死锁,进而保留结果并重启步骤1);如果新生成的路径约束不可解则直接重启步骤1),重新生成初始引导数据;3)将步骤2)生成的路径约束基于不同的数据类型进行解析与拆解,分别提取出不同类型的数据结构,包括pcf、pcs和pco,其中pcf是路径约束中包含浮点类型数据的部分,pcs和pco分别是包含字符串类型和其他类型的约束片段;4)对于不同数据类型基于搜索的策略有不同的处理方法:对于浮点类型的数据结构,使用交替变量法来精化浮点数的精度;对于字符串类型的数据结构,利用基因算法来解决对于字符串类型的处理问题;对于其他类型的数据结构,提供自定义的精化算法接口,用于用户针对数据类型自定义匹配函数,如果用户并没有定义对应数据结构的精化规则,默认对数据结构利用搜索的策略进行精化;5)将步骤2)得到的路径约束中的变量替换为经步骤4)精化后的具体数值,简化路径约束,使之更容易被约束求解器计算而得到可行解,再利用约束求解器对简化后的路径约束进行求解,生成的测试数据作为下一次迭代的输入数据,进行下一轮的生成和精化。其中,利用随机策略生成测试的基础数据对应步骤1),利用动态符号执行完成对于满足路径约束条件的整型数据的计算对应步骤2)与步骤5)前半部,利用基于搜索的策略完成对于其他类型数值型数据的精化以及对于字符串或用户自定义类型数据的获取对应步骤5)的后半部。本专利技术利用随机测试快速地获取初始输入,利用动态符号执行获取可以指导程序控制流的数据,利用搜索策略针对不同的数据类型获取更高的精度和匹配度。这个方法为自动化测试提供了更高的坚固性和拓展性。本专利技术提出了一个初步的基于混合策略的测试数据生成技术,即融合了现有技术的优点而构成一个旨在解决单一测试数据生成技术产生的局限性的问题。鉴于随机策略、动态符号执行和基于搜索的策略彼此本质上的很大的相异点和异构性,本专利技术提出的方法能够在提升数据质量的同时减少成本。本专利技术的特点在于:1、综合了自动化测试数据生成领域的多种技术的优点;2、利用随机策略生成初始数据,保证高效率与低成本;3、根据记录的路径约束信息,对谓词中的子句进行反转,通过改变程序谓词的方法引导程序控制流至未覆盖区域,达到更高覆盖;4、利用基于搜索的策略进行对于多种数据类型,包括浮点型数据、字符串型数据以及其他本文档来自技高网...
【技术保护点】
一种基于混合策略的测试数据生成方法,其特征是利用混合测试数据生成技术制定生成流程:利用随机策略生成测试的基础数据,利用动态符号执行完成对于满足路径约束条件的整型数据的计算,利用基于搜索的策略完成对于其他类型数值型数据的精化以及对于字符串或用户自定义类型数据的获取,实现自动化的测试数据生成,包括以下步骤:1)随机策略生成初始数据,利用初始数据进行程序的动态执行,并记录路径约束;2)将步骤1)记录的路径约束的最后一个谓词进行反转,使其程序逻辑转向最后一个分支的另一边,生成一个新的路径约束,如果新生成的路径约束可解,则将新生成的路径约束对应的测试数据作为引导数据,进入步骤3),之后迭代进行步骤2)‑5)直至到达极优解或使定时器超时而至死锁,进而保留结果并重启步骤1);如果新生成的路径约束不可解则直接重启步骤1),重新生成初始引导数据;3)将步骤2)生成的路径约束基于不同的数据类型进行解析与拆解,分别提取出不同类型的数据结构,包括pcf、pcs和pco,其中pcf是路径约束中包含浮点类型数据的部分,pcs和pco分别是包含字符串类型和其他类型的约束片段;4)对于不同数据类型基于搜索的策略有不同的处理方法:对于浮点类型的数据结构,使用交替变量法来精化浮点数的精度;对于字符串类型的数据结构,利用基因算法来解决对于字符串类型的处理问题;对于其他类型的数据结构,提供自定义的精化算法接口,用于用户针对数据类型自定义匹配函数,如果用户并没有定义对应数据结构的精化规则,默认对数据结构利用搜索的策略进行精化;5)将步骤2)得到的路径约束中的变量替换为经步骤4)精化后的具体数值,简化路径约束,使之更容易被约束求解器计算而得到可行解,再利用约束求解器对简化后的路径约束进行求解,生成的测试数据作为下一次迭代的输入数据,进行下一轮的生成和精化。...
【技术特征摘要】
1.一种基于混合策略的测试数据生成方法,其特征是利用混合测试数据生成技术制定生成流程:利用随机策略生成测试的基础数据,利用动态符号执行完成对于满足路径约束条件的整型数据的计算,利用基于搜索的策略完成对于其他类型数值型数据的精化以及对于字符串或用户自定义类型数据的获取,实现自动化的测试数据生成,包括以下步骤:1)随机策略生成初始数据,利用初始数据进行程序的动态执行,并记录路径约束;2)将步骤1)记录的路径约束的最后一个谓词进行反转,使其程序逻辑转向最后一个分支的另一边,生成一个新的路径约束,如果新生成的路径约束可解,则将新生成的路径约束对应的测试数据作为引导数据,进入步骤3),之后迭代进行步骤2)-5)直至到达极优解或使定时器超时而至死锁,进而保留结果并重启步骤1);如果新生成的路径约束不可解则直接重启步骤1),重新生成初始引导数据;3)将步骤2)生成的路径约束基于不同的数据类型...
【专利技术属性】
技术研发人员:周骏贵,徐宝文,刘子聪,陈振宇,张驰,濮力,程秀才,谢佩章,王婧宇,
申请(专利权)人:江苏苏测软件检测技术有限公司,南京大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。