本技术涉及计算机,尤其涉及一种单元测试用例筛选方法、装置、设备、介质及程序产品。
背景技术:
1、单元测试是指对软件中的最小可测试单元进行检查和验证,用于在集成测试之前尽早地发现代码中隐藏的问题。单元测试用例的有效性与覆盖完善程度直接影响对待测系统的全面测试。
2、目前,通常采用单元测试用例自动化生成工具来自动生成单元测试用例,但通过上述方式自动生成的单元测试用例存在冗余的情况,因此,亟需一种对单元测试用例进行筛选的有效方案。
技术实现思路
1、本技术提供一种单元测试用例筛选方法、装置、设备、介质及程序产品,以准确有效地对单元测试用例进行筛选。
2、第一方面,本技术提供一种单元测试用例筛选方法,包括:
3、获取目标方法对应的目标用例分组,目标用例分组包括目标方法的待筛选单元测试用例,待筛选单元测试用例是基于单元测试用例生成规则以及在监控业务功能测试时采集到的测试数据生成的;
4、根据待筛选单元测试用例,确定候选单元测试用例,候选单元测试用例的参数值包括极值和/或枚举值;
5、对候选单元测试用例执行单元测试,并获得候选单元测试用例对应的第一代码覆盖率;
6、对待筛选单元测试用例执行单元测试,并获得待筛选单元测试用例对应的第二代码覆盖率;
7、基于第一代码覆盖率和第二代码覆盖率,从待筛选单元测试用例中确定目标方法对应的筛选后单元测试用例。
8、在一种可能的设计中,基于第一代码覆盖率和第二代码覆盖率,从待筛选单元测试用例中确定目标方法对应的筛选后单元测试用例,包括:若第一代码覆盖率和第二代码覆盖率相同,则从待筛选单元测试用例中确定目标方法对应的筛选后单元测试用例为候选单元测试用例;若第一代码覆盖率和第二代码覆盖率不相同,则基于预设分类算法,从待筛选单元测试用例中确定目标方法对应的筛选后单元测试用例。
9、在一种可能的设计中,基于预设分类算法,从待筛选单元测试用例中确定目标方法对应的筛选后单元测试用例,包括:将待筛选单元测试用例中的非候选单元测试用例进行分组,获得多个第一待测用例分组;针对多个第一待测用例分组中的每个第一待测用例分组,对候选单元测试用例和第一待测用例分组中的非候选单元测试用例执行单元测试,并获得第一待测用例分组对应的第三代码覆盖率;若第三代码覆盖率和第一代码覆盖率不相同,则将第一待测用例分组中的非候选单元测试用例加入包含候选单元测试用例的候选用例分组,确定筛选后单元测试用例为候选用例分组包含的单元测试用例;若第三代码覆盖率和第一代码覆盖率相同,则删除第一待测用例分组。
10、在一种可能的设计中,该单元测试用例筛选方法还包括:若第一待测用例分组中的非候选单元测试用例的数量大于数量阈值,则将第一待测用例分组中的非候选单元测试用例进行分组,获得多个第二待测用例分组;基于第二待测用例分组和候选单元测试用例,确定是否将第二待测用例分组中的非候选单元测试用例加入候选用例分组。
11、在一种可能的设计中,待筛选单元测试用例包括候选单元测试用例、待执行单元测试的单元测试用例以及其他单元测试用例;候选单元测试用例存储在候选工作区;待执行单元测试的单元测试用例存储在执行工作区;其他单元测试用例存储在待定工作区。
12、在一种可能的设计中,获取目标方法对应的目标用例分组之前,该单元测试用例筛选方法还包括:基于预设条件规则,对目标方法对应的目标测试数据进行预处理,得到预处理后的测试数据,预处理包括对目标测试数据进行排序处理和/或筛选处理;基于预处理后的测试数据和单元测试用例生成规则,生成目标方法的待筛选单元测试用例。
13、在一种可能的设计中,在监控业务功能测试时采集到的测试数据包括目标方法、目标方法所属的目标类型、目标方法的参数值、返回值和异常返回信息以及目标方法依赖的内部类型和内部类型对应的方法。
14、在一种可能的设计中,目标用例分组是基于目标方法所属的目标类型、目标方法的声明形式对测试数据进行分组获得的。
15、第二方面,本技术提供一种单元测试用例筛选装置,包括:
16、获取模块,用于获取目标方法对应的目标用例分组,目标用例分组包括目标方法的待筛选单元测试用例,待筛选单元测试用例是基于单元测试用例生成规则以及在监控业务功能测试时采集到的测试数据生成的;
17、第一确定模块,用于根据待筛选单元测试用例,确定候选单元测试用例,候选单元测试用例的参数值包括极值和/或枚举值;
18、第一处理模块,用于对候选单元测试用例执行单元测试,并获得候选单元测试用例对应的第一代码覆盖率;
19、第二处理模块,用于对待筛选单元测试用例执行单元测试,并获得待筛选单元测试用例对应的第二代码覆盖率;
20、第二确定模块,用于基于第一代码覆盖率和第二代码覆盖率,从待筛选单元测试用例中确定目标方法对应的筛选后单元测试用例。
21、在一种可能的设计中,第二确定模块具体用于:若第一代码覆盖率和第二代码覆盖率相同,则从待筛选单元测试用例中确定目标方法对应的筛选后单元测试用例为候选单元测试用例;若第一代码覆盖率和第二代码覆盖率不相同,则基于预设分类算法,从待筛选单元测试用例中确定目标方法对应的筛选后单元测试用例。
22、在一种可能的设计中,第二确定模块在用于基于预设分类算法,从待筛选单元测试用例中确定目标方法对应的筛选后单元测试用例时,具体用于:将待筛选单元测试用例中的非候选单元测试用例进行分组,获得多个第一待测用例分组;针对多个第一待测用例分组中的每个第一待测用例分组,对候选单元测试用例和第一待测用例分组中的非候选单元测试用例执行单元测试,并获得第一待测用例分组对应的第三代码覆盖率;若第三代码覆盖率和第一代码覆盖率不相同,则将第一待测用例分组中的非候选单元测试用例加入包含候选单元测试用例的候选用例分组,确定筛选后单元测试用例为候选用例分组包含的单元测试用例;若第三代码覆盖率和第一代码覆盖率相同,则删除第一待测用例分组。
23、在一种可能的设计中,第二确定模块还用于:若第一待测用例分组中的非候选单元测试用例的数量大于数量阈值,则将第一待测用例分组中的非候选单元测试用例进行分组,获得多个第二待测用例分组;基于第二待测用例分组和候选单元测试用例,确定是否将第二待测用例分组中的非候选单元测试用例加入候选用例分组。
24、在一种可能的设计中,待筛选单元测试用例包括候选单元测试用例、待执行单元测试的单元测试用例以及其他单元测试用例;候选单元测试用例存储在候选工作区;待执行单元测试的单元测试用例存储在执行工作区;其他单元测试用例存储在待定工作区。
25、在一种可能的设计中,获取模块还用于:获取目标方法对应的目标用例分组之前,基于预设条件规则,对目标方法对应的目标测试数据进行预处理,得到预处理后的测试数据,预处理包括对目标测试数据进行排序处理和/或筛选处理;基于预处理后的测试数据和单元测试用例生成规则,生成目标方法的待筛选单元测试用例。
26、在一种可能的设计中,在监控业务功能测试时采集到的测试数据包括目标方法、目标方法所属的目标类型、目标方法的参数值、返回值和异常返回信息以及目标方法依赖的内部类型和内部类型对应的方法。
27、在一种可能的设计中,目标用例分组是基于目标方法所属的目标类型、目标方法的声明形式对测试数据进行分组获得的。
28、第三方面,本技术提供一种电子设备,包括:至少一个处理器和存储器;所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上述第一方面以及第一方面各种可能的设计所述的单元测试用例筛选方法。
29、第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上述第一方面以及第一方面各种可能的设计所述的单元测试用例筛选方法。
30、第五方面,本技术实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的单元测试用例筛选方法。
31、本技术提供的单元测试用例筛选方法、装置、设备、介质及程序产品,通过获取目标方法对应的目标用例分组,目标用例分组包括目标方法的待筛选单元测试用例,待筛选单元测试用例是基于单元测试用例生成规则以及在监控业务功能测试时采集到的测试数据生成的;根据待筛选单元测试用例,确定候选单元测试用例,候选单元测试用例的参数值包括极值和/或枚举值;对候选单元测试用例执行单元测试,并获得候选单元测试用例对应的第一代码覆盖率;对待筛选单元测试用例执行单元测试,并获得待筛选单元测试用例对应的第二代码覆盖率;基于第一代码覆盖率和第二代码覆盖率,从待筛选单元测试用例中确定目标方法对应的筛选后单元测试用例。本技术中,引入了基于代码覆盖率的单元测试用例筛选机制,基于候选单元测试用例对应的第一代码覆盖率和待筛选单元测试用例对应的第二代码覆盖率,对待筛选单元测试用例进行筛选,从而确定筛选后单元测试用例,相较于基于设定的规则和特征的单元测试用例筛选机制,本技术能够更准确更有效地对单元测试用例进行筛选,在实现对被测代码达到最大覆盖率的前提下,能够有效减少单元测试用例的数量,从而提升单元测试整体的代码质量。