单元测试案例管理方法、装置及可读存储介质与流程

文档序号:30729759发布日期:2022-07-13 02:37阅读:92来源:国知局
单元测试案例管理方法、装置及可读存储介质与流程

1.本发明涉及软件测试技术领域,具体涉及一种单元测试案例管理方法、装置及可读存储介质。


背景技术:

2.单元测试中的“单元”通俗的说就是指一个实现简单功能的函数。单元测试就是用一组特定的输入(测试案例)测试函数是否功能正常,并且返回了正确的输出。现有技术中,存在许多生成单元测试案例的方法,但若对已生成的单元测试案例缺乏有效的管理,会影响业务软件的交付质量和交付效率。目前,对于已生成的单元测试案例的管理主要存在以下几个难点:1、案例有效性低。单元测试案例需要有明确的断言,而自动生成的单元测试案例,断言可能出现不准确,导致单元测试案例的有效性较低。
3.2、案例重复度高。单元测试案例的自动生成方法主要有数据构造和数据录制两种方法,案例对应的函数路径可能重复,大量的重复会导致案例数量呈指数级增长。
4.3、案例合并难。在多人对同个单元测试案例进行编码时,可能出现代码文本冲突,比如,对于案例a,有被改动了的两个不同的版本a1、a2,假设a1的第10行编码为c+2=d,而a2中的第10行编码为c-2=d,则a1和a2由于第10行的代码文本冲突在合并时会出现合并冲突,导致案例合并难。


技术实现要素:

