一种基于测试用例库的测试方法、装置及电子设备与流程

未命名 10-08 阅读:72 评论:0


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.键值对插入模块,用于将所述目标共享键值对插入所述共享测试数据集合;
32.级别确定模块,用于基于所述目标测试用例,在所述测试用例注册信息中,确定所述目标测试数据的适用级别;
33.生存期设置模块,用于基于所述目标测试数据的适用级别,对所述目标共享键值对设置生存期;所述目标共享键值对的生存期为与所述目标测试数据属于同一适用级别的测试用例的执行期间。
34.在一个示例性的实施方式中,所述调用执行模块或所述用例执行模块,包括:
35.函数确定模块,用于对于每个目标测试用例,确定所述目标测试用例的主函数,得到多个目标函数;
36.第一函数运行模块,用于按照预设数量创建线程,对于每个线程,在所述多个目标函数中随机确定所述线程对应的目标函数,基于所述线程运行相应的目标函数,在所述线程运行结束时,将所述线程确定为空闲线程;
37.第二函数运行模块,用于在运行目标函数的数量小于所述多个目标函数的数量时,对于每个空闲线程,在剩余目标函数中随机确定所述空闲线程对应的目标函数,将所述空闲线程确定为占用线程,基于所述占用线程运行相应的目标函数,在所述占用线程运行结束时,将所述占用线程确定为空闲线程,直至所述运行目标函数的数量等于所述多个目标函数的数量时,结束所述随机确定;所述运行目标函数为所述多个目标函数中被运行过的函数;所述剩余目标函数为所述多个目标函数中未被运行的函数;
38.报告生成模块,用于基于每个目标测试用例对应的目标函数的运行结果,生成测试报告。
39.在一个示例性的实施方式中,所述装置还包括用于基于测试用例的属性构建测试用例库的用例库构建模块,所述用例库构建模块,包括:
40.用例获取模块,用于获取多个测试用例;
41.信息确定模块,用于对于每个测试用例,标注属性信息,确定所述测试用例的函数入口地址;
42.对象封装模块,用于将所述测试用例的函数入口地址和所述测试用例对应的属性信息封装成对象,得到所述多个测试用例对象;
43.用例库生成模块,用于基于所述多个测试用例对象,生成所述测试用例库。
44.另一方面,提供了一种电子设备,包括处理器和存储器,所述存储器中存储有至少
一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由所述处理器加载并执行以实现上述任一方面的基于测试用例库的测试方法。
45.另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程序由处理器加载并执行以实现如上述任一方面的基于测试用例库的测试方法。
46.另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述任一方面的基于测试用例库的测试方法。
47.本技术实施例通过预先构建包含用例属性的测试用例库,基于用户配置的任务描述文件筛选属性信息相匹配的测试用例,从而精确筛选出所需颗粒度的测试用例,在自动化执行测试用例时精准高效地针对特定范围用例进行测试,大大降低无效测试所浪费的成本,从而提高生产效率;每个用例在执行时,根据所需测试数据的标识在共享测试数据集合中查找取用,节省重复构造数据所造成的时间、空间开销。
附图说明
48.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
49.图1是本技术实施例提供的一种基于测试用例库的测试方法的流程示意图;
50.图2是本技术实施例提供的一种筛选测试用例的流程示意图;
51.图3是本技术实施例提供的一种按照不同测试维度筛选测试用例的流程示意图;
52.图4是本技术实施例提供的一种将复用测试数据保存在共享测试数据集合的流程示意图;
53.图5是本技术实施例提供的一种多线程执行测试用例的流程示意图;
54.图6是本技术实施例提供的一种构建测试用例库的流程示意图;
55.图7是本技术实施例提供的一种基于测试用例库的测试装置的结构框图;
56.图8是本技术实施例提供的一种电子设备的硬件结构框图。
具体实施方式
57.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
58.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆
盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
59.可以理解的是,在本技术的具体实施方式中,涉及到用户信息等相关的数据,当本技术以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
60.请参阅图1,其所示为本技术实施例提供的一种基于测试用例库的测试方法的流程示意图。需要说明的是,本说明书提供了如实施例或流程图所示方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图1所示,该方法可以包括:
61.s101,获取测试任务描述文件和测试用例注册信息。
62.其中,测试任务描述文件用于描述目标测试任务对应测试用例的属性。
63.具体的,测试任务描述文件描述目标测试任务的待执行用例应具备的属性,例如:用例编号“tc_001|tc_002”、用例名称“tc_n001|tc_n002”、用例模块“tc_module_a”、用例子模块“tc_sub_module_a”、用例级别“2”、用例特性“performance|stability”等。
64.其中,目标测试任务为测试任务描述文件对应的测试任务,由任务配置、日志配置、测试报告配置等多方面配置信息构成,例如:任务名称“xxxx模块xxxx特性测试”、产品名称“c01”、产品版本号“b001”、模块名称“ad”、子模块名称“life_cycle”、线程数“10”、日志级别“debug”、日志输出路径“/output/logs/”、日志输出设备“dev_file”、测试报告路径“/output/reports/”等。
65.其中,测试用例注册信息包括每个测试用例对应的测试数据信息,测试数据信息包括测试数据标识和测试数据参数。
66.其中,测试数据标识为能够指示具体测试数据的唯一标识。
67.其中,测试数据参数为构造测试数据所必需的参数。具体实施中,通过构造函数来构造测试数据,而测试数据参数就是构造函数的输入值。
68.s103,基于测试任务描述文件和测试用例库,确定多个目标测试用例。
69.其中,测试用例库包含多个测试用例对象。
70.其中,测试用例对象保存测试用例的函数入口地址和测试用例对应的属性信息。
71.其中,每个目标测试用例对应的属性信息与测试任务描述文件相匹配。
72.其中,测试用例的函数入口地址为执行该测试用例时执行的第一条指令的地址。
73.其中,测试用例对应的属性信息为构建测试用例库时对每条测试用例标注的属性信息。例如,对测试用例tc_001标注以下属性信息:用例编号“tc_001”、用例名称“tc_n001”、用例模块“tc_module_a”、用例子模块“tc_sub_module_a”、用例级别“2”、用例特性“performance|stability”。
74.具体实施中,遍历测试用例库中的测试用例对象,匹配测试用例对象中保存的测试用例的属性信息与测试任务描述文件中的属性信息,将匹配成功的测试用例对象中保存的函数入口地址所指示的测试用例,即目标测试用例插入任务链表,得到一个目标测试任
务的待执行用例链表。具体的,若测试任务描述文件包括以下内容:用例级别“2”、用例特性“performance|stability”,则目标测试用例对应的属性信息至少包括以上两个属性,例如,上述测试用例tc_001。
75.在一个示例性的实施方式中,如图2所示,上述步骤s103可以包括:
76.s201,基于测试任务描述文件,在测试用例库中确定多个目标测试用例对象。
77.其中,每个目标测试用例对象中的属性信息与测试任务描述文件相匹配。
78.具体实施中,遍历测试用例库中的测试用例对象,匹配测试用例对象中保存的测试用例的属性信息与测试任务描述文件中的属性信息,将匹配成功的测试用例对象中保存的函数入口地址所指示的测试用例,即目标测试用例插入任务链表,得到一个目标测试任务的待执行用例链表。具体的,若测试任务描述文件包括以下内容:用例级别“2”、用例特性“performance|stability”,则目标测试用例对应的属性信息至少包括以上两个属性,例如,测试用例库中的测试用例对象object_001具备以下属性信息:用例编号“tc_001”、用例名称“tc_n001”、用例模块“tc_module_a”、用例子模块“tc_sub_module_a”、用例级别“2”、用例特性“performance|stability”。测试用例对象object_001与任务描述文件匹配成功,将测试用例对象object_001对象中保存的函数入口地址所指示的测试用例用例tc_001作为目标测试用例,插入任务链表。
79.在一个示例性的实施方式中,如图3所示,上述步骤s201可以包括:
80.s301,提取测试任务描述文件的内容,得到多条目标属性信息。
81.其中,目标属性信息为的目标测试任务的待执行用例应具备的属性。具体实施中,将测试任务描述文件中的关于测试用例属性的描述逐条提取。
82.s303,获取输入的至少一个测试维度。
83.其中,每个测试维度表征目标测试任务对应测试用例的属性所属的维度。例如,属性用例编号“tc_001|tc_002”所属的测试维度为用例编号,属性用例特性“performance|stability”所属的测试维度为用例特性,等等。
84.具体实施中,测试维度由测试人员定义,测试人员可以按照不同的测试维度对测试用例库中的测试用例对象进行筛选,例如,每次版本发布前针对本次发布的新特性涉及的用例进行筛选,也可设置仅筛选性能和可靠性用例,也可以针对特定名称的用例进行筛选,等等。
85.s305,对于每条目标属性信息,确定目标属性信息与至少一个测试维度的相关度,得到每条目标属性信息对应的相关度。
86.其中,每条目标属性信息与至少一个测试维度的相关度,为目标属性信息所属维度与至少一个测试维度的重合度。例如,测试人员定义的测试维度为用例级别和用例特性,多条目标属性信息包括

