基于迭代的区间运算的软件测试用例自动生成方法及系统技术方案

技术编号:10986004 阅读:76 留言:0更新日期:2015-01-31 17:41
本发明专利技术涉及一种基于迭代的区间运算的软件测试用例自动生成方法及系统,包括:S1、读取待测程序中的预定路径,通过遍历所述待测程序的控制流图得到所述预定路径的各个变量的变量取值区间;S2、将所述变量取值区间通过迭代的区间运算遍历所述控制流图,得到各个所述变量的初始稳定变量取值区间;S3、对所述初始稳定变量取值区间中的无穷变量取值区间进行初始化处理,通过迭代的区间运算遍历所述控制流图,并将运算结果保存到所述初始稳定变量取值区间;S4、根据预设的机制对变量进行排序,并确定当前变量;S5、对所述当前变量的初始稳定变量取值区间进行回退运算、迭代的区间运算及回溯运算,生成测试用例;S6、对生成的所述测试用例进行验证。

【技术实现步骤摘要】
基于迭代的区间运算的软件测试用例自动生成方法及系统
本专利技术涉及软件测试技术,尤其涉及一种基于迭代的区间运算的软件测试用例自动生成方法及系统。
技术介绍
软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。统计表明,软件测试与维护的费用要占到整个软件开发费用的50%以上。在软件测试中,不少测试方法包含着大量的人工操作,这些操作在手工完成时令人厌烦且容易出错,更有甚者,用手工计算已经超出了问题的范围或者用手工方法是完全行不通的。为了减少人工测试的成本并提高测试的可靠性,研究人员一直致力于实现测试自动化,而其中一个重要的活动就是自动生成测试用例。在众多的软件测试方法中,面向路径的测试用例生成问题(简称为问题Q)可以描述为:给定一个程序或者程序模块P和P中任意一条路径W,一个变量xi如果出现在程序模块P的一个输入声明中或者是P的一个输入参数,则称xi为P的一个输入变量。输入变量xi的定义域Dxi为xi所有可能的取值集合。一个输入向量x={x1,x2,…,xm}∈(Dx1×Dx2×…×Dxm)称为程序模块P的一个程序输入,简称为P的一个输入,其中m为P中输入变量的个数。设P的所有输入数据表示为解空间D,求x∈D,其目标是在测试结束时,使得以x为输入运行程序模块P,程序沿路径W运行。研究表明,对于任意的P和W,不存在通用的有效算法求解x,并且无法保证W一定是可达路径,在生成测试用例过程中需要对W的可达性进行判断。目前路径W的测试用例生成主要是靠人工来完成,需要大量的时间。在很多情况下,如果路径W比较复杂,例如,包括的分支比较多,或者分支比较复杂,人工生成测试用例几乎是不大可能的。在目前国内外从事软件测试的企业中,大都采用人工方式或计算机辅助方式生成用例。这两种生成测试用例方法的缺点是:1)生成用例需要花费大量的时间,测试效率低;2)需要专业的软件测试人员,并且需要该人员对被测软件很熟悉;3)测试效果可信度低。
技术实现思路
本专利技术提供一种基于迭代的区间运算的软件测试用例自动生成方法及系统,能够按照给定的待测软件程序的控制流图,针对指定路径生成符合要求的测试用例,提高了软件测试的效率与自动化程度。同时对测试用例生成过程中的区间运算进行迭代处理,以达到不可达路径检测和变量取值区间削减的目的。根据上述目的,本专利技术提供了一种基于迭代的区间运算的软件测试用例自动生成方法,所述方法包括:S1、读取待测程序中的预定路径,通过遍历所述待测程序的控制流图得到所述预定路径的各个变量的变量取值区间;S2、将所述变量取值区间通过迭代的区间运算遍历所述控制流图,得到各个所述变量的初始稳定变量取值区间;S3、对所述初始稳定变量取值区间中的无穷变量取值区间进行初始化处理,通过迭代的区间运算遍历所述控制流图,并将运算结果保存到所述初始稳定变量取值区间;S4、根据预设的机制对变量进行排序,并确定当前变量;S5、对所述当前变量的初始稳定变量取值区间进行回退运算、迭代的区间运算及回溯运算,生成测试用例;S6、对生成的所述测试用例进行验证。其中,所述步骤S2具体包括:S21、将各个所述变量以及对应的变量取值区间传入所述控制流图的入口节点,通过遍历所述控制流图进行区间运算;S22、当任一所述变量的当前区间运算发生矛盾,则判定路径不可达,结束所述当前区间运算;S23、当所有所述变量的当前区间运算不矛盾,判断当前区间运算结果与上一次区间运算的结果是否相同;S24、如果任一所述变量的当前区间运算结果和所述上一次区间运算结果不同,判断任一所述变量的当前区间运算的结果比所述上一次区间运算的结果是否有缩小,若有缩小则将所有所述变量的当前区间运算结果设置为新的输入条件,返回步骤S21继续进行区间运算,若没有缩小,结束当前区间运算;S25、如果所有所述变量的当前区间运算结果和所述上一次区间运算结果相同,则将各个所述变量的当前变量取值区间进行压缩并保存到所述各个变量的初始稳定变量取值区间中。其中,所述步骤S3具体包括:S31、对各个所述变量的初始稳定变量取值区间中的无穷变量取值区间按照区间初始化策略进行压缩,形成各个所述变量的有界变量取值区间;S32、将各个所述变量和对应的有界变量取值区间传入到所述控制流图的入口节点,通过遍历所述控制流图进行区间运算;S33、当任一所述变量的当前区间运算发生矛盾则将发生矛盾的有界变量取值区间的边界进行放大,然后重新执行步骤S32;S34、当所有所述变量的当前区间运算不矛盾,判断当前区间运算结果与上一次区间运算的结果是否相同;S35、如果任一所述变量的当前区间运算结果和所述上一次区间运算结果不同,判断任一所述变量的当前区间运算的结果比所述上一次区间运算的结果是否有缩小,若有缩小则将所有所述变量的当前区间运算结果设置为新的输入条件,返回步骤S32继续进行区间运算,若没有缩小,结束当前区间运算;S36、如果所有所述变量的当前区间运算结果和上一次区间运算结果相同,则将各个所述变量的当前区间运算压缩并保存到所述初始稳定变量取值区间。其中,所述步骤S5具体包括:S51、为所述当前变量选择回退值;S52,将所述回退值传入所述控制流图的入口节点,通过遍历所述控制流图进行区间运算;S53、判断当前区间运算是否发生矛盾,发生则进行步骤S54,否则执行步骤S56;S54、根据矛盾信息选取下一回退值,然后执行步骤S52判断是否发生矛盾,当所述当前变量的所有回退值的区间运算都发生矛盾时,执行步骤S55;S55、对当前变量进行回溯,然后重新为所述当前变量选取回退值,并执行步骤S52,当回溯后的所述当前变量的所有回退值的区间运算都发生矛盾时,结束运算;S56、当区间运算不矛盾,判断当前区间运算结果与上一次区间运算的结果是否相同;S57、如果任一所述变量的当前区间运算结果和所述上一次区间运算结果不同,判断任一所述变量的当前区间运算的结果比所述上一次区间运算的结果是否有缩小,若有缩小则将所有所述变量的当前区间运算结果设置为新的输入条件,返回步骤S52继续进行区间运算,若没有缩小,结束当前区间运算;S58、如果所有所述变量的当前区间运算结果和上一次区间运算结果相同,则将当前变量的初始稳定变量取值区间保存到稳定变量取值区间中,生成测试用例。其中,步骤S6包括:S61、用所述生成的测试用例驱动所述待测程序,并根据插装的代码记录实际执行的路径;S62、比较实际执行的路径和预设路径,判断实际执行的路径与预设路径是否符合,如果不符合则所述测试用例生成失败;如果符合,则将得到的测试用例存储并将其返回给用户。根据本专利技术的另一个方面,提供一种基于迭代的区间运算的软件测试用例自动生成系统,所述系统包括:预处理模块,用于读取待测程序中的预定路径,通过遍历所述待测程序的控制流图得到所述预定路径的各个变量的变量取值区间;初始区间运算模块,用于将所述变量取值区间通过迭代的区间运算遍历所述控制流图,得到各个所述变量的初始稳定变量取值区间;无穷变量区间运算模块,用于对所述初始稳定变量取值区间中的无穷变量取值区间进行初始化处理,通过迭代的区间运算遍历所述控制流图,并将所述运算结果保存到所述初始稳定变量取值区间;排序模块,用于根据预设的机制对变量进行本文档来自技高网
...
基于迭代的区间运算的软件测试用例自动生成方法及系统

