单元测试方法、装置、电子设备和存储介质制造方法及图纸

技术编号:32583408 阅读:17 留言:0更新日期:2022-03-09 17:15
本申请实施例提供了一种单元测试方法、装置、电子设备和存储介质,该方法包括:获取第i种群的多个语句集合,每个语句集合包括至少一个语句;语句用于定义模拟对象的行为;根据每个语句对应的变异操作符,对每个语句进行变异操作,得到变异操作结果;对变异操作结果中的两个语句集合进行交叉互换,得到第i+1种群;若确定第i+1种群中存在符合测试用例的测试断言的语句集合,则采用符合测试断言的语句集合定义模拟对象;基于模拟对象对测试用例进行单元测试。基于本申请提供的单元测试方法,在单元测试时提高模拟对象的适用性。测试时提高模拟对象的适用性。测试时提高模拟对象的适用性。

【技术实现步骤摘要】
单元测试方法、装置、电子设备和存储介质


[0001]本申请实施例涉及金融科技(Fintech)的软件测试
,尤其涉及一种单元测试方法、装置、电子设备和计算机存储介质。

技术介绍

[0002]随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。
[0003]在软件研发过程中,软件需要经历单元测试、集成测试、系统测试、回归测试等阶段,以保证软件各个基本组成单位、各个接口的质量,验证软件功能、界面的正确,同时对发现的错误进行修复。
[0004]在单元测试中,存在代码模块需要依赖外部的类或者接口,对于某些不容易构造或者不容易获取的对象,需要创建适配的模拟对象,定义模拟对象适配出所需类或者接口进行测试。在实际应用中,由于测试返回的结果受到软件、硬件和系统环境等多方面的影响,测试阶段需要正常、异常各种各样的返回结果。
[0005]在相关技术中,针对特定领域测试依赖对象,生成特定类型Mock object。对一般类型的测试依赖对象,开发者通常需要手动创建Mock object,难以给Mock object指定合适的行为,无法适配任意的测试依赖对象。因此,如何在单元测试时提高模拟对象的适用性成为亟待解决的重要问题。

技术实现思路

[0006]本申请实施例提供了一种单元测试方法、装置、电子设备和计算机存储介质,可以在单元测试时提高模拟对象的适用性。
[0007]本申请实施例提供的一种单元测试方法,包括:
[0008]获取第i种群的多个语句集合,每个所述语句集合包括至少一个语句;所述语句用于定义模拟对象的行为;
[0009]根据每个所述语句对应的变异操作符,对每个所述语句进行变异操作,得到变异操作结果;对所述变异操作结果中的两个语句集合进行交叉互换,得到第i+1种群;
[0010]若确定所述第i+1种群中存在符合测试用例的测试断言的语句集合,则采用所述符合测试断言的语句集合定义所述模拟对象;基于所述模拟对象对所述测试用例进行单元测试。
[0011]在一种实现方式中,所述方法还包括:
[0012]在i为大于1的整数的情况下,若确定第i

1种群中不存在符合测试用例的测试断言的语句集合,则获取所述第i

1种群中每个语句集合的适应度;
[0013]根据所述每个语句集合的适应度,将所述第i

1种群中适应度大于预设阈值的语句集合作为第i种群的语句集合;
[0014]或者,根据所述每个语句集合的适应度,确定所述第i

1种群中每个语句集合被抽
中的概率;根据所述每个语句集合被抽中的概率,在所述第i

1种群的多个语句集合中抽样得到所述第i种群的语句集合。
[0015]在一种实现方式中,所述第i

1种群中包括M个语句集合;所述获取所述第i

1种群中每个语句集合的适应度,包括:
[0016]确定至少一个适应度函数和每个所述适应度函数的权重系数;获取所述第i

1种群中第j语句集合在每个所述适应度函数下的计算结果;
[0017]根据所述第j语句集合在每个所述适应度函数下的计算结果和每个所述适应度函数的权重系数,获取所述第j语句集合的适应度;
[0018]在j依次取1至M的情况下,获取所述第i

