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

技术编号:36290563 阅读:7 留言:0更新日期:2023-01-13 10:03
本申请实施例公开了一种单元测试方法及装置、电子设备和存储介质,所述方法包括:确定当前语句群体,所述当前语句群体中包括至少两个语句集合,每一所述语句集合中包括至少一个语句子集,每一所述语句子集包括用于定义模拟对象的行为语句和所述行为语句的至少一条依赖语句;对所述当前语句群体进行迭代处理,得到下一语句群体;基于第一测试用例的断言部分和所述下一语句群体,确定目标语句集合,所述目标语句集合用于定义所述模拟对象;基于所述模拟对象对所述第一测试用例进行所述单元测试。试。试。

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


[0001]本申请实施例涉及但不限于软件测试
,尤其涉及一种单元测试方法及装置、电子设备和存储介质。

技术介绍

[0002]单元测试(Unit Testing),是指对软件中的最小可测试单元进行检查和验证。在单元测试中,由于测试用例中的部分代码模块存在依赖对象(例如,外部的类、接口等),而这些依赖对象难以获取或创建,此时需要创建适配的模拟对象(Mock Object)用于替代依赖对象进行该单元测试。
[0003]在相关技术中,用户可以根据实际场景需求,手动创建的Mock Object,并利用桩代码(Stub Code)来指定该Mock Object的行为,而这样人为设定的行为,使得该模拟对象及其行为只能适配于当前场景,而无法适配于其它场景,存在准确度低、适配度单一等问题。同时,在对Stub Code进行迭代更新的过程中,一方面,由于搜索空间过大,使得搜索效率低;另一方面,由于对个体质量的评估过于粗糙,存在个体准确度不高、且容易筛除较好的个体等问题。

技术实现思路

