测试用例的筛选方法、装置、电子设备及存储介质与流程

文档序号:27692885发布日期:2021-12-01 04:04阅读:125来源:国知局
测试用例的筛选方法、装置、电子设备及存储介质与流程

1.本发明涉及软件测试领域,尤其涉及一种测试用例的筛选方法、装置、电子设备及存储介质。


背景技术:

2.软件测试是软件项目流程的必要阶段,只有通过软件测试的软件才能进行上线发行。其中,自动化测试是一种常见的软件测试手段。
3.现有的自动化测试需要测试人员手动维护自动化测试用例,但是,随着自动化测试用例的数量越来越多,测试人员的自动化测试维护工作量加大,维护成本越来越高。


技术实现要素:

4.本发明提供了一种测试用例的筛选方法、装置、电子设备及存储介质,以解决手动维护自动化测试用例工作量大、成本高的技术问题。
5.第一方面,本发明提供了一种测试用例的筛选方法,包括:逐个执行测试用例,并获取各个已执行的测试用例对应的代码覆盖数据;将当前已执行的测试用例对应的代码覆盖数据和前一个已执行的测试用例对应的代码覆盖数据进行对比,获得对比结果;根据所述对比结果对所述当前已执行的测试用例进行筛选处理。
6.作为可选的实施例,所述根据所述对比结果对所述当前已执行的测试用例进行筛选处理,包括:若所述对比结果为当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据没有变化,则删除所述当前已执行的测试用例;若所述对比结果为当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据提升,则保留所述当前已执行的测试用例。
7.作为可选的实施例,所述逐个执行测试用例包括:将多个测试用例读取到内存中,并将每个测试用例存储为一行记录;逐行执行所述记录。
8.作为可选的实施例,所述获取各个已执行的测试用例对应的代码覆盖数据,包括:每执行完一个测试用例,通过开源的代码覆盖数据计算工具获取对应的代码覆盖数据。
9.作为可选的实施例,所述方法还包括:接收查询请求,并根据所述查询请求异步展示已执行的测试用例对应的代码覆盖数据。
10.第二方面,本发明提供一种测试用例的筛选装置,包括调度模块、测试模块以及代码覆盖数据获取模块;其中,所述调度模块用于控制所述测试模块逐个执行测试用例,并通过所述代码覆盖数据获取模块获取各个已执行的测试用例对应的代码覆盖数据;所述调度模块还用于将将当前已执行的测试用例对应的代码覆盖数据和前一个已执行的测试用例对应的代码覆盖数据进行对比,获得对比结果;并根据所述对比结果对所述当前已执行的测试用例进行筛选处理。
11.作为可选的实施例,所述调度模块,具体用于:若所述对比结果为当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据没有变
化,则删除所述当前已执行的测试用例;若所述对比结果为当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据提升,则保留所述当前已执行的测试用例。
12.作为可选的实施例,所述装置还包括监测模块;所述调度模块,具体用于:接收查询请求,并根据所述查询请求将已执行的测试用例对应的代码覆盖数据通过所述监测模块进行异步展示。
13.第三方面,本发明提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现第一方面任一项所述的测试用例的筛选方法的步骤。
14.第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如第一方面任一项所述的测试用例的筛选方法的步骤。
15.本发明实施例提供的测试用例的筛选方法、装置、电子设备及存储介质,通过逐个执行测试用例,并获取各个已执行的测试用例对应的代码覆盖数据;将当前已执行的测试用例对应的代码覆盖数据和前一个已执行的测试用例对应的代码覆盖数据进行对比,获得对比结果;根据所述对比结果对所述当前已执行的测试用例进行筛选处理;即本发明实施例中,通过对全部测试用例逐个执行,并根据获取的各个已执行的测试用例对应的代码覆盖数据的变化情况,筛选出有效的测试用例,减少了测试人员手动维护测试用例的工作量,降低了维护成本。
附图说明
16.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
17.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
18.图1为本发明实施例提供的一种测试用例的筛选方法的流程示意图;
19.图2为本发明实施例提供的另一种测试用例的筛选方法的流程示意图;
20.图3为本发明实施例提供的一种测试用例的筛选方法的流程框图;
21.图4为本发明实施例提供的一种测试用例的筛选装置的结构示意图;
22.图5为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
23.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
24.软件测试是软件项目流程的必要阶段,只有通过软件测试的软件才能进行上线发
行。其中,自动化测试是一种常见的软件测试手段。
25.现有的自动化测试需要测试人员手动维护自动化测试用例,其中,手动维护包括需要测试人员根据待测试软件手动留存有效的测试用例,并操作测试用例对软件进行测试。但是,随着自动化测试用例的数量越来越多,测试人员的自动化测试维护工作量加大,维护成本越来越高。
26.针对上述技术问题,本发明的技术构思在于:提供一种测试用例的筛选方法,即在测试人员维护自动化测试用例之前,先对全部测试用例逐个执行,然后根据各个测试用例对应的代码覆盖数据的变化情况筛查一遍自动化测试用例,从而降低自动化测试用例的数量和难度,降低维护成本。
27.图1为本发明实施例提供的一种测试用例的筛选方法的流程示意图,本发明实施例的执行主体为部署有测试用例的筛选装置的电子设备。如图1所示,该测试用例的筛选方法包括:
28.步骤s101、逐个执行测试用例,并获取各个已执行的测试用例对应的代码覆盖数据。
29.本实施例中,针对每个待测试软件,在初始时会收集海量的自动化测试用例。本步骤中,会将这些海量的测试用例逐个全部执行,并在执行完每个测试用例时,会触发代码覆盖数据的计算,从而获取到各个测试用例对应的代码覆盖数据。可选的,代码覆盖数据为代码覆盖率,代码覆盖率是软件测试中的一种度量,描述待测试软件对应的程序源代码被测试的比例和程度。
30.作为可选的实施例,步骤s101中的所述逐个执行测试用例包括:将多个测试用例读取到内存中,并将每个测试用例存储为一行记录;逐行执行所述记录。
31.具体来说,首先将海量的测试用例读取到内存中,每一个测试用例对应一行记录,然后逐行执行记录,即逐个执行测试用例。可选的,每一行记录标记有对应的序号。
32.作为可选的实施例,步骤s101中的所述获取各个已执行的测试用例对应的代码覆盖数据,包括:每执行完一个测试用例,通过开源的代码覆盖数据计算工具获取对应的代码覆盖数据。
33.具体来说,开源的代码覆盖数据计算工具,例如jacoco dump,其中,jacoco是统计代码覆盖率的一种方式,也是jacoco内部支持的一个命令行命令。本实施例中,每执行完一个测试用例,就会通过jacoco dump的方式把程序源代码当前的代码覆盖率统计出来,作为当前已执行的测试用例对应的代码覆盖数据。
34.步骤s102、将当前已执行的测试用例对应的代码覆盖数据和前一个已执行的测试用例对应的代码覆盖数据进行对比,获得对比结果。
35.步骤s103、根据所述对比结果对所述当前已执行的测试用例进行筛选处理。
36.本实施例中,根据当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据的变化情况,确定对当前已执行的测试用例是进行删除还是保留操作。依次类推,从而实现了对所有的测试用例进行了一次筛选处理,降低了后续测试人员的自动化测试维护工作量。
37.作为可选的实施例,所述方法还包括:接收查询请求,并根据所述查询请求异步展示所述已执行的测试用例对应的代码覆盖数据。
38.具体来说,可以异步查询各个已执行的测试用例对应的代码覆盖数据,并将查询到的代码覆盖数据展示在前端设备上。
39.本发明实施例提供的测试用例的筛选方法,通过逐个执行测试用例,并获取各个已执行的测试用例对应的代码覆盖数据;将当前已执行的测试用例对应的代码覆盖数据和前一个已执行的测试用例对应的代码覆盖数据进行对比,获得对比结果;根据所述对比结果对所述当前已执行的测试用例进行筛选处理;即本发明实施例中,通过对全部测试用例逐个执行,并根据获取的各个已执行的测试用例对应的代码覆盖数据的变化情况,筛选出有效的测试用例,减少了测试人员手动维护测试用例的工作量,降低了维护成本。
40.在上述实施例的基础上,图2为本发明实施例提供的另一种测试用例的筛选方法的流程示意图,如图2所示,该测试用例的筛选方法包括:
41.步骤s201、逐个执行测试用例,并获取各个已执行的测试用例对应的代码覆盖数据。
42.步骤s202、将当前已执行的测试用例对应的代码覆盖数据和前一个已执行的测试用例对应的代码覆盖数据进行对比,获得对比结果。
43.若所述对比结果为当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据没有变化,则执行步骤s203;若所述对比结果为当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据提升,则执行步骤s204。
44.步骤s203、删除所述当前已执行的测试用例。
45.步骤s204、保留所述当前已执行的测试用例。
46.本实施例中的步骤s201、步骤s202的实现方式分别与上述实施例中的步骤s101、步骤s102的实现方式类似,此处不再赘述。
47.与上述实施例的区别在于,本实施例进一步限定了测试用例的具体筛选方式,在本实施例中,若所述对比结果为当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据没有变化,则删除所述当前已执行的测试用例;若所述对比结果为当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据提升,则保留所述当前已执行的测试用例。
48.具体来说,若当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据没有变化,说明当前已执行的测试用例没有对待测试软件进行测试,是无效的测试用例,直接删除即可;若当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数有所提升,说明当前已执行的测试用例可以对待测试软件进行测试,是有效的测试用例,需要进行保留。从而实现了将初始的海量自动化测试用例筛选出一个新的自动化测试用例集合,后续测试人员只需维护这个新的自动化测试用例集合即可。
49.本发明的实施例提供的测试用例的筛选方法,若所述对比结果为当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据没有变化,则删除所述当前已执行的测试用例;若所述对比结果为当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据提升,则保留所述当前已执行的测试用例;即本发明实施例根据各测试用例在执行过程中的代码覆盖数据的变化
情况,筛选出筛选有效自动化用例,最终生成新的参数文件。这样就可以降低测试人员自动化用例维护的工作量。
50.为了更进一步了解本发明的实施例,图3为本发明实施例提供的一种测试用例的筛选方法的流程框图,如图3所示,执行该筛选方法的电子设备包括调度模块、测试模块(也可称为自动化测试模块)、代码覆盖数据获取模块以及监测模块。该测试用例的筛选方法包括:
51.步骤s00、调度模块预处理初始参数文件。
52.步骤s01、调度模块控制自动化测试模块执行一行测试用例。
53.步骤s02、调度模块触发代码覆盖数据获取模块去计算当前已执行的测试用例对应的代码覆盖数据。
54.若当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据没有变化,则执行步骤s05;若当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据提升,则执行步骤s06。
55.步骤s05、删除所述当前已执行的测试用例。
56.步骤s06、保留所述当前已执行的测试用例。
57.本实施例中,调度模块首先预处理初始参数文件,预处理是指将海量的自动化测试用例读取到内存中,并将每个测试用例存储为一行,标记序号;然后调度模块控制自动化测试模块执行一行测试用例,并在执行完毕后,触发代码覆盖数据获取模块,去计算当前待测试软件的程序源代码被测试的程度,即代码覆盖率,作为当前已执行测试用例对应的代码覆盖数据;然后将当前执行的测试用例对应的代码覆盖数据与前一个测试用例对应的代码覆盖数据进行对比,若代码覆盖数据没有变化,则删除当前执行的测试用例,若代码覆盖数据有所提升,则保留该测试用例,生成一个新参数文件,后期测试人员只需维护新参数文件中所存储的自动化测试用例即可。
58.另外,本实施例中还包括:步骤s03、查询已执行的测试用例对应的代码覆盖率;步骤s04、通过监测模块展示已执行的测试用例对应的代码覆盖数据。即调度模块会接收用户的查询请求,并根据查询请求从代码覆盖数据获取模块中查询到对应的代码覆盖数据,并展示在监测模块的前端页面上。
59.综上,本发明实施例通过各个已执行的测试用例对应的代码覆盖数据的变化情况,筛选出有效的测试用例,减少了测试人员手动维护测试用例的工作量,降低了维护成本。
60.图4为本发明实施例提供的一种测试用例的筛选装置的结构示意图。如图4所示,该测试用例的筛选装置,包括调度模块10、测试模块20以及代码覆盖数据获取模块30;
61.其中,所述调度模块10用于控制所述测试模块20逐个执行测试用例,并通过所述代码覆盖数据获取模块30获取各个已执行的测试用例对应的代码覆盖数据;所述调度模块10还用于将将当前已执行的测试用例对应的代码覆盖数据和前一个已执行的测试用例对应的代码覆盖数据进行对比,获得对比结果;并根据所述对比结果对所述当前已执行的测试用例进行筛选处理。
62.作为本发明的可选实施例,所述调度模块10,具体用于:若所述对比结果为当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数
据没有变化,则删除所述当前已执行的测试用例;若所述对比结果为当前已执行的测试用例对应的代码覆盖数据相对于前一个已执行的测试用例对应的代码覆盖数据提升,则保留所述当前已执行的测试用例。
63.作为本发明的可选实施例,所述调度模块10,具体用于:将多个测试用例读取到内存中,并将每个测试用例存储为一行记录;控制所述测试模块20逐行执行所述记录。
64.作为本发明的可选实施例,所述代码覆盖数据获取模块30,具体用于:每执行完一个测试用例,通过开源的代码覆盖数据计算工具获取对应的代码覆盖数据。
65.作为本发明的可选实施例,所述装置还包括监测模块40,所述调度模块10,具体用于:接收查询请求,并根据所述查询请求将已执行的测试用例对应的代码覆盖数据通过所述监测模块40进行异步展示。
66.本实施例提供的测试用例的筛选装置,其实现原理和技术效果与上述实施例类似,此处不再赘述。
67.本发明实施例提供的测试用例的筛选装置,包括调度模块、测试模块、代码覆盖数据获取模块;其中,所述调度模块用于控制所述测试模块逐个执行测试用例,并通过所述代码覆盖数据获取模块获取各个已执行的测试用例对应的代码覆盖数据;所述调度模块还用于将将当前已执行的测试用例对应的代码覆盖数据和前一个已执行的测试用例对应的代码覆盖数据进行对比,获得对比结果;并根据所述对比结果对所述当前已执行的测试用例进行筛选处理;即本发明实施例中,通过对全部测试用例逐个执行,并根据获取的各个已执行的测试用例对应的代码覆盖数据的变化情况,筛选出有效的测试用例,减少了测试人员手动维护测试用例的工作量,降低了维护成本。
68.如图5所示,本发明实施例提供了一种电子设备,包括处理器111、通信接口112、存储器113和通信总线114,其中,处理器111,通信接口112,存储器113通过通信总线114完成相互间的通信,
69.存储器113,用于存放计算机程序;
70.在本发明一个实施例中,处理器111,用于执行存储器113上所存放的程序时,实现前述任意一个方法实施例提供的测试用例的筛选方法的步骤。
71.本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述任意一个方法实施例提供的测试案例的生成方法的步骤。
72.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
73.以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明
将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1