1种群中每个语句集合的适应度。
[0019]在一种实现方式中,所述第i种群中包括N个语句集合;所述对所述变异操作结果中的两个语句集合进行交叉互换,得到第i+1种群,包括:
[0020]确定所述N个语句集合中的两个语句集合,对所述两个语句集合中语句类型相同的语句进行交叉互换,产生所述两个语句集合的两个子代;
[0021]将所述两个语句集合中的至少一个和所述两个子代中的至少一个,加入所述第i+1种群中,得到所述第i+1种群中的N个语句集合。
[0022]在一种实现方式中,所述确定至少一个适应度函数,包括以下任一项:
[0023]根据语句集合中生成的语句条数和成功执行的语句条数,创建适应度函数;
[0024]根据测试用例能否执行到测试断言前的状态分布,创建适应度函数;
[0025]根据测试断言中断言语句的语句数和每个断言语句的期望值和实际值的编辑距离,创建适应度函数;
[0026]根据在模拟对象中所有方法调用的集合和在模拟对象中已经指定了行为的方法调用的集合,创建适应度函数;
[0027]根据测试断言中已被满足的断言语句的语句数和测试断言中所有断言语句的语句数,创建适应度函数。
[0028]在一种实现方式中,所述根据所述测试断言中断言语句的语句数以及每个断言语句的期望值和实际值的编辑距离,创建适应度函数,包括:
[0029]确定所述测试断言的至少一条断言语句;获取每个断言语句的期望值和实际值的编辑距离;
[0030]根据每个断言语句的期望值和实际值的编辑距离,获取每个断言语句的编辑距离的归一化结果;
[0031]根据所述测试断言中断言语句的语句数计算所述每个断言语句的编辑距离的归一化结果的加权平均值,根据所述加权平均值创建适应度函数。
[0032]在一种实现方式中,所述根据每个所述语句对应的变异操作符,对每个所述语句进行变异操作,包括以下任一项:
[0033]在语句类型为数值类型时,采用变异操作符对所述语句执行以下任一项操作:增加一个随机数值、减少一个随机数值;
[0034]在语句类型为字符串类型时,采用变异操作符对所述语句执行以下任一项操作:插入字符、删除字符、修改字符;
[0035]在语句类型为包含参数列表的语句时,采用变异操作符对所述语句执行以下操
作:将随机选择的一个参数替换为新的值;
[0036]在语句类型为匹配方法调用的语句时,采用变异操作符对所述语句执行以下操作:对匹配参数列表中的匹配参数进行修改;
[0037]在语句类型为行为列表的语句时,采用变异操作符对所述语句执行以下任一项操作:对模拟对象每次方法调用的各个行为次序进行调换、增加行为、删除行为、对行为的返回值进行修改。
[0038]本申请实施例提供的一种单元测试装置,包括:
[0039]获取模块,用于获取第i种群的多个语句集合,每个所述语句集合包括至少一个语句;所述语句用于定义模拟对象的行为;
[0040]处理模块,用于根据每个所述语句对应的变异操作符,对每个所述语句进行变异操作,得到变异操作结果;对所述变异操作结果中的两个语句集合进行交叉互换,得到第i+1种群;
[0041]测试模块,用于若确定所述第i+1种群中存在符合测试用例的测试断言的语句集合,则采用所述符合测试断言的语句集合定义所述模拟对象;基于所述模拟对象对所述测试用例进行单本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种单元测试方法,其特征在于,包括:获取第i种群的多个语句集合,每个所述语句集合包括至少一个语句;所述语句用于定义模拟对象的行为;根据每个所述语句对应的变异操作符,对每个所述语句进行变异操作,得到变异操作结果;对所述变异操作结果中的两个语句集合进行交叉互换,得到第i+1种群;若确定所述第i+1种群中存在符合测试用例的测试断言的语句集合,则采用所述符合测试断言的语句集合定义所述模拟对象;基于所述模拟对象对所述测试用例进行单元测试。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在i为大于1的整数的情况下,若确定第i

1种群中不存在符合测试用例的测试断言的语句集合,则获取所述第i

1种群中每个语句集合的适应度,根据所述每个语句集合的适应度,将所述第i

1种群中适应度大于预设阈值的语句集合作为第i种群的语句集合;或者,根据所述每个语句集合的适应度,确定所述第i

1种群中每个语句集合被抽中的概率;根据所述每个语句集合被抽中的概率,在所述第i

1种群的多个语句集合中抽样得到所述第i种群的语句集合。3.根据权利要求2所述的方法,其特征在于,所述第i

1种群中包括M个语句集合;所述获取所述第i

1种群中每个语句集合的适应度,包括:确定至少一个适应度函数和每个所述适应度函数的权重系数;获取所述第i

1种群中第j语句集合在每个所述适应度函数下的计算结果;根据所述第j语句集合在每个所述适应度函数下的计算结果和每个所述适应度函数的权重系数,获取所述第j语句集合的适应度;在j依次取1至M的情况下,获取所述第i

1种群中每个语句集合的适应度。4.根据权利要求1所述的方法,其特征在于,所述第i种群中包括N个语句集合;所述对所述变异操作结果中的两个语句集合进行交叉互换,得到第i+1种群,包括:确定所述N个语句集合中的两个语句集合,对所述两个语句集合中语句类型相同的语句进行交叉互换,产生所述两个语句集合的两个子代;将所述两个语句集合中的至少一个和所述两个子代中的至少一个,加入所述第i+1种群中,得到所述第i+1种群中的N个语句集合。5.根据权利要求3所述的方法,其特征在于,所述确定至少一个适应度函数,包括以下任一项:根据语句集合中生成的语句条数和成功执行的语句条数,创建适应度函数;根据测试用例能否执行到测试断言前的状态分布,创建适应度函数;根据测试断言中断言语句的语句数以及每个断言语句的期望值和实际值的编辑距离,创建适应度函数;根据在模拟对象中所有方法调用的集合和在模拟对象中已经指定了行为的方法调用的集合,创建适应度函数;根据测试断言中已被满足的断言语句的语句数和测试断言中所有断言语句的语句数,创建适应度函数。
6.根据权利要求5所述的...

【专利技术属性】
技术研发人员:张成志朱恒成魏莉力盛勤宋丽红张兵
申请(专利权)人:香港科技大学
类型:发明
国别省市:

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

1