[0004]有鉴于此,本申请实施例提供一种单元测试方法及装置、电子设备、存储介质和计算机程序产品。
[0005]本申请实施例的技术方案是这样实现的:
[0006]第一方面,本申请实施例提供一种单元测试方法,所述方法包括:
[0007]确定当前语句群体,所述当前语句群体中包括至少两个语句集合,每一所述语句集合中包括至少一个语句子集,每一所述语句子集包括用于定义模拟对象的行为语句和所述行为语句的至少一条依赖语句;
[0008]对所述当前语句群体进行迭代处理,得到下一语句群体;
[0009]基于第一测试用例的断言部分和所述下一语句群体,确定目标语句集合,所述目标语句集合用于定义所述模拟对象;
[0010]基于所述模拟对象对所述第一测试用例进行所述单元测试。
[0011]第二方面,本申请实施例提供一种单元测试装置,所述装置包括:
[0012]第一确定模块,用于确定当前语句群体,所述当前语句群体中包括至少两个语句集合,每一所述语句集合中包括至少一个语句子集,每一所述语句子集包括用于定义模拟对象的行为语句和所述行为语句的至少一条依赖语句;
[0013]迭代模块,用于对所述当前语句群体进行迭代处理,得到下一语句群体;
[0014]第二确定模块,用于基于第一测试用例的断言部分和所述下一语句群体,确定目标语句集合,所述目标语句集合用于定义所述模拟对象;
[0015]测试模块,用于基于所述模拟对象对所述第一测试用例进行所述单元测试。
[0016]第三方面,本申请实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法中的步骤。
[0017]第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。
[0018]第五方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时实现上述方法。
[0019]在本申请实施例中,通过确定当前语句群体,所述当前语句群体中包括至少两个语句集合,每一所述语句集合中包括至少一个语句子集,每一所述语句子集包括用于定义模拟对象的行为语句和所述行为语句的至少一条依赖语句;对所述当前语句群体进行迭代处理,得到下一语句群体;基于第一测试用例的断言部分和所述下一语句群体,确定目标语句集合;基于所述模拟对象对所述第一测试用例进行所述单元测试。这样,首先,利用多个语句集合定义不同场景下的模拟对象的行为,可以提高模拟对象的适配性;其次,通过在语句子集中定义模拟对象的行为语句及其依赖语句,可以在迭代处理过程中,一并交换对应的行为语句及其依赖语句,从而可以降低产出不正确的个体的可能性,进而不仅可以减少计算开销,而且还可以提高搜索效率;然后,基于断言部分和下一语句群体得到模拟对象的目标语句集合,可以提高模拟对象的准确度和适用性;最后,使用模拟对象进行单元测试,而不必依赖于程序模块中的真实对象,实现了程序模块和依赖对象的分离,从而有助于提高软件测试效率。
附图说明
[0020]图1A为本申请实施例提供的一种单元测试方法的应用场景示意图;
[0021]图1B为本申请实施例提供的一种单元测试方法的实现流程示意图;
[0022]图2为本申请实施例提供的一种单元测试方法的实现流程示意图;
[0023]图3A为本申请实施例提供的一种单元测试系统的组成结构示意图;
[0024]图3B为本申请实施例提供的一种单元测试方法的实现流程示意图;
[0025]图3C为本申请实施例提供的一种生成下一语句群体的实现流程示意图;
[0026]图4为本申请实施例提供的一种单元测试装置的组成结构示意图;
[0027]图5为本申请实施例提供的一种电子设备的硬件实体示意图。
具体实施方式
[0028]为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
[0029]在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
[0030]如果申请文件中出现“第一/第二”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
[0031]除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的
的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
[0032]在相关技术中,用户可以根据实际场景需求,手动创建的Mock Object,并利用Stub Code来指定该Mock Object的行为,而这样人为设定的行为,使得该模拟对象及其行为只能适配于当前场景,而无法适配于其它场景,存在准确度低、适配度单一等问题。在对Stub Code进行迭代更新的过程中,首先,由于使用从零开始搜索Stub Code,存在搜索空间过大,使得搜索效率低;其次,由于对个体质量的适应度评估过于粗糙,存在个体准确度不高、且容易筛除较好的个体;最后,由于在交叉互换过程中,仅交换行为语句,容易产生大量不正确的后代,同时由于未考虑后代的正确性,从而大大增加了计算开销。
[0033]本申请实施例提本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种单元测试方法,其特征在于,所述方法包括:确定当前语句群体,所述当前语句群体中包括至少两个语句集合,每一所述语句集合中包括至少一个语句子集,每一所述语句子集包括用于定义模拟对象的行为语句和所述行为语句的至少一条依赖语句;对所述当前语句群体进行迭代处理,得到下一语句群体;其中,所述迭代处理包括对从第一语句集合中的至少一个语句子集中确定的第一语句子集和从第二语句集合中的至少一个语句子集中确定的第二语句子集进行交叉互换处理,所述第一语句集合和所述第二语句集合分别是从所述至少两个语句集合中确定的,所述下一语句群体中语句集合的数量与所述当前语句群体中语句集合的数量相同;基于第一测试用例的断言部分和所述下一语句群体,确定目标语句集合,所述目标语句集合用于定义所述模拟对象;基于所述模拟对象对所述第一测试用例进行所述单元测试。2.根据权利要求1所述的方法,其特征在于,所述对所述当前语句群体进行迭代处理,得到下一语句群体,包括:对所述当前语句群体中每一所述语句集合进行适应度评估处理,得到所述当前语句群体中每一所述语句集合的适应度;基于所述当前语句群体中每一所述语句集合的所述适应度,对所述当前语句群体进行所述迭代处理,得到所述下一语句群体。3.根据权利要求2所述的方法,其特征在于,所述下一语句群体中包括M个第三语句集合和N个第四语句集合,M和N为正整数;所述基于所述当前语句群体中每一所述语句集合的所述适应度,对所述当前语句群体进行所述迭代处理,得到所述下一语句群体,包括:将所述当前语句群体中每一所述语句集合的适应度满足预设条件的M个语句集合,分别作为所述下一语句群体中的一个所述第三语句集合;对所述当前语句群体进行N/2次的迭代处理,在每一次所述迭代处理的过程中,基于所述当前语句群体,得到所述下一语句群体中的两个所述第四语句集合。4.根据权利要求3所述的方法,其特征在于,所述基于所述当前语句群体,得到所述下一语句群体中的两个所述第四语句集合,包括:利用预设的选择算法,从所述当前语句群体中的至少一个语句集合中确定所述第一语句集合和所述第二语句集合;将所述第一语句集合中的第一语句子集与所述第二语句集合中的第二语句子集进行所述交叉互换处理,得到第五语句集合和第六语句集合;对所述第五语句集合进行变异处理,得到变异后的第五语句集合,并将所述变异后的第五语句集合作为一个所述第四语句集合;对所述第六语句集合进行变异处理,得到变异后的第六语句集合,并将所述变异后的第六语句集合作为另一个所述第四语句集合。5.根据权利要求4所述的方法,其特征在于,所述对所述第五语句集合进行变异处理,得到变异后的第五语句集合,包括:从所述第五语句集合中的至少一条语句中确定目标语句;
基于所述目标语句的类型,从至少一种变异方式中确定目标变异方式;利用所述目标变异方式对所述目标语句进行变异处理,得到变异后的目标语句;将所述第五语句集合中的目标语句替换为变异后的目标语句,以得到所述变异后的第五语句集合。6.根据权利要求5所述的方法,其特征在于,所述基于所述目标语句的类型,从至少一种变异方式中确定目标变异方式,包括以下至少之一:在所述目标语句的类型为包含变量的情况下,所述目标变异方式包括以下至少之一:从预设的符号库中随机选择一个值作为新的变量的值、从所述符号库中随机选择一个值替换所述变量的值、删除所述变量;其中,所述符号库中的每一个值是基于所述第一测试用例和被测对象生成的;在所述目标语句的类型为包含参数的情况下,所述目标变异方式包括:从所述第五语句集合中随机选择一个参数替换所述目标语句中的参数;在所述目标语句的类型为包含行为语句的情况下,所述目标变异方式包括以下至少之一:增加新的行为语句、删除所述行为语句、调换所述行为语句与所述第五语句集合中的另一行为语句的执行顺序。7.根据权利要求2所述的方法,其特征在于,所述对所述当前语句群体中每一所述语句集合进行所述适应度评估处理,得到所述当前语句群体中每一所述语句集合的适应度,包括:针对所述当前语句群体中的每一语句集合,基于所述语句集合,生成与所述语句集合对应的第二测试用例,所述第二测试用例中包括至少一个部分;针对每一第二测试用例,基于所述第二测试用例的每一部分对应的适应度函数,对对应部...

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

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

1