用例编号“tc_001|tc_002”、

用例名称“tc_n001|tc_n002”、

用例模块“tc_module_a”、

用例子模块“tc_sub_module_a”、

用例级别“2”、

用例特性“performance|stability”,那么目标属性信息

对应的相关度和目标属性信息

对应的相关度均为50%,其他目标属性信息对应的相关度为0%。
87.s307,对于每条目标属性信息,在目标属性信息对应的相关度满足预设相关度条件时,将目标属性信息确定为测试用例筛选信息,得到测试用例筛选条件集。
88.其中,预设相关度条件为测试用例筛选信息与测试人员定义的测试维度的相关度
要求。具体的,预设相关度条件可以设定为目标属性信息对应的相关度的排名要求,也可以设定为目标属性信息对应的相关度值要求。
89.其中,测试用例筛选信息为多条目标属性信息中满足预设相关度条件的信息。具体实施中,若预设相关度条件为目标属性信息与测试维度的相关度大于30%,目标属性信息

对应的相关度和目标属性信息

对应的相关度均为50%,大于30%,则测试用例筛选信息为目标属性信息

用例级别“2”和目标属性信息

用例特性“performance|stability”。
90.其中,测试用例筛选条件集为测试用例筛选信息构成的集合。例如,测试用例筛选信息为用例级别“2”和用例特性“performance|stability”,测试用例筛选条件集为{用例级别“2”,用例特性“performance|stability”}。具体实施中,若测试用例筛选信息的数量为0,则测试用例筛选条件集为空集。
91.s309,基于测试用例筛选条件集,在测试用例库中确定多个目标测试用例对象。
92.其中,每个目标测试用例对象中的属性信息与测试用例筛选条件集相匹配。
93.具体实施中,遍历测试用例库中的测试用例对象,匹配测试用例对象中保存的测试用例的属性信息与测试用例筛选条件集中的测试用例筛选信息,将匹配成功的测试用例对象中保存的函数入口地址所指示的测试用例,即目标测试用例插入任务链表,得到一个目标测试任务的待执行用例链表。具体的,以测试用例筛选条件集{用例级别“2”,用例特性“performance|stability”}为例,则目标测试用例对象中保存的属性信息至少包括用例级别“2”和用例特性“performance|stability”这两个属性,例如,测试用例库中的测试用例对象object_001具备以下属性信息:用例编号“tc_001”、用例名称“tc_n001”、用例模块“tc_module_a”、用例子模块“tc_sub_module_a”、用例级别“2”、用例特性“performance|stability”。测试用例对象object_001与测试用例筛选条件集匹配成功,将测试用例对象object_001对象中保存的函数入口地址所指示的测试用例用例tc_001作为目标测试用例,插入任务链表。
94.由本技术实施例的上述技术方案可见,本技术实施例通过按照不同测试维度对测试用例库中的用例进行筛选,自由灵活定义筛选范围,以便更加精准高效地针对特定范围用例进行测试。
95.在一个示例性的实施方式中,测试用例的属性具有优先级,上述步骤s309可以包括以下步骤:
96.确定测试用例筛选条件集中的测试用例筛选信息的优先级;
97.按照优先级从高到低的顺序,基于测试用例筛选条件集中的测试用例筛选信息,对测试用例库中的测试用例对象进行筛选,得到多个目标测试用例对象。
98.具体实施中,优先级最高的是用例级,即具体指定一个或者多个测试用例,则不考虑其他筛选信息。否则,依次按照个人版本产品、企业版本产品、模块、子模块、用例级别进行筛选。
99.由本技术实施例的上述技术方案可见,本技术实施例按照测试用例筛选信息的优先级从高到低的顺序,筛选测试用例,从而筛选出最契合测试任务的测试用例。
100.s203,对于每个目标测试用例对象,基于目标测试用例对象中的函数入口地址,确定对应的目标测试用例。
101.其中,目标测试用例对象中的函数入口地址为执行相应目标测试用例时执行的第一条指令的地址,基于目标测试用例对象中的函数入口地址可以调用目标测试用例。
102.由本技术实施例的上述技术方案可见,本技术实施例通过用户配置的任务描述文件筛选匹配的属性信息,从而确定匹配的测试用例对象,基于匹配的测试用例对象中保存的函数入口地址调用测试用例,精确筛选出所需颗粒度的测试用例,并且对象存储易扩展,可实现存储属性信息的弹性伸缩。
103.s105,对于每个目标测试用例,基于测试用例注册信息,遍历共享测试数据集合。
104.其中,共享测试数据集合包括多个共享键值对,共享键值对保存测试数据标识和测试数据。
105.具体实施中,对于每个目标测试用例,根据测试用例注册信息中每个测试用例对应的测试数据标识,确定目标测试用例的测试数据标识,遍历共享测试数据集合,以确定共享测试数据集合中是否有该测试数据标识,即可确定共享测试数据集合中是否已经保存有目标测试用例所需的测试数据。
106.s107,判断共享测试数据集合中是否存在目标测试用例对应的测试数据标识。
107.具体的,若判断的结果为是,则可以执行步骤s109;反之,若判断的结果为否,则可以执行步骤s1011。
108.具体实施中,若共享测试数据集合中存在目标测试用例对应的测试数据标识,则直接调用;若共享测试数据集合中不存在目标测试用例对应的测试数据标识,则构造测试数据并调用。
109.s109,调用共享测试数据集合中目标测试用例对应的测试数据标识对应的测试数据,执行目标测试用例,得到测试结果。
110.具体实施中,确定保存有目标测试用例对应的测试数据标识的共享键值对,调用该键值对中保存的测试数据。
111.s1011,基于测试用例注册信息,确定目标测试用例对应的测试数据参数。
112.具体的,根据测试用例注册信息中每个测试用例对应的测试数据参数,确定该目标测试用例对应的测试数据参数,通过该参数构造测试数据,以供该测试用例在执行过程中调用。
113.s1013,基于目标测试用例对应的测试数据参数构造目标测试数据。
114.其中,目标测试数据为目标测试用例所需的测试数据。具体的,将目标测试用例对应的测试数据参数作为构造函数的输入,以构造目标测试数据。例如,测试时要求构造一个数据d,已知生成d所需的参数为私钥i,将私钥i作为测试数据构造函数d的输入,则d=d(int i),得到的加密公钥d即为目标测试数据。
115.在一个示例性的实施方式中,测试数据信息还包括测试数据的适用级别,如图4所示,上述步骤s1013之后,还可以包括:
116.s401,若目标测试用例对应的测试数据标识在测试用例注册信息中存在复用,则基于目标测试用例对应的测试数据标识和目标测试数据,构建目标共享键值对。
117.具体的,测试用例注册信息中保存有每个测试用例对应的测试数据标识,根据测试数据标识是否重复来判断测试数据标识对应的测试数据是否存在复用,若存在复用,则将该测试数据标识和相应的测试数据插入共享测试数据集合,以供其他测试用例在执行过
程中直接调用,若不存在复用,则无需插入共享测试数据集合。
118.s403,将目标共享键值对插入共享测试数据集合。
119.其中,目标共享键值对的键值为目标测试用例对应的测试数据标识,键值项为目标测试数据,后续调用测试数据只需根据测试数据标识在共享测试数据集合中调用测试数据。
120.s405,基于目标测试用例,在测试用例注册信息中,确定目标测试数据的适用级别。
121.其中,目标测试数据的适用级别是根据测试用例注册信息中每个测试用例对应的适用级别来确定的。
122.具体实施中,测试用例的适用级别可以包括用例级、子模块级、模块级。
123.s407,基于目标测试数据的适用级别,对目标共享键值对设置生存期。
124.其中,目标共享键值对的生存期为与目标测试数据属于同一适用级别的测试用例的执行期间。
125.具体的,属于该适用级别的测试用例执行完毕后自动释放目标共享键值对。
126.由本技术实施例的上述技术方案可见,本技术实施例通过将复用测试数据插入共享测试数据集合,并对其设置生存期,避免了重复构造测试数据所造成的时间、空间开销,实现共享测试数据集合的内存及时自动释放。
127.s1015,调用目标测试数据,执行目标测试用例,得到测试结果。
128.具体实施中,多线程执行多个目标测试用例,记录所有测试用例的执行结果,分析后生成测试报告,记录整个测试过程中的日志信息,完成本次测试任务。
129.由本技术实施例的上述技术方案可见,本技术实施例通过预先构建包含用例属性的测试用例库,基于用户配置的任务描述文件筛选匹配的属性信息,精确筛选出所需颗粒度的测试用例,在自动化执行测试用例时精准高效地针对特定范围用例进行测试,大大降低无效测试所浪费的成本,从而提高生产效率;每个用例在执行时,根据所需测试数据的标识在共享测试数据集合中查找取用,节省重复构造数据所造成的时间、空间开销。
130.在一个示例性的实施方式中,如图5所示,上述步骤s109和s1015中执行目标测试用例的过程可以包括:
131.s501,对于每个目标测试用例,确定目标测试用例的主函数,得到多个目标函数。
132.其中,目标测试用例为属性信息与测试任务描述文件相匹配的用例。
133.其中,目标函数为目标测试用例的主函数。
134.s503,按照预设数量创建线程,对于每个线程,在多个目标函数中随机确定线程对应的目标函数,基于线程运行相应的目标函数,在线程运行结束时,将线程确定为空闲线程。
135.其中,预设数量为创建的线程的数量,可在配置测试任务时设置。
136.其中,空闲线程为创建的预设数量的线程中没有被占用的线程,即没有正在运行目标函数的线程。
137.s505,判断运行目标函数的数量是否小于多个目标函数的数量。
138.具体的,若判断的结果为是,则可以执行步骤s407;反之,若判断的结果为否,则可以执行步骤s409。
139.其中,运行目标函数为多个目标函数中被运行过的函数。
140.具体实施中,在目标函数没有被全部运行过时,继续基于空闲线程运行没有被运行过的目标函数,直至目标函数被全部运行过。
141.s507,对于每个空闲线程,在剩余目标函数中随机确定空闲线程对应的目标函数,将空闲线程确定为占用线程,基于占用线程运行相应的目标函数,在占用线程运行结束时,将占用线程确定为空闲线程。
142.其中,剩余目标函数为多个目标函数中未被运行的函数。
143.其中,占用线程为创建的预设数量的线程中被占用的线程,即正在运行目标函数的线程。
144.具体实施中,也可按照测试用例的优先级执行测试用例。
145.s509,基于每个目标测试用例对应的目标函数的运行结果,生成测试报告。
146.具体实施中,记录所有目标函数的运行结果,分析后生成测试报告,记录整个测试过程中的日志信息,完成本次测试任务。
147.由本技术实施例的上述技术方案可见,本技术实施例通过创建一定数量的线程,多线程执行测试用例,使得测试用例的执行效率更高。
148.下面对基于测试用例的属性构建测试用例库的过程进行说明,如图6所示,具体可以包括:
149.s601,获取多个测试用例。
150.具体实施中,测试用例通常来自基线用例库。
151.s603,对于每个测试用例,标注属性信息,确定测试用例的函数入口地址。
152.其中,属性信息可以包括用例编号、用例名称、用例级别、用例特性等等。例如,对测试用例tc_001标注以下属性信息:用例编号“tc_001”、用例名称“tc_n001”、用例模块“tc_module_a”、用例子模块“tc_sub_module_a”、用例级别“2”、用例特性“performance|stability”。
153.其中,测试用例的函数入口地址为执行该测试用例时执行的第一条指令的地址。
154.s605,将测试用例的函数入口地址和测试用例对应的属性信息封装成对象,得到多个测试用例对象。
155.其中,测试用例库包含多个测试用例对象,测试用例对象保存测试用例的函数入口地址和测试用例对应的属性信息。
156.具体实施中,将基线用例库中的每个基线用例封装成一个testcase类的对象,对象中保存用例的函数入口和属性信息。
157.s607,基于多个测试用例对象,生成测试用例库。
158.具体实施中,将每个测试用例对象插入任务链表,作为测试用例库,以便于对测试用例库随机遍历,对用例对象进行增删改查操作。
159.由本技术实施例的上述技术方案可见,本技术实施例通过对测试用例标注属性信息,将测试用例的函数入口地址和测试用例的属性信息存储在对象中,构建测试用例库,既便于按照测试用例的属性对测试用例进行筛选,精确筛选出所需颗粒度的测试用例,在自动化执行测试用例时精准高效地针对特定范围用例进行测试,又可实现在存储测试用例属性信息的弹性伸缩。
160.与上述几种实施例提供的基于测试用例库的测试方法相对应,本技术实施例还提供一种基于测试用例库的测试装置,由于本技术实施例提供的基于测试用例库的测试装置与上述几种实施例提供的基于测试用例库的测试方法相对应,因此前述基于测试用例库的测试方法的实施方式也适用于本实施例提供的基于测试用例库的测试装置,在本实施例中不再详细描述。
161.请参阅图7,其所示为本技术实施例提供的一种基于测试用例库的测试装置的结构示意图,该装置具有实现上述方法实施例中基于测试用例库的测试方法的功能,该功能可以由硬件实现,也可以由硬件执行相应的软件实现。如图7所示,该装置可以包括:
162.信息获取模块710,用于获取测试任务描述文件和测试用例注册信息;测试任务描述文件用于描述目标测试任务对应测试用例的属性;测试用例注册信息包括每个测试用例对应的测试数据信息,测试数据信息包括测试数据标识;
163.用例确定模块720,用于基于测试任务描述文件和测试用例库,确定多个目标测试用例;测试用例库包含多个测试用例对象;测试用例对象保存测试用例的函数入口地址和测试用例对应的属性信息;每个目标测试用例对应的属性信息与测试任务描述文件相匹配;
164.调用执行模块730,用于对于每个目标测试用例,基于测试用例注册信息,遍历共享测试数据集合,在共享测试数据集合中存在目标测试用例对应的测试数据标识时,调用共享测试数据集合中目标测试用例对应的测试数据标识对应的测试数据,执行目标测试用例,得到测试结果;共享测试数据集合包括多个共享键值对,共享键值对保存测试数据标识和测试数据。
165.在一个示例性的实施方式中,测试数据信息还包括测试数据参数;装置还包括构造测试数据以供执行目标测试用例时调用的构造执行模块,构造执行模块,包括:
166.参数确定模块,用于在共享测试数据集合中不存在目标测试用例对应的测试数据标识时,基于测试用例注册信息,确定目标测试用例对应的测试数据参数;
167.数据构造模块,用于基于目标测试用例对应的测试数据参数构造目标测试数据;
168.用例执行模块,用于调用目标测试数据,执行目标测试用例,得到测试结果。
169.在一个示例性的实施方式中,用例确定模块,包括:
170.对象确定模块,用于基于测试任务描述文件,在测试用例库中确定多个目标测试用例对象;每个目标测试用例对象中的属性信息与测试任务描述文件相匹配;
171.对应用例模块,用于对于每个目标测试用例对象,基于目标测试用例对象中的函数入口地址,确定对应的目标测试用例。
172.在一个示例性的实施方式中,对象确定模块,包括:
173.属性提取模块,用于提取测试任务描述文件的内容,得到多条目标属性信息;
174.维度获取模块,用于获取输入的至少一个测试维度;每个测试维度表征目标测试任务对应测试用例的属性所属的维度;
175.相关度确定模块,用于对于每条目标属性信息,确定目标属性信息与至少一个测试维度的相关度,得到每条目标属性信息对应的相关度;
176.筛选条件模块,用于对于每条目标属性信息,在目标属性信息对应的相关度满足预设相关度条件时,将目标属性信息确定为测试用例筛选信息,得到测试用例筛选条件集;
177.用例对象模块,用于基于测试用例筛选条件集,在测试用例库中确定多个目标测试用例对象;每个目标测试用例对象中的属性信息与测试用例筛选条件集相匹配。
178.在一个示例性的实施方式中,测试用例的属性具有优先级;用例对象模块,包括:
179.优先级确定模块,用于确定测试用例筛选条件集中的测试用例筛选信息的优先级;
180.用例筛选模块,用于按照优先级从高到低的顺序,基于测试用例筛选条件集中的测试用例筛选信息,对测试用例库中的测试用例对象进行筛选,得到多个目标测试用例对象。
181.在一个示例性的实施方式中,测试数据信息还包括测试数据的适用级别;装置还包括将复用测试数据插入共享测试数据集合的数据插入模块,数据插入模块,包括:
182.键值对构造模块,用于若目标测试用例对应的测试数据标识在测试用例注册信息中存在复用,则基于目标测试用例对应的测试数据标识和目标测试数据,构建目标共享键值对;
183.键值对插入模块,用于将目标共享键值对插入共享测试数据集合;
184.级别确定模块,用于基于目标测试用例,在测试用例注册信息中,确定目标测试数据的适用级别;
185.生存期设置模块,用于基于目标测试数据的适用级别,对目标共享键值对设置生存期;目标共享键值对的生存期为与目标测试数据属于同一适用级别的测试用例的执行期间。
186.在一个示例性的实施方式中,调用执行模块或用例执行模块,包括:
187.函数确定模块,用于对于每个目标测试用例,确定目标测试用例的主函数,得到多个目标函数;
188.第一函数运行模块,用于按照预设数量创建线程,对于每个线程,在多个目标函数中随机确定线程对应的目标函数,基于线程运行相应的目标函数,在线程运行结束时,将线程确定为空闲线程;
189.第二函数运行模块,用于在运行目标函数的数量小于多个目标函数的数量时,对于每个空闲线程,在剩余目标函数中随机确定空闲线程对应的目标函数,将空闲线程确定为占用线程,基于占用线程运行相应的目标函数,在占用线程运行结束时,将占用线程确定为空闲线程,直至运行目标函数的数量等于多个目标函数的数量时,结束随机确定;运行目标函数为多个目标函数中被运行过的函数;剩余目标函数为多个目标函数中未被运行的函数;
190.报告生成模块,用于基于每个目标测试用例对应的目标函数的运行结果,生成测试报告。
191.在一个示例性的实施方式中,装置还包括用于基于测试用例的属性构建测试用例库的用例库构建模块,用例库构建模块,包括:
192.用例获取模块,用于获取多个测试用例;
193.信息确定模块,用于对于每个测试用例,标注属性信息,确定测试用例的函数入口地址;
194.对象封装模块,用于将测试用例的函数入口地址和测试用例对应的属性信息封装
成对象,得到多个测试用例对象;
195.用例库生成模块,用于基于多个测试用例对象,生成测试用例库。
196.需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
197.本技术实施例提供了一种电子设备,该电子设备包括处理器和存储器,该存储器中存储有至少一条指令或者至少一段程序,该至少一条指令或者该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的任意一种基于测试用例库的测试方法。
198.存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
199.本技术实施例所提供的方法实施例可以在计算机终端、服务器或者类似的运算装置中执行,即上述电子设备可以包括计算机终端、服务器或者类似的运算装置。图8是本发明实施例提供的运行一种基于测试用例库的测试方法的计算机设备的硬件结构框图,如图8所示,该计算机设备的内部结构可包括但不限于:处理器、网络接口及存储器。其中,计算机设备内的处理器、网络接口及存储器可通过总线或其他方式连接,在本说明书实施例所示图8中以通过总线连接为例。
200.其中,处理器(或称cpu(central processing unit,中央处理器))是计算机设备的计算核心以及控制核心。网络接口可选的可以包括标准的有线接口、无线接口(如wi-fi、移动通信接口等)。存储器(memory)是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的存储器可以是高速ram存储设备,也可以是非不稳定的存储设备(non-volatile memory),例如至少一个磁盘存储设备;可选的还可以是至少一个位于远离前述处理器的存储装置。存储器提供存储空间,该存储空间存储了电子设备的操作系统,可包括但不限于:windows系统(一种操作系统),linux(一种操作系统),android(安卓,一种移动操作系统)系统、ios(一种移动操作系统)系统等等,本发明对此并不作限定;并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。在本说明书实施例中,处理器加载并执行存储器中存放的一条或一条以上指令,以实现上述方法实施例提供的基于测试用例库的测试方法。
201.本技术的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质可设置于电子设备之中以保存用于实现一种基于测试用例库的测试方法相关的至少一条指令或者至少一段程序,该至少一条指令或者该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的任意一种基于测试用例库的测试方法。
202.可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,
read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
203.需要说明的是:上述本技术实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
204.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
205.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
206.以上所述仅为本技术的较佳实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。

