【技术实现步骤摘要】
单元测试方法及装置、电子设备和存储介质
[0001]本申请实施例涉及但不限于软件测试
,尤其涉及一种单元测试方法及装置、电子设备和存储介质。
技术介绍
[0002]单元测试(Unit Testing),是指对软件中的最小可测试单元进行检查和验证。在单元测试中,由于测试用例中的部分代码模块存在依赖对象(例如,外部的类、接口等),而这些依赖对象难以获取或创建,此时需要创建适配的模拟对象(Mock Object)用于替代依赖对象进行该单元测试。
[0003]在相关技术中,用户可以根据实际场景需求,手动创建的Mock Object,并利用桩代码(Stub Code)来指定该Mock Object的行为,而这样人为设定的行为,使得该模拟对象及其行为只能适配于当前场景,而无法适配于其它场景,存在准确度低、适配度单一等问题。同时,在对Stub Code进行迭代更新的过程中,一方面,由于搜索空间过大,使得搜索效率低;另一方面,由于对个体质量的评估过于粗糙,存在个体准确度不高、且容易筛除较好的个体等问题。
技术实现思路
[0004]有鉴于此,本申请实施例提供一种单元测试方法及装置、电子设备、存储介质和计算机程序产品。
[0005]本申请实施例的技术方案是这样实现的:
[0006]第一方面,本申请实施例提供一种单元测试方法,所述方法包括:
[0007]确定当前语句群体,所述当前语句群体中包括至少两个语句集合,每一所述语句集合中包括至少一个语句子集,每一所述语句子集包括用于定义模拟对象 ...
【技术保护点】
【技术特征摘要】
1.一种单元测试方法,其特征在于,所述方法包括:确定当前语句群体,所述当前语句群体中包括至少两个语句集合,每一所述语句集合中包括至少一个语句子集,每一所述语句子集包括用于定义模拟对象的行为语句和所述行为语句的至少一条依赖语句;对所述当前语句群体进行迭代处理,得到下一语句群体;其中,所述迭代处理包括对从第一语句集合中的至少一个语句子集中确定的第一语句子集和从第二语句集合中的至少一个语句子集中确定的第二语句子集进行交叉互换处理,所述第一语句集合和所述第二语句集合分别是从所述至少两个语句集合中确定的,所述下一语句群体中语句集合的数量与所述当前语句群体中语句集合的数量相同;基于第一测试用例的断言部分和所述下一语句群体,确定目标语句集合,所述目标语句集合用于定义所述模拟对象;基于所述模拟对象对所述第一测试用例进行所述单元测试。2.根据权利要求1所述的方法,其特征在于,所述对所述当前语句群体进行迭代处理,得到下一语句群体,包括:对所述当前语句群体中每一所述语句集合进行适应度评估处理,得到所述当前语句群体中每一所述语句集合的适应度;基于所述当前语句群体中每一所述语句集合的所述适应度,对所述当前语句群体进行所述迭代处理,得到所述下一语句群体。3.根据权利要求2所述的方法,其特征在于,所述下一语句群体中包括M个第三语句集合和N个第四语句集合,M和N为正整数;所述基于所述当前语句群体中每一所述语句集合的所述适应度,对所述当前语句群体进行所述迭代处理,得到所述下一语句群体,包括:将所述当前语句群体中每一所述语句集合的适应度满足预设条件的M个语句集合,分别作为所述下一语句群体中的一个所述第三语句集合;对所述当前语句群体进行N/2次的迭代处理,在每一次所述迭代处理的过程中,基于所述当前语句群体,得到所述下一语句群体中的两个所述第四语句集合。4.根据权利要求3所述的方法,其特征在于,所述基于所述当前语句群体,得到所述下一语句群体中的两个所述第四语句集合,包括:利用预设的选择算法,从所述当前语句群体中的至少一个语句集合中确定所述第一语句集合和所述第二语句集合;将所述第一语句集合中的第一语句子集与所述第二语句集合中的第二语句子集进行所述交叉互换处理,得到第五语句集合和第六语句集合;对所述第五语句集合进行变异处理,得到变异后的第五语句集合,并将所述变异后的第五语句集合作为一个所述第四语句集合;对所述第六语句集合进行变异处理,得到变异后的第六语句集合,并将所述变异后的第六语句集合作为另一个所述第四语句集合。5.根据权利要求4所述的方法,其特征在于,所述对所述第五语句集合进行变异处理,得到变异后的第五语句集合,包括:从所述第五语句集合中的至少一条语句中确定目标语句;
基于所述目标语句的类型,从至少一种变异方式中确定目标变异方式;利用所述目标变异方式对所述目标语句进行变异处理,得到变异后的目标语句;将所述第五语句集合中的目标语句替换为变异后的目标语句,以得到所述变异后的第五语句集合。6.根据权利要求5所述的方法,其特征在于,所述基于所述目标语句的类型,从至少一种变异方式中确定目标变异方式,包括以下至少之一:在所述目标语句的类型为包含变量的情况下,所述目标变异方式包括以下至少之一:从预设的符号库中随机选择一个值作为新的变量的值、从所述符号库中随机选择一个值替换所述变量的值、删除所述变量;其中,所述符号库中的每一个值是基于所述第一测试用例和被测对象生成的;在所述目标语句的类型为包含参数的情况下,所述目标变异方式包括:从所述第五语句集合中随机选择一个参数替换所述目标语句中的参数;在所述目标语句的类型为包含行为语句的情况下,所述目标变异方式包括以下至少之一:增加新的行为语句、删除所述行为语句、调换所述行为语句与所述第五语句集合中的另一行为语句的执行顺序。7.根据权利要求2所述的方法,其特征在于,所述对所述当前语句群体中每一所述语句集合进行所述适应度评估处理,得到所述当前语句群体中每一所述语句集合的适应度,包括:针对所述当前语句群体中的每一语句集合,基于所述语句集合,生成与所述语句集合对应的第二测试用例,所述第二测试用例中包括至少一个部分;针对每一第二测试用例,基于所述第二测试用例的每一部分对应的适应度函数,对对应部...
【专利技术属性】
技术研发人员:张成志,魏莉力,朱恒成,盛勤,张兵,宋丽红,
申请(专利权)人:香港科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。