【技术保护点】
基于迭代的区间运算的软件测试用例自动生成方法,其特征在于,所述方法包括:S1、读取待测程序中的预定路径,通过遍历所述待测程序的控制流图得到所述预定路径的各个变量的变量取值区间;S2、将所述变量取值区间通过迭代的区间运算遍历所述控制流图,得到各个所述变量的初始稳定变量取值区间;S3、对所述初始稳定变量取值区间中的无穷变量取值区间进行初始化处理,得到有界变量取值区间,并将所述有界变量取值区间通过迭代的区间运算遍历所述控制流图,并将运算结果保存到所述初始稳定变量取值区间;S4、根据预设的机制对变量进行排序,并确定当前变量;S5、对所述当前变量的初始稳定变量取值区间进行回退运算、迭代的区间运算及回溯运算,生成测试用例;S6、对生成的所述测试用例进行验证。

【技术特征摘要】
1.基于迭代的区间运算的软件测试用例自动生成方法,其特征在于,所述方法包括:S1、读取待测程序中的预定路径,通过遍历所述待测程序的控制流图得到所述预定路径的各个变量的变量取值区间;S2、将所述变量取值区间通过迭代的区间运算遍历所述控制流图,得到各个所述变量的初始稳定变量取值区间;S3、对所述初始稳定变量取值区间中的无穷变量取值区间进行初始化处理,得到有界变量取值区间,并将所述有界变量取值区间通过迭代的区间运算遍历所述控制流图,并将运算结果保存到所述初始稳定变量取值区间;S4、根据预设的机制对变量进行排序,并确定当前变量;S5、对所述当前变量的初始稳定变量取值区间进行回退运算、迭代的区间运算及回溯运算,生成测试用例;S6、对生成的所述测试用例进行验证;所述步骤S2具体包括:S21、将各个所述变量以及对应的变量取值区间传入所述控制流图的入口节点,通过遍历所述控制流图进行区间运算;S22、当任一所述变量的当前区间运算发生矛盾,则判定路径不可达,结束所述当前区间运算;S23、当所有所述变量的当前区间运算不矛盾,判断当前区间运算结果与上一次区间运算的结果是否相同;S24、如果任一所述变量的当前区间运算结果和所述上一次区间运算结果不同,判断任一所述变量的当前区间运算的结果与所述上一次区间运算的结果相比是否有缩小,若有缩小则将所有所述变量的当前区间运算结果设置为新的输入条件,返回步骤S21继续进行区间运算,若没有缩小,结束当前区间运算;S25、如果所有所述变量的当前区间运算结果和所述上一次区间运算结果相同,则将各个所述变量的当前变量取值区间进行压缩并保存到所述各个变量的初始稳定变量取值区间中。2.根据权利要求1所述的软件测试用例自动生成方法,其特征在于,所述步骤S3具体包括:S31、对各个所述变量的初始稳定变量取值区间中的无穷变量取值区间按照区间初始化策略进行压缩,形成各个所述变量的有界变量取值区间;S32、将各个所述变量和对应的有界变量取值区间传入到所述控制流图的入口节点,通过遍历所述控制流图进行区间运算;S33、当任一所述变量的当前区间运算发生矛盾则将发生矛盾的有界变量取值区间的边界进行放大,然后重新执行步骤S32;S34、当所有所述变量的当前区间运算不矛盾,判断当前区间运算结果与上一次区间运算的结果是否相同;S35、如果任一所述变量的当前区间运算结果和所述上一次区间运算结果不同,判断任一所述变量的当前区间运算的结果比所述上一次区间运算的结果是否有缩小,若有缩小则将所有所述变量的当前区间运算结果设置为新的输入条件,返回步骤S32继续进行区间运算,若没有缩小,结束当前区间运算;S36、如果所有所述变量的当前区间运算结果和上一次区间运算结果相同,则将各个所述变量的当前区间运算压缩并保存到所述初始稳定变量取值区间。3.根据权利要求1所述的软件测试用例自动生成方法,其特征在于,所述步骤S5具体包括:S51、为所述当前变量选择回退值;S52,将所述回退值传入所述控制流图的入口节点,通过遍历所述控制流图进行区间运算;S53、判断当前区间运算是否发生矛盾,发生则进行步骤S54,否则执行步骤S56;S54、根据矛盾信息选取下一回退值,然后执行步骤S52判断是否发生矛盾,当所述当前变量的所有回退值的区间运算都发生矛盾时,执行步骤S55;S55、对当前变量进行回溯,然后重新为所述当前变量选取回退值,并执行步骤S52,当回溯后的所述当前变量的所有回退值的区间运算都发生矛盾时,结束运算;S56、当区间运算不矛盾,判断当前区间运算结果与上一次区间运算的结果是...

【专利技术属性】
技术研发人员:王雅文邢颖宫云战张旭舟黄俊飞金大海
申请(专利权)人:北京邮电大学
类型:发明
国别省市:北京;11

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

1