技术特征:
1.一种基于测试用例库的测试方法,其特征在于,所述方法包括:获取测试任务描述文件和测试用例注册信息;所述测试任务描述文件用于描述目标测试任务对应测试用例的属性;所述测试用例注册信息包括每个测试用例对应的测试数据信息,所述测试数据信息包括测试数据标识;基于所述测试任务描述文件和测试用例库,确定多个目标测试用例;所述测试用例库包含多个测试用例对象;所述测试用例对象保存测试用例的函数入口地址和所述测试用例对应的属性信息;每个所述目标测试用例对应的属性信息与所述测试任务描述文件相匹配;对于每个目标测试用例,基于所述测试用例注册信息,遍历共享测试数据集合,在所述共享测试数据集合中存在所述目标测试用例对应的测试数据标识时,调用所述共享测试数据集合中所述目标测试用例对应的测试数据标识对应的测试数据,执行所述目标测试用例,得到测试结果;所述共享测试数据集合包括多个共享键值对,所述共享键值对保存测试数据标识和测试数据。2.根据权利要求1所述的基于测试用例库的测试方法,其特征在于,所述测试数据信息还包括测试数据参数;所述方法还包括:在所述共享测试数据集合中不存在所述目标测试用例对应的测试数据标识时,基于所述测试用例注册信息,确定所述目标测试用例对应的测试数据参数;基于所述目标测试用例对应的测试数据参数构造目标测试数据;调用所述目标测试数据,执行所述目标测试用例,得到测试结果。3.根据权利要求1所述的基于测试用例库的测试方法,其特征在于,所述基于所述测试任务描述文件和测试用例库,确定多个目标测试用例,包括:基于所述测试任务描述文件,在所述测试用例库中确定多个目标测试用例对象;每个所述目标测试用例对象中的属性信息与所述测试任务描述文件相匹配;对于每个目标测试用例对象,基于所述目标测试用例对象中的函数入口地址,确定对应的目标测试用例。4.根据权利要求3所述的基于测试用例库的测试方法,其特征在于,所述基于所述测试任务描述文件,在所述测试用例库中确定多个目标测试用例对象,包括:提取所述测试任务描述文件的内容,得到多条目标属性信息;获取输入的至少一个测试维度;每个所述测试维度表征所述目标测试任务对应测试用例的属性所属的维度;对于每条目标属性信息,确定所述目标属性信息与所述至少一个测试维度的相关度,得到每条目标属性信息对应的相关度;对于每条目标属性信息,在所述目标属性信息对应的相关度满足预设相关度条件时,将所述目标属性信息确定为测试用例筛选信息,得到测试用例筛选条件集;基于所述测试用例筛选条件集,在所述测试用例库中确定所述多个目标测试用例对象;每个所述目标测试用例对象中的属性信息与所述测试用例筛选条件集相匹配。5.根据权利要求4所述的基于测试用例库的测试方法,其特征在于,测试用例的属性具有优先级;所述基于所述测试用例筛选条件集,在所述测试用例库中确定所述多个目标测试用例对象,包括:
确定所述测试用例筛选条件集中的测试用例筛选信息的优先级;按照优先级从高到低的顺序,基于所述测试用例筛选条件集中的测试用例筛选信息,对所述测试用例库中的测试用例对象进行筛选,得到所述多个目标测试用例对象。6.根据权利要求2所述的基于测试用例库的测试方法,其特征在于,所述测试数据信息还包括测试数据的适用级别;所述方法还包括:若所述目标测试用例对应的测试数据标识在所述测试用例注册信息中存在复用,则基于所述目标测试用例对应的测试数据标识和所述目标测试数据,构建目标共享键值对;将所述目标共享键值对插入所述共享测试数据集合;基于所述目标测试用例,在所述测试用例注册信息中,确定所述目标测试数据的适用级别;基于所述目标测试数据的适用级别,对所述目标共享键值对设置生存期;所述目标共享键值对的生存期为与所述目标测试数据属于同一适用级别的测试用例的执行期间。7.根据权利要求1或2所述的基于测试用例库的测试方法,其特征在于,所述执行所述目标测试用例,包括:对于每个目标测试用例,确定所述目标测试用例的主函数,得到多个目标函数;按照预设数量创建线程,对于每个线程,在所述多个目标函数中随机确定所述线程对应的目标函数,基于所述线程运行相应的目标函数,在所述线程运行结束时,将所述线程确定为空闲线程;在运行目标函数的数量小于所述多个目标函数的数量时,对于每个空闲线程,在剩余目标函数中随机确定所述空闲线程对应的目标函数,将所述空闲线程确定为占用线程,基于所述占用线程运行相应的目标函数,在所述占用线程运行结束时,将所述占用线程确定为空闲线程,直至所述运行目标函数的数量等于所述多个目标函数的数量时,结束所述随机确定;所述运行目标函数为所述多个目标函数中被运行过的函数;所述剩余目标函数为所述多个目标函数中未被运行的函数;基于每个目标测试用例对应的目标函数的运行结果,生成测试报告。8.根据权利要求1~7中任一项所述的基于测试用例库的测试方法,其特征在于,所述方法还包括:获取多个测试用例;对于每个测试用例,标注属性信息,确定所述测试用例的函数入口地址;将所述测试用例的函数入口地址和所述测试用例对应的属性信息封装成对象,得到所述多个测试用例对象;基于所述多个测试用例对象,生成所述测试用例库。9.一种基于测试用例库的测试装置,其特征在于,所述装置包括:信息获取模块,用于获取测试任务描述文件和测试用例注册信息;所述测试任务描述文件用于描述目标测试任务对应测试用例的属性;所述测试用例注册信息包括每个测试用例对应的测试数据信息,所述测试数据信息包括测试数据标识;用例确定模块,用于基于所述测试任务描述文件和测试用例库,确定多个目标测试用例;所述测试用例库包含多个测试用例对象;所述测试用例对象保存测试用例的函数入口地址和所述测试用例对应的属性信息;每个所述目标测试用例对应的属性信息与所述测试
任务描述文件相匹配;调用执行模块,用于对于每个目标测试用例,基于所述测试用例注册信息,遍历共享测试数据集合,在所述共享测试数据集合中存在所述目标测试用例对应的测试数据标识时,调用所述共享测试数据集合中所述目标测试用例对应的测试数据标识对应的测试数据,执行所述目标测试用例,得到测试结果;所述共享测试数据集合包括多个共享键值对,所述共享键值对保存测试数据标识和测试数据。10.一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令或者至少一段程序,所述至少一条指令或者所述至少一段程由所述处理器加载并执行以实现如权利要求1~8中任一项所述的基于测试用例库的测试方法。

技术总结
本申请公开了基于测试用例库的测试方法、装置及电子设备,其中,基于测试用例库的测试方法可应用于软件测试领域,该方法包括:获取测试任务描述文件和测试用例注册信息;测试任务描述文件描述测试用例的属性;测试用例注册信息包括每个测试用例对应的测试数据标识;基于测试任务描述文件和测试用例库,确定多个目标测试用例;测试用例库保存测试用例的属性;对于每个目标测试用例,基于测试用例注册信息,遍历共享测试数据集合,存在该用例对应的测试数据标识时,调用该标识对应的测试数据,执行该用例;共享测试数据集合保存测试数据标识和测试数据。本申请降低无效测试所浪费的成本,节省重复构造数据所造成的时间、空间开销。空间开销。空间开销。


技术研发人员:洪峰 秦民
受保护的技术使用者:中汽创智科技有限公司
技术研发日:2023.06.30
技术公布日:2023/10/6
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