利索能及
我要发布
收藏
专利号: 202210659622X
申请人: 江西财经大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-06-16
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种面向参数路径流图的相似程序间测试用例的重用方法,其特征在于,所述方法包括如下步骤:步骤一,参数路径流图构建:

以函数块为单位进行构建以得到待测程序的参数路径流图;

步骤二,生成最大公共子路径图:

在构建得到的参数路径流图中选择程序块,判断已知程序的输入参数的参数类型与所述待测程序的程序块中的参数类型是否相似;

若相似,则搜索所述参数路径流图,根据所述参数路径流图的节点层记录参数路径;

根据所述参数路径经过的节点数计算得到参数依赖度,并判断所述参数依赖度是否高于阈值;

若是,则通过参数择优方式筛选出符合相似度计算的最佳参数路径组,根据已知程序与待测程序的最佳参数路径组生成对应的状态转移矩阵,并根据所述状态转移矩阵计算得到最大公共子路径图;

步骤三,程序相似度计算:

根据预设公式计算得到所述最大公共子路径图的相似度,并根据所述最大公共子路径图的相似度计算得到待测程序块的参数路径流图与已知程序块的参数路径流图之间的相似度,其中所述待测程序中包含多个待测程序块,所述已知程序中包含多个已知程序块;

根据待测程序块的参数路径流图与已知程序块的参数路径流图之间的相似度计算得到程序相似度;

步骤四,测试用例的生成与重用:

根据所述程序相似度判断程序之间的相似性,若相似,则生成测试用例并进行重用。

2.根据权利要求1所述的一种面向参数路径流图的相似程序间测试用例的重用方法,其特征在于,在所述步骤一中,所述参数路径流图的构建方法包括如下步骤:输入已知程序的源代码,记录源代码的关键字与符号,并将所述已知程序进行格式化处理;

根据格式化后的已知程序,先识别源代码中用于划分程序类的关键字class,以构建参数路径流图的根节点;若存在关键字class,则将包含关键字class的语句中的参数保存在根节点中;若不存在关键字class,则将根节点记为Null;其中,根节点仅记录已知程序中以class定义的类名所涉及的参数;

在根节点构建完成后,继续识别源代码中用于划分函数块的关键字def,以构建参数路径流图的第一层节点;若存在关键字def,则将包含关键字def的语句中的所有参数保存在第一层节点中;若不存在关键字def,则将第一层节点记为null;其中,第一层节点用于记录以def定义的函数名所涉及的参数;

在第一层节点构建完成后,以函数块为单位,依次构建参数路径流图的第二层节点及第二层之后的节点;按行进行搜索,记录每个函数块中所有的参数路径;若当前行包含关键字,将涉及的对应参数保存在对应层的节点中,继续搜索下一行;若当前行不包含关键字,则将当前行所涉及的参数保存在上一层的节点中;依次逐行进行搜索,直至所有函数块的参数均保存在对应节点中,即完成所述参数路径流图的构建。

3.根据权利要求1所述的一种面向参数路径流图的相似程序间测试用例的重用方法,其特征在于,在所述步骤二中,参数类型包括粗粒度类型与细粒度类型,判断已知程序的输入参数的参数类型与所述待测程序的程序块中的参数类型是否相似的方法包括如下步骤:判断已知程序的输入参数的粗粒度类型是否与待测程序的程序块中参数的粗粒度类型是否相似;

若相似,则继续判断已知程序的输入参数的细粒度类型是否与待测程序的程序块中参数的细粒度类型是否相似;

若相似,则判定已知程序的输入参数的参数类型与所述待测程序的程序块中的参数类型相似;

其中,所述粗粒度类型中,字符串类型和字典类型互为不相似参数类型,数字类型、元组类型、列表类型和集合类型互为相似参数类型;所述细粒度类型中,int、float与 complex互为相似参数类型。

4.根据权利要求3所述的一种面向参数路径流图的相似程序间测试用例的重用方法,其特征在于,在所述步骤二中,所述参数依赖度的表达式为:其中, 为参数依赖度, 为参数同时经过的路径节点数, 为同时未经过的路径节点数, 为两个参数中最长路径节点数。

5.根据权利要求4所述的一种面向参数路径流图的相似程序间测试用例的重用方法,其特征在于,在所述步骤三中,所述最大公共子路径图的相似度的计算公式为:其中, 为最大公共子路径图的相似度, 为待测程序的程序块中的

第m个非空子路径图, 为已知程序的程序块中的第n个非空子路径图, 为待测程序的非空子路径图 的节点数, 为已知程序的非空子路径图 的节点数,为最大公共子路径节点数,m为待测程序的程序块中的非空子路径图的序号,n为已知程序的程序块中的非空子路径图的序号, 为待测程序块的参数路径流图中的参数个数与已知程序块的参数路径流图 中的参数个数之间的最大值。

6.根据权利要求5所述的一种面向参数路径流图的相似程序间测试用例的重用方法,其特征在于,在所述步骤三中,待测程序块的参数路径流图与已知程序块的参数路径流图之间的相似度的表达式为:其中, 为待测程序块的参数路径流图与已知程序块的参数路径流图之间的相似度, 为待测程序块的参数路径流图 中的参数个数, 为已知程序块的参数路径流图 中的参数个数, 为待测程序块的参数路径流图, 为已知程序块的参数路径流图。

7.根据权利要求6所述的一种面向参数路径流图的相似程序间测试用例的重用方法,其特征在于,在所述步骤三中,根据待测程序块的参数路径流图与已知程序块的参数路径流图之间的相似度计算得到程序相似度的表达式为:其中, 为程序相似度。

8.根据权利要求1所述的一种面向参数路径流图的相似程序间测试用例的重用方法,其特征在于,测试用例的生成与重用的方法包括如下步骤:初始化遗传参数,将多点交叉的概率设置为0.9,单点变异的概率设置为0.1,初始种群的规模设置为40,最大进化代数设置为1000;

将随机生成的测试用例转化为二进制编码;

判断种群进化代数是否达到进化代数阈值,若未达到进化代数阈值,则对种群个体进行适应度计算;

根据适应度与轮盘赌法选择可进行交叉的较优测试用例;

经过交叉后的种群个体再进行多点变异,进而产生新的种群,并对新的种群采用十进制编码,输入至待测程序中以用于覆盖目标路径;

若种群进化代数达到进化代数阈值,或已覆盖目标路径,则完成测试用例的重用。

9.根据权利要求8所述的一种面向参数路径流图的相似程序间测试用例的重用方法,其特征在于,对种群个体进行适应度计算的步骤中,存在如下表达式:其中, 为适应度函数, 为最大分支路径数, 为适应度,为分支路径数的取值。