5.本发明以提高对单元测试案例管理的有效性,以及提高软件交付质量和交付效率为目的,提供了一种单元测试案例管理方法、装置及可读存储介质。
6.为达此目的,本发明采用以下技术方案:提供一种单元测试案例管理方法,包括,:步骤s1,对于具有可变类型或数组类型的断言数据的单元测试案例,根据相对应的断言数据增强方法对不同版本的所述单元测试案例进行断言增强;步骤s2,根据预设的案例去重规则对断言增强后的各版本的所述单元测试案例进行去重;步骤s3,使用git merge代码文本合并技术检测去重后的不同版本间的所述单元测试案例的代码文本是否存在冲突,并获取存在冲突的版本列表,然后将在远端git上管理的各版本测试案例中的每个测试函数叠加到在本地git上管理的当前版本的所述单元测试案例中完成对各版本测试案例的合并。
7.作为优选,当所述断言数据为可变类型时,步骤s1中,对不同版本的所述单元测试案例进行断言增强的方法包括:步骤a1,判断当前版本的所述单元测试案例断言是否失败,若是,则转入步骤a2;
若否,则终止断言增强流程;步骤a2,将所述断言数据与规则库中的规则进行正则匹配,若匹配成功,则按照匹配到的规则对所述断言数据进行格式清除后转入步骤a3;若匹配失败,则终止断言增强流程;步骤a3,将格式清除后的所述断言数据更新到对应版本的所述单元测试案例中;步骤a4,运行完成数据更新后对应版本的所述单元测试案例,并判断是否断言成功,若是,则判定断言增强成功并记录断言增强成功信息;若否,则判定断言增强失败并记录断言增强失败信息。
8.作为优选,所述断言数据包括运行当前版本的所述单元测试案例后,所述测试函数的实际输出结果以及预期输出结果。
9.作为优选,步骤s2中,对不同版本的所述单元测试案例进行去重的方法具体包括:步骤c1,运行同个所述测试函数对应的所有版本的所述单元测试案例,以获取所运行的每个版本的的所述单元测试案例对应的代码路径;步骤c2,判断不同版本间的各所述单元测试案例的代码路径是否相同,若相同,则保留代码路径相同的各版本单元测试案例中的任意一个;若不相同,则保留所述单元测试案例的不同版本。
10.作为优选,步骤s3中,对各版本的所述单元测试案例进行合并的方法具体包括:步骤d1,获取在本地git上管理的以及在远端git上管理的各个版本的所述单元测试案例分别对应的测试函数名称,然后将在本地git上管理的所述单元测试案例的a1版本对应的各测试函数名称形成为第一数组,将在远端git上管理的所述单元测试案例的每个a2版本对应的各测试函数名称形成为第二数组;步骤d2,对每个所述第二数组与所述第一数组进行测试函数名称匹配,若匹配到不同的测试函数名称,则转入步骤d3;若未匹配到不同的测试函数名称,则过滤掉当前参与匹配的所述第二数组;步骤d3,获取从所述第二数组中匹配到的具有不同名称的测试函数对应的函数代码段;步骤d4,将获取到的所述函数代码段追加到在本地git上管理的所述a1版本的所述单元测试案例中。
11.本发明还提供了一种单元测试案例管理装置,可实现所述的单元测试案例管理方法,包括:断言增强模块,用于对于具有可变类型或数组类型的断言数据的单元测试案例,根据相对应的断言数据增强方法对不同版本的所述单元测试案例进行断言增强;案例去重模块,连接所述断言增强模块,用于根据预设的案例去重规则对断言增强后的各版本的单元测试案例进行去重;案例合并模块,连接所述案例去重模块,用于使用git merge代码文本合并技术检测去重后的不同版本间的单元测试案例的代码文本是否存在冲突,并获取存在冲突的版本列表,然后将在远端git上管理的各版本测试案例中的每个测试函数叠加到在本地git上管
理的当前版本的单元测试案例中完成对各版本测试案例的合并。
12.本发明还提供了一种存储有计算机可读指令的可读存储介质,当所述计算机可读指令被处理器执行时,所述处理器执行所述的单元测试案例管理方法。
13.本发明具有以下有益效果:1、对于不同类型的断言数据,采用相对应的方法进行断言增强,提高了单元测试案例的有效性;2、根据预设的案例去重规则对断言增强后的各版本的单元测试案例进行去重,降低了不同版本间的单元测试案例的重复度;3、通过git merge代码文件合并技术检测不同版本间的单元测试案例的代码文本是否存在冲突,并在获取到存在冲突的版本列表后,通过测试函数名称匹配方式进一步匹配出在远端git上管理的各版本的单元测试案例与在本地git上管理的当前版本的单元测试案例中的不同测试函数,然后将匹配到的在远端git上管理的测试函数对应的函数代码段追加到在本地git上管理的单元测试案例中,实现了对不同版本的单元测试案例的合并。
附图说明
14.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
15.图1是本发明一实施例提供的单元测试案例管理方法的实现步骤图;图2是断言数据为可变类型时,对不同版本的单元测试案例进行断言增强的方法实现步骤图;图3是对不同版本的单元测试案例进行去重的方法步骤图;图4是对各版本的单元测试案例进行合并的方法步骤图;图5是本发明一实施例提供的单元测试案例管理装置的结构示意图。
具体实施方式
16.下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。
17.其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本专利的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
18.本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若出现术语“上”、“下”、“左”、“右”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
19.在本发明的描述中,除非另有明确的规定和限定,若出现术语“连接”等指示部件
03-09”这一断言数据与规则库中有关日期的表达规则进行匹配,比如规则库中存在日期表达规则为“年月日以不间隔的数值表示”,则根据匹配到的该日期表达规则,将测试函数b输出的断言数据“2022-03-09”清除格式后表达为“20220309”。
24.步骤a3,将格式清除后的断言数据更新到对应版本的单元测试案例中;步骤a4,运行完成数据更新后的对应版本的单元测试案例,并判断是否断言成功,若是,则判定断言增强成功并记录断言增强成功信息;若否,则判定断言增强失败并记录断言增强失败信息。
25.对不同版本的单元测试案例进行断言增强后,如图1所示,本实施例提供的单元测试案例管理方法转入:步骤s2,根据预设的案例去重规则对断言增强后的各版本的单元测试案例进行去重,具体去重方法如图3所示,包括:步骤c1,运行同个测试函数对应的所有版本的单元测试案例,以获取所运行的每个版本的单元测试案例对应的代码路径;这里的运行指调用单元测试案例对函数进行测试,路径指一个单元测试案例运行后,对应函数内的代码路径,一个单元测试案例对应一个代码路径,比如一个测试函数b有10行代码,运行某个单元测试案例a后读取函数b中的第1、3、9行代码,则测试案例a对应的代码路径为函数b的第1、3、9行;步骤c2,判断不同版本间的各单元测试案例的代码路径是否相同,若相同,则保留代码路径相同的各版本单元测试案例中的任意一个;若不相同,则保留不同版本的单元测试案例。
26.不同版本的单元测试案例的代码路径相同或不相同的判断方式比如为,对于版本a1、a2,a1和a2的代码路径均为函数b的第1、3、9行,则判定版本a1、a2的代码路径相同,但若a2的代码路径为函数b的第2、3、9行,则判定版本a1、a2的代码路径不相同;对各版本的单元测试案例进行去重后,如图1所示,本实施例提供的单元测试案例管理方法转入:步骤s3,使用git merge代码文本合并技术检测去重后的不同版本间的单元测试案例的代码文本是否存在冲突(代码文本冲突检测方法比如为:对于单元测试案例a,有被改动后的两个不同版本a1、a2,假设a1的第10行代码为c+2=d,而a2中的第10行代码为c-2=d,则判定a1、a2之间存在代码文本冲突,即a1、a2合并时会出现冲突),并获取存在冲突的版本列表,然后将在远端git上管理的各版本测试案例中的每个测试函数叠加到在本地git上管理的当前版本的单元测试案例中完成对各版本测试案例的合并。
27.具体地,如图4所示,对各版本的单元测试案例进行合并的方法包括:步骤d1,获取在本地git(现有的代码版本管理工具)上管理的以及在远端git上管理的各个版本的单元测试案例分别对应的测试函数名称,比如在本地git上管理的单元测试案例的a1版本对应的测试函数名称有函数a、b、c,在远端git上管理的该单元测试案例的a2版本对应的测试函数名称有a、b、c、d,然后将在本地git上管理的a1版本对应的各测试函数名称形成为第一数组,将在远端git上管理的a2版本对应的各测试函数名称形成为第二数组;步骤d2,对每个第二数组与第一数组进行测试函数名称匹配,若匹配到不同的测试函数名称,则转入步骤d3,比如匹配到a2版本对应的第二数
组中存在a1版本对应的第一数组中不存在的测试函数名称d时转入步骤d3;若未匹配到不同的测试函数名称,则过滤掉当前参与匹配的第二数组,比如当a1版本和a2版本对应的测试函数名称都为a、b、c时,则将a2版本对应的第二数组过滤掉;步骤d3,获取从第二数组中匹配到的具有不同名称的测试函数对应的函数代码段;步骤d4,将获取到的函数代码段追加到在本地git上管理的a1版本的单元测试案例中。
28.综上,本发明通过断言数据增强、测试案例去重以及测试函数合并方式实现了在多人编码场景下对同个单元测试案例的不同版本的有效管理,有利于提升所开发的软件的交付质量和交付效率。
29.另外,本发明还提供了一种单元测试案例管理装置,可实现上述的单元测试案例管理方法,如图5所示,该装置包括:断言增强模块,用于对于具有可变类型或数组类型的断言数据的单元测试案例,根据相对应的断言数据增强方法对不同版本的单元测试案例进行断言增强;案例去重模块,连接所述断言增强模块,用于根据预设的案例去重规则对断言增强后的各版本的单元测试案例进行去重;案例合并模块,连接所述案例去重模块,用于使用git merge代码文本合并技术检测去重后的不同版本间的单元测试案例的代码文本是否存在冲突,并获取存在冲突的版本列表,然后将在远端git上管理的各版本测试案例中的每个测试函数叠加到在本地git上管理的当前版本的单元测试案例中完成对各版本测试案例的合并。
30.本发明还提供了一种存储有计算机可读指令的可读存储介质,当计算机可读指令被处理器执行时,处理器执行上述的单元测试案例管理方法。
31.需要声明的是,上述具体实施方式仅仅为本发明的较佳实施例及所运用技术原理。本领域技术人员应该明白,还可以对本发明做各种修改、等同替换、变化等等。但是,这些变换只要未背离本发明的精神,都应在本发明的保护范围之内。另外,本技术说明书和权利要求书所使用的一些术语并不是限制,仅仅是为了便于描述。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1