一种测试案例生成方法、装置、计算机设备及存储介质与流程

文档序号:26724687发布日期:2021-09-22 21:01阅读:141来源:国知局
一种测试案例生成方法、装置、计算机设备及存储介质与流程

1.本发明实施例涉及测试技术领域,尤其涉及一种测试案例生成方法、装置、计算机设备及存储介质。


背景技术:

2.测试案例(test case),也就是测试用例,指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。
3.目前,现有技术方案中,一般采用人工编写案例和测试案例生成工具两种解决方案生成测试案例。
4.发明人在实现本发明的过程中,发现现有技术存在如下缺陷:人工编写测试案例,需要耗费大量人力和时间,应对不同软件测试项目需要重新编写案例,测试案例生成效率较低。现有业界测试案例生成工具以定制专用为主,缺少大规模应用实践,支持类型单一,且生成的测试案例较为简单,缺乏通用性。


技术实现要素:

5.本发明实施例提供一种测试案例生成方法、装置、计算机设备及存储介质,能够降低测试案例开发成本,提升快速测试交付能力,提高测试案例准备效率、测试覆盖度以及测试通用性。
6.第一方面,本发明实施例提供了一种测试案例生成方法,包括:
7.获取测试案例流程图源文件;其中,所述测试案例流程图源文件包括测试案例节点、测试案例节点属性以及测试案例节点流转关系;
8.对所述测试案例流程图源文件进行解析,得到测试案例流程图解析结果;
9.根据所述测试案例流程图解析结果自动生成至少一种类型的测试案例;其中,所述测试案例的类型包括测试正案例、测试反案例以及界面检查案例。
10.第二方面,本发明实施例还提供了一种测试案例生成装置,包括:
11.测试案例流程图源文获取模块,用于获取测试案例流程图源文件;其中,所述测试案例流程图源文件包括测试案例节点、测试案例节点属性以及测试案例节点流转关系;
12.测试案例流程图解析结果获取模块,用于对所述测试案例流程图源文件进行解析,得到测试案例流程图解析结果;
13.测试案例生成模块,用于根据所述测试案例流程图解析结果自动生成至少一种类型的测试案例;其中,所述测试案例的类型包括测试正案例、测试反案例以及界面检查案例。
14.第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
15.一个或多个处理器;
16.存储装置,用于存储一个或多个程序;
17.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的测试案例生成方法。
18.第四方面,本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所提供的测试案例生成方法。
19.本发明实施例通过对获取的包括测试案例节点、测试案例节点属性以及测试案例节点流转关系的测试案例流程图源文件进行解析,得到测试案例流程图解析结果,进一步根据测试案例流程图解析结果自动生成测试正案例、测试反案例以及界面检查案例等多种类型的测试案例,解决现有测试案例生成方法存在的测试案例生成效率低、测试案例支持类型单一、方案简单以及不具备通用性等问题,能够自动生成全类型的测试案例,降低测试案例开发成本,提升快速测试交付能力,提高测试案例准备效率、测试覆盖度以及测试通用性。
附图说明
20.图1是本发明实施例一提供的一种测试案例生成方法的流程图;
21.图2是本发明实施例二提供的一种测试案例生成方法的流程图;
22.图3是本发明实施例二提供的一种独立操作路径的效果示意图;
23.图4是本发明实施例三提供的一种测试案例生成方法的流程图;
24.图5是本发明实施例四提供的一种测试案例生成方法的流程图;
25.图6是本发明实施例四提供的一种测试案例生成方法的流程示意图;
26.图7是本发明实施例五提供的一种测试案例生成装置的示意图;
27.图8为本发明实施例六提供的一种计算机设备的结构示意图。
具体实施方式
28.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。
29.另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
30.本发明实施例的说明书和权利要求书及附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
31.实施例一
32.图1是本发明实施例一提供的一种测试案例生成方法的流程图,本实施例可适用于自动、高效地生成全类型测试案例情况,该方法可以由测试案例生成装置来执行,该装置可以由软件和/或硬件的方式来实现,并一般可集成在计算机设备中,该计算机设备可以是
终端设备,也可以是服务器设备,本发明实施例并不对计算机设备的类型进行限定。相应的,如图1所示,该方法包括如下操作:
33.s110、获取测试案例流程图源文件;其中,所述测试案例流程图源文件包括测试案例节点、测试案例节点属性以及测试案例节点流转关系。
34.其中,测试案例流程图源文件可以是包括至少一个测试案例流程图的源文件。测试案例流程图可以是业务人员根据业务实际需求编写的业务流程图,一个业务流程图可以反应一个业务的具体操作流程。测试案例节点可以理解为业务流程图对应的业务操作流程中的其中一个环节,也可以称为操作节点。测试案例节点属性则可以是测试案例节点支持的等价类或要素。测试案例节点流转关系则可以是一个测试案例流程图内各测试案例节点之间的流转关系,可以用于提供测试案例生成算法的输入,能够体现业务流程操作的顺序。可以理解的是,各测试案例节点按照测试案例节点流转关系进行组合排列,可以得到至少一条操作路径,一条独立完整的操作路径可以代表业务的一个分支。
35.在本发明实施例中,由计算机设备自动生成测试案例之前,可以首先获取测试案例流程图源文件。可选的,测试案例流程图源文件可以是任意类型的计算机可识别的文件,如xml(extensible markup language,可扩展标记语言)文件或python文件等,只有能够被计算机设备识别即可,本发明实施例并不对测试案例流程图源文件的文件类型进行限定。
36.示例性的,以贷款业务为例说明,贷款业务的测试案例流程图可以反应贷款业务的完整操作流程,而测试案例节点则可以是贷款业务中的其中一个操作环节,如“输入担保信息”的环节。相应的,测试案例节点属性则可以是输入担保信息”的选项,如新增或引入等。
37.可以理解的是,任何需要通过测试案例进行测试的业务类型都可以生成对应的测试案例流程图源文件。例如,金融类业务、工业加工业务、计算机处理任务(如图像识别或数据处理等)以及游戏测试任务等,均可以按照业务的测试需求生成对应的测试流程图,进而根据测试流程图生成测试案例流程图源文件,以通过计算机设备根据测试案例流程图源文件自动生成测试案例。由此可见,业务人员只需要根据业务需求制定业务流程图即可利用计算机自动生成测试案例,从而大幅降低对测试人员测试经验的依赖,降低测试案例开发成本。
38.s120、对所述测试案例流程图源文件进行解析,得到测试案例流程图解析结果。
39.其中,测试案例流程图解析结果可以是对测试案例流程图源文件进行解析得到的解析结果。
40.相应的,当计算机设备获取到测试案例流程图源文件之后,可以对测试案例流程图源文件进行解析,以根据解析得到的测试案例流程图解析结果自动生成测试案例。
41.在本发明的一个可选实施例中,所述对所述测试案例流程图源文件进行解析,可以包括:确定测试案例流程图关联的至少一个所述测试案例节点;确定各所述测试案例节点之间的流转关系;确定各所述测试案例节点支持的要素类型;其中,所述要素类型包括有效等价类和无效等价类。
42.其中,有效等价类是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。无效等价类与有效等价类的定义相反,指对程序的规格说明是不合理的或无意义的输入数据所
构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。示例性的,以金融业务为例说明,针对“账号操作”这一测试案例节点来说,该测试案例节点的有效等价类可以包括激活、挂失及冻结等,无效等价类则可以包括异常,如无效账号等。
43.具体的,在对测试案例流程图源文件进行解析时,可以确定每个测试案例流程图关联的所有测试案例节点,并进一步确定每个测试案例流程图中各测试案例节点之间的流转关系。同时,还可以对每个测试案例节点进行进一步解析,确定每个测试案例节点支持选择的要素或等价类,实现对测试案例流程图源文件的深度解析。
44.s130、根据所述测试案例流程图解析结果自动生成至少一种类型的测试案例;其中,所述测试案例的类型包括测试正案例、测试反案例以及界面检查案例。
45.其中,测试正案例可以是用于验证业务功能或操作流程,能否正常处理业务的测试案例,测试反案例可以是用于验证不合法的数据或流程,能否被拒绝和防范的测试案例。界面检查案例可以是用于操作界面要素检查类的测试案例。
46.在本发明实施例中,当获取到测试案例流程图解析结果之后,计算机设备即可根据测试案例流程图解析结果自动生成多种类型的测试案例。测试案例的类型包括测试正案例、测试反案例以及界面检查案例等。
47.由此可见,本发明实施例所提供的测试案例生成方法可以根据任意类型的测试需求生成仅包括测试案例流程图的测试案例流程图源文件,并根据测试案例流程图源文件自动一次性生成全类型的测试案例,而无需分别生成不同类型的测试案例,不仅可以降低测试案例开发成本,而且能够提升快速测试交付能力,提高测试案例准备效率、测试覆盖度以及测试通用性。
48.在本发明的一个可选实施例中,在所述根据所述测试案例流程图解析结果自动生成至少一种类型的测试案例之后,还可以包括:确定各所述测试案例的案例标识;根据各所述测试案例的案例内容生成各所述测试案例的案例内容唯一编码;根据各所述案例标识和各所述案例内容唯一编码对各所述测试案例进行去重处理。
49.其中,案例标识可以用于唯一标识各个测试案例。案例内容也即测试案例包括的具体的测试内容。可选的,案例内容的类型可以是xml类型等,本发明实施例对此并不进行限制。案例内容唯一编码可以是对测试案例的案例内容进行加密处理得到的唯一标识案例内容的编码。
50.在本发明实施例中,可选的,在生成各测试案例之后,为了避免测试案例中存在相同案例,可以对各测试案例进行去重处理。具体的,可以首先确定每个测试案例的案例标识,并对各测试案例的案例内容进行加密处理生成各测试案例的案例内容唯一编码。示例性的,可以采用md5(message digest algorithm 5,消息摘要算法第五版)或哈希算法等生成每个案例内容对应的案例内容唯一编码。可以理解的是,相同的案例内容唯一编码对应的案例内容相同。因此可以根据各案例标识和各案例内容唯一编码对各测试案例进行去重处理。可选的,可以对测试正案例和测试反案例两种测试案例类型进行去重处理。
51.具体的,可以首先以案例标识为基准,删除重复存在的案例标识和对应的案例内容唯一编码。进一步的,从筛选后的第一个案例标识和对应的案例内容唯一编码开始遍历处理,保留第一个测试案例,将第一个案例标识和对应的案例内容唯一编码加入集合中。判断第二个案例标识对应的案例内容唯一编码是否已经在集合中存在,若是,表明第二个案
例标识对应的测试案例实际与第一个测试案例是相同的测试案例,则删除该案例标识对应的测试案例;否则,保留第二个测试案例,并将第二个案例标识和对应的案例内容唯一编码加入集合中。以此类推,按照上述方式对所有筛选后的案例标识对应的测试案例进行去重处理,从而保证最终得到的测试案例不会存在冗余问题,确保测试案例生成的唯一性。
52.本发明实施例通过对获取的包括测试案例节点、测试案例节点属性以及测试案例节点流转关系的测试案例流程图源文件进行解析,得到测试案例流程图解析结果,进一步根据测试案例流程图解析结果自动生成测试正案例、测试反案例以及界面检查案例等多种类型的测试案例,解决现有测试案例生成方法存在的测试案例生成效率低、测试案例支持类型单一、方案简单以及不具备通用性等问题,能够自动生成全类型的测试案例,降低测试案例开发成本,提升快速测试交付能力,提高测试案例准备效率、测试覆盖度以及测试通用性。
53.实施例二
54.图2是本发明实施例二提供的一种测试案例生成方法的流程图,本实施例以上述实施例为基础进行具体化,在本实施例中,给出了根据所述测试案例流程图解析结果自动生成测试正案例的多种具体可选的实施方式。相应的,如图2所示,本实施例的方法可以包括:
55.s210、获取测试案例流程图源文件。
56.s220、对所述测试案例流程图源文件进行解析,得到测试案例流程图解析结果。
57.s230、根据所述测试案例流程图解析结果确定操作路径关联信息;其中,所述操作路径关联信息包括独立操作路径、独立操作路径的操作步骤顺序和操作路径数量。
58.其中,操作路径可以是由测试案例节点按照测试案例节点流转关系构建的路径操作路径关联信息可以是操作路径的相关信息。独立操作路径可以是包括路径起点、中间节点以及路径终点的完整路径,每条独立操作路径可以代表业务的一个分支。独立操作路径的操作步骤顺序也即独立操作路径中各测试案例节点之间的流转逻辑顺序。操作路径数量可以是个独立操作路径的总数量。
59.在本发明实施例中,计算机设备在利用测试案例流程图解析结果生成测试正案例之前,可以首先根据测试案例流程图解析结果确定独立操作路径、独立操作路径的操作步骤顺序和操作路径数量等操作路径关联信息,以根据操作路径关联信息获取各操作路径的具体信息。具体的,可以根据遍历算法获取每个独立操作路径的操作步骤顺序和操作路径数量。
60.在本发明的一个可选实施例中,所述根据所述测试案例流程图解析结果确定操作路径关联信息,可以包括:确定当前测试案例节点以及所述当前测试案例节点有效等价类的后续测试案例节点集合;对所述后续测试案例节点集合进行节点去重操作,得到后续目标节点集合;遍历各所述后续目标节点集合,依次生成具有操作步骤顺序的独立操作路径。
61.其中,当前测试案例节点可以是当前处理的测试案例节点。可选的,可以对测试案例流程图中包括的所有测试案例节点依次进行遍历确定当前测试案例节点。后续测试案例节点集合可以是当前测试案例节点有效等价类的后续测试案例节点构成的集合。后续目标节点集合可以是对后续测试案例节点集合进行节点去重操作后得到的测试案例节点构成的集合。目标节点也即后续目标节点集合中包括的各个测试案例节点。
62.在本发明实施例中,生成独立操作路径的过程具体可以是:首先从测试案例流程图的起始的测试案例节点开始,依次遍历各测试案例节点确定当前测试案例节点。在当前测试案例节点的基础上,确定当前测试案例节点有效等价类的后续测试案例节点集合。可以理解的是,当前测试案例节点有效等价类的后续测试案例节点集合中可能存在重复的节点,因此需要对后续测试案例节点集合进行节点去重操作,得到后续目标节点集合。相应的,得到后续目标节点集合之后,即可遍历各后续目标节点集合,依次生成具有操作步骤顺序的独立操作路径。
63.在一个具体的例子中,假设测试案例流程图中共包括a、b、c和d四个测试案例节点,节点a具有5个有效等价类。相应的,当节点a选择其中2个有效等价类中的任意一个时,其对应的测试案例节点以及测试案例节点流转关系具体可以是:a—b—d。当节点a选择另外3个有效等价类中的任意一个时,其对应的测试案例节点以及测试案例节点流转关系具体可以是:a—c—d。如果节点a为当前测试案例节点,则节点a的有效等价类的后续测试案例节点集合为[b,d,c,d]。由此可见,该后续测试案例节点集合为[b,d,c,d]中存在重复的节点d,因此可以对节点d进行去重操作,得到后续目标节点集合[b,d,c]。进一步的,可以根据节点a和节点a的后续目标节点集合[b,d,c]依次生成具有操作步骤顺序的独立操作路径:a—b—d和a—c—d。
[0064]
在本发明的一个可选实施例中,所述遍历各所述后续目标节点集合,依次生成具有操作步骤顺序的独立操作路径,可以包括:确定当前后续目标节点集合,并从所述当前后续目标节点集合中选择当前目标节点;在当前独立操作路径队列中追加所述当前目标节点;确定所述当前目标节点在所述当前独立操作路径中出现的次数;在所述当前目标节点在所述当前独立操作路径中出现的次数为1的情况下,根据所述当前目标节点和所述当前独立操作路径队列触发独立操作路径递归处理,直至生成完整的当前独立操作路径;在所述当前目标节点在所述当前独立操作路径中出现的次数等于2的情况下,复制所述当前独立操作路径队列,在所述当前独立操作路径队列依次追加多个目标节点,直至确定追加的目标节点为所述当前目标节点本身,生成所述当前独立操作路径队列的至少一个逆向回路分支;拼接所述当前独立操作路径队列和各所述逆向回路分支,生成完整的当前独立操作路径;在所述当前目标节点在所述当前独立操作路径中出现的次数大于2的情况下,确定所述当前独立操作路径为死循环,并删除所述当前独立操作路径。
[0065]
其中,当前后续目标节点集合可以是当前处理的后续目标节点集合。当前目标节点可以是当前后续目标节点集合中当前处理的目标节点。当前独立操作路径队列可以是当前正在处理生成的独立操作路径的部分队列。由于独立操作路径是按序生成的,因此当前独立操作路径队列可以是独立操作路径的前部分路径。所谓独立操作路径递归处理可以是按照测试案例节点流转关系依次追加各个节点,直至形成完整的独立操作路径。逆向回路分支可以是独立操作路径中的环路分支。当前独立操作路径也即当前独立操作路径队列所在的路径。死循环路径也即出现包括死循环的独立操作路径。
[0066]
具体的,可以遍历各个后续目标节点集合,确定当前后续目标节点集合,并从当前后续目标节点集合中选择当前目标节点。可以理解的是,当前测试案例节点以及当前测试案例节点之前已添加的测试案例节点可以构成当前独立操作路径队列。因此,可以在当前独立操作路径队列的末尾追加当前目标节点。进一步的,判断当前目标节点在当前独立操
作路径中出现的次数,若为1,则使用当前目标节点和当前独立操作路径队列作为参数触发独立操作路径递归处理,直至生成完整的当前独立操作路径;若当前目标节点在当前独立操作路径中出现的次数等于2,可判定当前目标节点引起二次逆向回路,则复制当前独立操作路径队列,并在当前独立操作路径队列的尾部持续追加多个目标节点,直到追加到引起二次逆向回路的当前目标节点,生成当前独立操作路径队列的至少一个逆向回路分支。进一步的,拼接当前独立操作路径队列和各逆向回路分支,生成完整的当前独立操作路径。若当前后续目标节点集合中无后续目标节点,则判断生成的独立操作路径是否存在,若不存在则将生成的独立操作路径添加到独立操作路径集合;若已存在则更新当前后续目标节点集合或当前测试案例节点,直至确定全部独立操作路径处理完毕。若当前目标节点在当前独立操作路径中出现的次数大于2,可判定当前独立操作路径出现死循环情况,为死循环路径。此时,可以删除当前独立操作路径。
[0067]
在一个具体的例子中,假设测试案例节点包括a、b、c、d和e五个测试案例节点,上述测试案例节点对应的独立操作路径如图3所示,该独立操作路径均包括两条环路。相应的,如图3所示,独立操作路径的生成过程可以包括如下操作:
[0068]
步骤1:入参为节点a和当前独立操作路径队列q(此时当前独立操作路径队列中只有a),从起始节点a开始,对节点a有效等价类的后续节点集合进行去重操作,得到当前节点a的后续目标节点集合{b}。
[0069]
步骤2:遍历后续目标节点集合{b},首先在当前独立操作路径队列q末尾追加b,判断b在当前独立操作路径队列q中出现的次数。此时次数为1,设置节点b为新的目标节点,使用节点b和当前独立操作路径队列q作为参数触发递归处理(递归进行步骤1、步骤2和步骤3的处理)。
[0070]
循环执行上述步骤,即:
[0071]
步骤1:入参为节点b和当前独立操作路径队列q(此时当前独立操作路径队列中有a

b),从起始节点b开始,对节点b有效等价类的后续节点集合进行去重操作,得到当前节点b的后续目标节点集合{c}。
[0072]
步骤2:遍历后续目标节点集合{c},首先在当前独立操作路径队列q末尾追加c,判断c在当前独立操作路径队列q中出现的次数。此时次数为1,设置节点c为新的目标节点,使用节点c和当前独立操作路径队列q作为参数触发递归处理(递归进行步骤1、步骤2和步骤3的处理)。
[0073]
循环执行上述步骤,即:
[0074]
步骤1:入参为节点c和当前独立操作路径队列q(此时队列中有a

b

c),从起始节点c开始,对节点c有效等价类的后续节点集合进行去重操作,得到当前节点c的后续目标节点集合{d}。
[0075]
步骤2:遍历后续目标节点集合{d},首先在当前独立操作路径队列q末尾追加d,判断d在当前独立操作路径队列q中出现的次数。此时次数为1,设置节点d为新的目标节点,使用节点d和当前独立操作路径队列q作为参数触发递归处理(递归进行步骤1、步骤2和步骤3的处理)。
[0076]
循环执行上述步骤,即:
[0077]
步骤1:入参为节点d和当前独立操作路径队列q(此时当前独立操作路径队列中有
a

b

c

d),从起始节点d开始,对节点d有效等价类的后续节点集合进行去重操作,得到当前节点d的后续目标节点集合{e,c}。
[0078]
步骤2:遍历后续目标节点集合{e,c},根据集合记录的数量复制当前独立操作路径队列q(此时队列q中有a

b

c

d)和当前独立操作路径队列q1(此时队列q1中有a

b

c

d)。在当前独立操作路径队列q末尾追加e,判断e在当前独立操作路径队列q中出现的次数。此时次数为1,设置节点e为新的目标节点,使用节点e和当前独立操作路径队列q作为参数触发递归处理(递归进行步骤1、步骤2和步骤3的处理)。在新的当前独立操作路径队列q1末尾追加c,判定c在当前独立操作路径队列q1中出现的次数。此时次数为2,可判定在q1中,节点c引起二次逆向回路。复制当前独立操作路径队列q1,并在队尾再次追加d,使得新队列持续追加节点到引起二次逆向回路的节点之前,即此时新队列q1(a

b

c

d

c

d),设置d为新的目标节点,使用节点d和队列q1作为参数触发递归处理(递归进行步骤1、步骤2和步骤3的处理)。
[0079]
循环执行上述步骤,即:
[0080]
步骤1:入参为节点d和当前独立操作路径队列q1(此时队列中有a

b

c

d

c

d),从起始节点d开始,对节点d有效等价类的后续节点集合进行去重操作,得到当前节点d的后续目标节点集合{e,c}。
[0081]
步骤2:遍历后续目标节点集合{e,c},根据集合的数量复制当前独立操作路径队列q1(此时队列q1中有a

b

c

d

c

d)和当前独立操作路径队列q2(此时队列q2中有a

b

c

d

c

d)。在当前独立操作路径队列q1末尾追加e,判断e在当前独立操作路径队列q1中出现的次数。此时次数为1,设置节点e为新的目标节点,使用节点e和当前独立操作路径队列q1作为参数触发递归处理(递归进行步骤1、步骤2和步骤3的处理)。在新的当前独立操作路径队列q2末尾追加c,判定c在分支队列q2中出现的次数。此时次数为大于2,可判定q2为死循环分支,q2被舍弃。
[0082]
循环执行上述步骤,即:
[0083]
步骤1:入参为节点e和当前独立操作路径队列q1(此时当前独立操作路径队列中有a

b

c

d

c

d

e),从起始节点e开始,对节点e有效等价类的后续节点集合进行去重操作,得到当前节点e的后续目标节点集合{}。
[0084]
步骤3:没有后续节点,判断当前独立操作路径q1在独立操作路径的集合中不存在,也即当前独立操作路径q1有效,可以把q1加入到对应的独立操作路径的集合中。
[0085]
循环执行上述步骤,即:
[0086]
步骤1:入参为节点e和当前独立操作路径队列q(此时队列中有a

b

c

d

e),从起始节点e开始,对节点e有效等价类的后续节点集合进行去重操作,得到当前e节点的后续目标节点集合{}。
[0087]
步骤3:没有后续节点,判断当前独立操作路径q在独立操作路径的集合中不存在,也即当前独立操作路径q有效,可以把q加入到对应的独立操作路径的集合中。
[0088]
最终得到独立操作路径的集合{q、q1},其中q{a

b

c

d

e},q1{a

b

c

d

c

d

e}。
[0089]
s240、针对当前独立操作路径,确定所述当前独立操作路径中各测试案例节点的有效等价类。
[0090]
相应的,在获取到操作路径关联信息之后,即可依次遍历每条独立操作路径,并针
对前独立操作路径,确定当前独立操作路径中各测试案例节点的有效等价类,以根据测试案例节点的有效等价类生成当前独立操作路径匹配的测试正案例。
[0091]
s250、根据所述测试案例节点的有效等价类、所述当前独立操作路径的操作步骤顺序生成所述当前独立操作路径匹配的至少一个测试正案例。
[0092]
具体的,可以根据当前独立操作路径中各测试案例节点的有效等价类、当前独立操作路径的操作步骤顺序生成当前独立操作路径匹配的至少一个测试正案例。
[0093]
在本发明的一个可选实施例中,所述根据所述测试案例节点的有效等价类、所述当前独立操作路径的操作步骤顺序生成所述当前独立操作路径匹配的至少一个测试正案例,可以包括:确定所述当前独立操作路径中各所述测试案例节点的有效等价类的数量;将所述有效等价类的数量中数值最大的有效等价类对应的测试案例节点确定为第一目标测试案例节点;以所述第一目标测试案例节点为基准,确定所述第一目标测试案例节点的目标有效等价类;根据所述目标有效等价类和所述当前独立操作路径的操作步骤顺序依次遍历确定非第一目标测试案例节点的有效等价类;组合各所述测试案例节点的有效等价类,生成所述当前独立操作路径匹配的至少一个所述测试正案例。
[0094]
其中,第一目标测试案例节点可以是当前独立操作路径中有效等价类的数量最多的测试案例节点。目标有效等价类可以是能够生成测试案例的有效等价类。非第一目标测试案例节点即为当前独立操作路径中除第一目标测试案例节点之外的其他测试案例节点。
[0095]
具体的,针对当前独立操作路径,可以确定每个测试案例节点的有效等价类的数量。可以理解的是,测试案例流程图源文件中可以包括适配的业务规则,因此,可以根据当前独立操作路径适配的业务规则确定每个测试案例节点的有效等价类的数量。进一步的,从各测试案例节点中筛选出有效等价类数量最多的测试案例节点作为第一目标测试案例节点,并以第一目标测试案例节点为基准依次生成当前独立操作路径匹配的各个测试正案例。具体的,可以从第一目标测试案例节点的有效等价类筛选目标有效等价类,并以每个目标有效等价类为基准按照当前独立操作路径的操作步骤顺序依次遍历确定非第一目标测试案例节点的各个有效等价类,并组合各测试案例节点的有效等价类,生成当前独立操作路径匹配的各个测试正案例。可选的,目标有效等价类可以是第一目标测试案例节点的全部有效等价类,也可以是按有效等价类的权重赋值筛选的部分有效等价类,本发明实施例对此并不进行限制。
[0096]
可选的,第一目标测试案例节点的有效等价类可以根据下述公式确定:tc1=max[等价类(规则1),等价类(规则2),
……
,等价类(规则n)]。其中,tc1表示各测试案例节点,其中,有效等价类数量最多的tc1可以确定为第一目标测试案例节点。
[0097]
在一个具体的例子中,假设当前独立操作路径为a—b—c。其中,节点a有2个有效等价类a1和a2,节点b有3个有效等价类b1、b2和b3,节点c有1个有效等价类c。则节点b为第一目标测试案例节点。假设节点b的目标有效等价类为b1、b2和b3,则,当节点b取b1时,生成的测试正案例可以为a(取a1)—b(取b1)—c(取c)和a(取a2)—b(取b1)—c(取c);当节点b取b2时,生成的测试正案例可以为a(取a1)—b(取b2)—c(取c)和a(取a2)—b(取b2)—c(取c);当节点b取b3时,生成的测试正案例可以为a(取a1)—b(取b3)—c(取c)和a(取a2)—b(取b3)—c(取c)。
[0098]
需要说明的是,如果有两个以上的测试案例节点同时包括数量最大的有效等价
类,则可以选择其中任一一个测试案例节点确定为第一目标测试案例节点。示例性的,在上述示例中,假设节点a有3个有效等价类a1和a2,节点b有3个有效等价类b1、b2和b3,节点c有1个有效等价类c。则可以将节点a或节点b确定为第一目标测试案例节点。
[0099]
上述技术方案,通过按照当前独立操作路径,将当前独立操作路径中每一个业务规则中可选的有效等价类进行枚举,进而组合产生测试正案例。当第一目标测试案例节点中的有效等价类全部可以作为目标有效等价类时,当前独立操作路径的测试正案例的数量与第一目标测试案例节点的有效等价类的数量相同。
[0100]
在本发明的一个可选实施例中,所述确定所述第一目标测试案例节点的目标有效等价类,可以包括:确定所述第一目标测试案例节点中各有效等价类的权重;按照所述第一目标测试案例节点中各有效等价类的权重由大到小的顺序依次选择所述第一目标测试案例节点的有效等价类,并确定为所述目标有效等价类;所述根据所述目标有效等价类和所述当前独立操作路径的操作步骤顺序依次遍历确定非第一目标测试案例节点的有效等价类,可以包括:确定各所述非第一目标测试案例节点中各有效等价类的权重;按照所述有效等价类的权重由大到小的顺序依次选择各所述非第一目标测试案例节点的有效等价类。
[0101]
在本发明实施例中,为了保证能够对高风险内容生成针对性的测试案例,还可以对各有效等价类设置权重。相应的,在确定目标有效等价类时,可以取第一目标测试案例节点有效等价类集合中根据等价类权重倒序后的n(n为当前案例数量循环的索引)个有效等价类分别作为目标有效等价类。同理,确定非第一目标测试案例节点的有效等价类时,也可以取非第一目标测试案例节点的有效等价类集合中根据等价类权重倒序后的第m%(当前独立操作路径的在某一目标有效等价类分支下需要生成的测试正案例数量])个有效等价类。也即,本发明实施例所提供的测试案例生成方法支持自定义权重来引导测试案例生成的等价类使用倾向度。
[0102]
s260、判断全部所述独立操作路径均处理完毕,若是,则执行s280,否则执行s270。
[0103]
s270、更新当前独立操作路径,并返回执行s240。
[0104]
s280、结束测试正案例生成流程。
[0105]
上述技术方案,通过利用独立操作路径中各测试案例节点有效等价类和当前独立操作路径的操作步骤顺序生成各独立操作路径匹配的至少一个测试正案例,实现了自动生成测试正案例,降低测试案例开发成本,提升快速测试交付能力,提高测试案例准备效率。
[0106]
实施例三
[0107]
图4是本发明实施例三提供的一种测试案例生成方法的流程图,本实施例以上述实施例为基础进行具体化,在本实施例中,给出了根据所述测试案例流程图解析结果自动生成测试反案例的多种具体可选的实施方式。相应的,如图4所示,本实施例的方法可以包括:
[0108]
s310、获取测试案例流程图源文件。
[0109]
s320、对所述测试案例流程图源文件进行解析,得到测试案例流程图解析结果。
[0110]
s330、根据所述测试案例流程图解析结果确定操作路径关联信息;其中,所述操作路径关联信息包括独立操作路径、独立操作路径的操作步骤顺序和操作路径数量。
[0111]
在本发明实施例中,计算机设备在利用测试案例流程图解析结果生成测试反案例之前,同样可以首先根据测试案例流程图解析结果确定独立操作路径、独立操作路径的操
作步骤顺序和操作路径数量等操作路径关联信息,以根据操作路径关联信息获取各操作路径的具体信息。具体的,可以根据遍历算法获取每个独立操作路径的操作步骤顺序和操作路径数量。
[0112]
在本发明的一个可选实施例中,所述根据所述测试案例流程图解析结果确定操作路径关联信息,可以包括:确定当前测试案例节点以及所述当前测试案例节点有效等价类的后续测试案例节点集合;对所述后续测试案例节点集合进行节点去重操作,得到后续目标节点集合;遍历各所述后续目标节点集合,依次生成具有操作步骤顺序的独立操作路径。
[0113]
在本发明实施例中,生成独立操作路径的过程具体可以是:首先从测试案例流程图的起始的测试案例节点开始,依次遍历各测试案例节点确定当前测试案例节点。在当前测试案例节点的基础上,确定当前测试案例节点有效等价类的后续测试案例节点集合。可以理解的是,当前测试案例节点有效等价类的后续测试案例节点集合中可能存在重复的节点,因此需要对后续测试案例节点集合进行节点去重操作,得到后续目标节点集合。相应的,得到后续目标节点集合之后,即可遍历各后续目标节点集合,依次生成具有操作步骤顺序的独立操作路径。
[0114]
在一个具体的例子中,假设测试案例流程图中共包括a、b、c和d四个测试案例节点,节点a具有5个有效等价类。相应的,当节点a选择其中2个有效等价类中的任意一个时,其对应的测试案例节点以及测试案例节点流转关系具体可以是:a—b—d。当节点a选择另外3个有效等价类中的任意一个时,其对应的测试案例节点以及测试案例节点流转关系具体可以是:a—c—d。如果节点a为当前测试案例节点,则节点a的有效等价类的后续测试案例节点集合为[b,d,c,d]。由此可见,该后续测试案例节点集合为[b,d,c,d]中存在重复的节点d,因此可以对节点d进行去重操作,得到后续目标节点集合[b,d,c]。进一步的,可以根据节点a和节点a的后续目标节点集合[b,d,c]依次生成具有操作步骤顺序的独立操作路径:a—b—d和a—c—d。
[0115]
在本发明的一个可选实施例中,所述遍历各所述后续目标节点集合,依次生成具有操作步骤顺序的独立操作路径,可以包括:确定当前后续目标节点集合,并从所述当前后续目标节点集合中选择当前目标节点;在当前独立操作路径队列中追加所述当前目标节点;确定所述当前目标节点在所述当前独立操作路径队列中出现的次数;在所述当前目标节点在所述当前独立操作路径队列中出现的次数为1的情况下,根据所述当前目标节点和所述当前独立操作路径队列触发独立操作路径递归处理,直至生成完整的独立操作路径;在所述当前目标节点在所述当前独立操作路径队列中出现的次数大于或等于2的情况下,复制所述当前独立操作路径队列,在所述当前独立操作路径队列依次追加多个目标节点,直至确定追加的目标节点为所述当前目标节点本身,生成所述当前独立操作路径队列的至少一个逆向回路分支;拼接所述当前独立操作路径队列和各所述逆向回路分支,生成完整的独立操作路径。
[0116]
具体的,可以遍历各个后续目标节点集合,确定当前后续目标节点集合,并从当前后续目标节点集合中选择当前目标节点。可以理解的是,当前测试案例节点以及当前测试案例节点之前已添加的测试案例节点可以构成当前独立操作路径队列。因此,可以在当前独立操作路径队列的末尾追加当前目标节点。进一步的,判断当前目标节点在当前独立操作路径中出现的次数,若为1,则使用当前目标节点和当前独立操作路径队列作为参数触发
独立操作路径递归处理,直至生成完整的当前独立操作路径;若当前目标节点在当前独立操作路径中出现的次数大于或等于2,可判定当前目标节点引起二次逆向回路,则复制当前独立操作路径队列,并在当前独立操作路径队列的尾部持续追加多个目标节点,直到追加到引起二次逆向回路的当前目标节点,生成当前独立操作路径队列的至少一个逆向回路分支。进一步的,拼接当前独立操作路径队列和各逆向回路分支,生成完整的当前独立操作路径。若当前后续目标节点集合中无后续目标节点,则判断生成的独立操作路径是否存在,若不存在则将生成的独立操作路径添加到独立操作路径集合;若已存在则更新当前后续目标节点集合或当前测试案例节点,直至确定全部独立操作路径处理完毕。
[0117]
s340、针对当前独立操作路径,确定所述当前独立操作路径中各测试案例节点的无效等价类。
[0118]
相应的,在获取到操作路径关联信息之后,即可依次遍历每条独立操作路径,并针对前独立操作路径,确定当前独立操作路径中各测试案例节点的无效等价类,以根据测试案例节点的无效等价类生成当前独立操作路径匹配的测试反案例。
[0119]
s350、根据所述测试案例节点的无效等价类、所述当前独立操作路径的操作步骤顺序生成所述当前独立操作路径匹配的至少一个测试反案例。
[0120]
具体的,可以根据当前独立操作路径中各测试案例节点的无效等价类、当前独立操作路径的操作步骤顺序生成当前独立操作路径匹配的至少一个测试反案例。
[0121]
在本发明的一个可选实施例中,所述根据所述测试案例节点的无效等价类、所述当前独立操作路径的操作步骤顺序生成所述当前独立操作路径匹配的至少一个测试反案例,可以包括:依次遍历各所述测试案例节点的无效等价类,以确定目标无效等价类;以所述目标无效等价类为基准,根据所述当前独立操作路径的操作步骤顺序依次遍历确定各第二目标测试案例节点的有效等价类;其中,所述第二目标测试案例节点为所述当前独立操作路径的各所述测试案例节点中除所述目标无效等价类对应的测试案例节点之外的全部测试案例节点;组合所述目标无效等价类和各所述第二目标测试案例节点的有效等价类,生成所述当前独立操作路径匹配的至少一个所述测试反案例。
[0122]
其中,目标无效等价类可以是能够生成测试案例的无效等价类。
[0123]
可以理解的是,测试案例流程图源文件中可以包括适配的业务规则,因此,可以根据各独立操作路径适配的业务规则确定每个测试案例节点的无效等价类,以从各无效等价类中依次枚举选择其中一个无效等价类作为目标无效等价类。进一步的,以目标无效等价类为基准,将当前独立操作路径的各测试案例节点中除目标无效等价类对应的测试案例节点之外的全部测试案例节点作为第二目标测试案例节点,并根据当前独立操作路径的操作步骤顺序依次遍历确定各第二目标测试案例节点的有效等价类,进一步组合目标无效等价类和各第二目标测试案例节点的有效等价类,从而生成当前独立操作路径匹配的至少一个测试反案例。可以理解的是,当前独立操作路径生成的测试反案例的数量与适配的无效等价类的和数量相同。
[0124]
可选的,目标无效等价类可以根据下述公式确定:tc2=sum[等价类(规则1),等价类(规则2),
……
,等价类(规则n)]。其中,tc2表示各测试案例节点,其中,目标无效等价类可以是任意一个无效等价类。
[0125]
在一个具体的例子中,假设当前独立操作路径为a—b—c。其中,节点a有2个有效
等价类a1和a2,节点b有2个无效等价类b1和b2,节点c有1个有效等价类c。首先,将无效等价类b1确定为目标无效等价类,则,当节点b取b1时,生成的测试反案例可以为a(取a1)—b(取b1)—c(取c)和a(取a2)—b(取b1)—c(取c)。其次,将无效等价类b2确定为目标无效等价类,则,当节点b取b2时,生成的测试反案例可以为a(取a1)—b(取b2)—c(取c)和a(取a2)—b(取b2)—c(取c)。需要说明的是,部分业务场景下,当某一测试案例节点取其中一个无效等价类时,则操作路径会出现截止到该测试案例节点的情况。例如,当节点b取b1时,生成的测试反案例可以为a(取a1)—b(取b1)和a(取a2)—b(取b1)。
[0126]
在本发明的一个可选实施例中,所述根据所述当前独立操作路径的操作步骤顺序依次遍历确定各第二目标测试案例节点的有效等价类,可以包括:确定各所述第二目标测试案例节点中各有效等价类的权重;按照所述有效等价类的权重由大到小的顺序依次选择各所述第二目标测试案例节点的有效等价类。
[0127]
同理,在本发明实施例中,为了保证能够对高风险内容生成针对性的测试案例,在生成测试反案例时,也可以对各有效等价类设置权重。也即,可以确定各第二目标测试案例节点中各有效等价类的权重,并按照有效等价类的权重由大到小的顺序依次选择各第二目标测试案例节点的有效等价类。相应的,在按照有效等价类的权重由大到小的顺序依次选择各第二目标测试案例节点的有效等价类时,可以取第二目标测试案例节点的有效等价类集合中根据等价类权重倒序后的第m%(当前独立操作路径的在某一目标有效等价类分支下需要生成的测试正案例数量])个有效等价类。也即,本发明实施例所提供的测试案例生成方法支持自定义权重来引导测试案例生成的等价类使用倾向度。
[0128]
s360、判断全部所述独立操作路径均处理完毕,若是,则执行s380,否则执行s370。
[0129]
s370、更新当前独立操作路径,并返回执行s340。
[0130]
s380、结束测试正案例生成流程。
[0131]
在本发明的一个可选实施例中,在所述根据所述测试案例流程图解析结果自动生成至少一种类型的测试案例之后,还可以包括:汇总各所述独立操作路径的测试正案例和测试反案例;根据各所述测试正案例构建测试正案例集合,并确定所述测试正案例集合中包括的所述测试正案例的总数量;根据各所述测试反案例构建测试反案例集合,并确定所述测试反案例集合中包括的所述测试反案例的总数量。
[0132]
其中,测试正案例集合可以用于存储各测试正案例,测试反案例集合可以用于存储各测试反正案例。
[0133]
为了实现对测试案例的整合,在根据测试案例流程图解析结果自动生成至少一种类型的测试案例之后,还可以对测试案例进行归纳整理。具体的,可以汇总各独立操作路径的测试正案例和测试反案例,根据各测试正案例构建测试正案例集合,并确定测试正案例集合中包括的所述测试正案例的总数量。同时,根据各测试反案例构建测试反案例集合,并确定测试反案例集合中包括的所述测试反案例的总数量。
[0134]
具体的,每一条独立操作路径都能对应生成一组测试正案例,其数量分别为tc
正1
、tc
正2

……
、tc
正tp
,其中,tc
正1
表示第一条独立操作路径生成的测试正案例的数量,以此类推,tc
正tp
表示第tp条独立操作路径生成的测试正案例的数量。所以最终测试正案例的总数为:所形成的测试正案例集合为:其中,tcp表示第p条独立操作路径
生成的各测试正案例。
[0135]
同理,每一条独立操作路径都能对应生成一组测试反案例,其数量分别为tc
反1
、tc
反2

……
、tc
反tp
,其中,tc
反1
表示第一条独立操作路径生成的测试反案例的数量,以此类推,tc
反tp
表示第tp条独立操作路径生成的测试反案例的数量。所以最终测试反案例的总数为:所形成的测试反案例集合为:其中,tcq表示第q条独立操作路径生成的各测试反案例。
[0136]
上述技术方案,通过利用独立操作路径中各测试案例节点无效等价类和当前独立操作路径的操作步骤顺序生成各独立操作路径匹配的至少一个测试反案例,实现了自动生成测试反案例,降低测试案例开发成本,提升快速测试交付能力,提高测试案例准备效率。
[0137]
实施例四
[0138]
图5是本发明实施例四提供的一种测试案例生成方法的流程图,本实施例以上述实施例为基础进行具体化,在本实施例中,给出了根据所述测试案例流程图解析结果自动生成界面检查案例的多种具体可选的实施方式。相应的,如图5所示,本实施例的方法可以包括:
[0139]
s410、获取测试案例流程图源文件。
[0140]
s420、对所述测试案例流程图源文件进行解析,得到测试案例流程图解析结果。
[0141]
s430、遍历全部测试案例节点,确定配置有界面检查规则的测试案例节点作为第三目标测试案例节点。
[0142]
其中,界面检查规则可以是对某一测试案例节点在界面的输入输出进行检查的规则。示例性的,界面检查规则的内容例如可以是:检查某一测试案例节点的边界值、输入框等元素是否存在,或检查某一测试案例节点的输入输出项是否匹配等。界面检查规则可以根据具体的业务类型确定,本发明实施例并不对界面检查规则的具体内容进行限定。第三目标测试案例节点可以是配置有界面检查规则的测试案例节点。
[0143]
在本发明实施例中,在生成界面检查案例时,可以遍历各测试案例节点,将配置有界面检查规则的测试案例节点筛选出来作为第三目标测试案例节点。
[0144]
s440、根据所述测试案例流程图解析结果确定所述第三目标测试案例节点的界面检查项。
[0145]
其中,界面检查项可以是用于进行界面检查的选项,如边界值、输入框以及输入输出映射关系等。
[0146]
s450、根据所述界面检查项生成所述第三目标测试案例节点对应的至少一个界面检查案例。
[0147]
具体的,可以针对每个配置了界面检查规则的测试案例节点的界面检查项进行遍历,具体生成对应测试案例节点的界面检查案例的操作步骤,每个界面检查项可以对应一个操作步骤。一个或多个操作步骤可以对应生成一个界面检查案例。
[0148]
在一个具体的例子中,可以根据所述测试案例流程图解析结果确定第三目标测试案例节点的输入输出项,并建立第三目标测试案例节点的输入输出项之间的映射关系,以生成第三目标测试案例节点对应的至少一个界面检查案例。示例性的,界面检查案例例如可以是:输入项为出生年月对应的输出项为年龄,则将输入项:出生年月

输出项:年龄作为
一个界面检查案例。
[0149]
可选的,在生成第三目标测试案例节点对应的至少一个界面检查案例之后,为了实现对测试案例的整合,同样可以构建界面检查案例集合,并将生成的各界面检查案例添加至界面检查案例集合中。
[0150]
图6是本发明实施例四提供的一种测试案例生成方法的流程示意图。在一个具体的例子中,如图6所示,对于某测试需求,从交易的输入项开始,采用编制测试分析流程图的方式对交易事务功能的操作界面进行梳理,定义操作步骤和业务规则的逻辑关系,通过规格化的思维导图对业务规则进行等价类划分。在等价类分析中各等价项的相关信息,记录了测试要素的详细信息。测试分析流程图包含了测试操作的顺序要求、路径关系、以及与各业务规则、界面检查规则之间的关联关系,并采用模型xml文件的方式存储。计算机设备可以对包括。测试分析流程图的模型xml文件进行快速遍历和分支拆解处理,实现模型解析过程。进一步的,计算机设备可以根据解析结果获取测试操作的顺序要求、路径关系、以及与各业务规则、界面检查规则之间的关联关系等,并根据获取的这些信息采用正逆向多分支流程图遍历算法、正案例生成算法、反案例生成算法以及界面检查案例生成算法生成各种类型的测试案例:正案例、反案例和界面检查案例。同时,测试案例生成方法支持生成案例的自动去除冗余处理,确保案例生成的唯一性;还可以支持自定义权重来引导案例生成的等价类使用倾向度;并支持自定义界面检查规则来动态拓展界面检查案例的生成颗粒度。
[0151]
本发明实施例所提供的测试案例生成方法通过采用多分支流程图遍历算法,降低了对测试人员经验的依赖,避免了人为的疏漏,测试需求覆盖率高达90%以上。同时,通过采用案例去重算法,有效减少冗余案例,降低人工去重及后续执行成本。测试案例生成方法支持权重设置,可以对高风险内容进行更有针对性的测试。测试案例生成方法还具有良好的通用性,可以适用于大多数类型的功能测试项目。测试案例准备效率较人工编写方式提升约30%。在生成测试案例的过程中,可以通过采用标准话术提升测试案例的规范性和可读性。
[0152]
需要说明的是,以上各实施例中各技术特征之间的任意排列组合也属于本发明的保护范围。
[0153]
实施例五
[0154]
图7是本发明实施例五提供的一种测试案例生成装置的示意图,如图7所示,所述装置包括:测试案例流程图源文获取模块510、测试案例流程图解析结果获取模块520以及测试案例生成模块530,其中:
[0155]
测试案例流程图源文获取模块510,用于获取测试案例流程图源文件;其中,所述测试案例流程图源文件包括测试案例节点、测试案例节点属性以及测试案例节点流转关系;
[0156]
测试案例流程图解析结果获取模块520,用于对所述测试案例流程图源文件进行解析,得到测试案例流程图解析结果;
[0157]
测试案例生成模块530,用于根据所述测试案例流程图解析结果自动生成至少一种类型的测试案例;其中,所述测试案例的类型包括测试正案例、测试反案例以及界面检查案例。
[0158]
本发明实施例通过对获取的包括测试案例节点、测试案例节点属性以及测试案例
节点流转关系的测试案例流程图源文件进行解析,得到测试案例流程图解析结果,进一步根据测试案例流程图解析结果自动生成测试正案例、测试反案例以及界面检查案例等多种类型的测试案例,解决现有测试案例生成方法存在的测试案例生成效率低、测试案例支持类型单一、方案简单以及不具备通用性等问题,能够自动生成全类型的测试案例,降低测试案例开发成本,提升快速测试交付能力,提高测试案例准备效率、测试覆盖度以及测试通用性。
[0159]
可选的,测试案例流程图解析结果获取模块520具体用于:确定测试案例流程图关联的至少一个所述测试案例节点;确定各所述测试案例节点之间的流转关系;确定各所述测试案例节点支持的要素类型;其中,所述要素类型包括有效等价类和无效等价类。
[0160]
可选的,测试案例生成模块530具体用于:根据所述测试案例流程图解析结果确定操作路径关联信息;其中,所述操作路径关联信息包括独立操作路径、独立操作路径的操作步骤顺序和操作路径数量;针对当前独立操作路径,确定所述当前独立操作路径中各测试案例节点的有效等价类;根据所述测试案例节点的有效等价类、所述当前独立操作路径的操作步骤顺序生成所述当前独立操作路径匹配的至少一个测试正案例;更新当前独立操作路径,并返回执行针对当前独立操作路径,确定所述当前独立操作路径中各测试案例节点的有效等价类的操作,直至确定全部所述独立操作路径均处理完毕。
[0161]
可选的,测试案例生成模块530具体用于:确定所述当前独立操作路径中各所述测试案例节点的有效等价类的数量;将所述有效等价类的数量中数值最大的有效等价类对应的测试案例节点确定为第一目标测试案例节点;以所述第一目标测试案例节点为基准,确定所述第一目标测试案例节点的目标有效等价类;根据所述目标有效等价类和所述当前独立操作路径的操作步骤顺序依次遍历确定非第一目标测试案例节点的有效等价类;组合各所述测试案例节点的有效等价类,生成所述当前独立操作路径匹配的至少一个所述测试正案例。
[0162]
可选的,测试案例生成模块530具体用于:确定所述第一目标测试案例节点中各有效等价类的权重;按照所述第一目标测试案例节点中各有效等价类的权重由大到小的顺序依次选择所述第一目标测试案例节点的有效等价类,并确定为所述目标有效等价类;确定各所述非第一目标测试案例节点中各有效等价类的权重;按照所述有效等价类的权重由大到小的顺序依次选择各所述非第一目标测试案例节点的有效等价类。
[0163]
可选的,测试案例生成模块530具体用于:根据所述测试案例流程图解析结果确定操作路径关联信息;其中,所述操作路径关联信息包括独立操作路径、独立操作路径的操作步骤顺序和操作路径数量;针对当前独立操作路径,确定所述当前独立操作路径中各测试案例节点的无效等价类;根据所述测试案例节点的无效等价类、所述当前独立操作路径的操作步骤顺序生成所述当前独立操作路径匹配的至少一个测试反案例;更新当前独立操作路径,并返回执行针对当前独立操作路径,确定所述当前独立操作路径中各测试案例节点的无效等价类的操作,直至确定全部所述独立操作路径均处理完毕。
[0164]
可选的,测试案例生成模块530具体用于:依次遍历各所述测试案例节点的无效等价类,以确定目标无效等价类;以所述目标无效等价类为基准,根据所述当前独立操作路径的操作步骤顺序依次遍历确定各第二目标测试案例节点的有效等价类;其中,所述第二目标测试案例节点为所述当前独立操作路径的各所述测试案例节点中除所述目标无效等价
类对应的测试案例节点之外的全部测试案例节点;组合所述目标无效等价类和各所述第二目标测试案例节点的有效等价类,生成所述当前独立操作路径匹配的至少一个所述测试反案例。
[0165]
可选的,测试案例生成模块530具体用于:确定各所述第二目标测试案例节点中各有效等价类的权重;按照所述有效等价类的权重由大到小的顺序依次选择各所述第二目标测试案例节点的有效等价类。
[0166]
可选的,测试案例生成模块530具体用于:汇总各所述独立操作路径的测试正案例和测试反案例;根据各所述测试正案例构建测试正案例集合,并确定所述测试正案例集合中包括的所述测试正案例的总数量;根据各所述测试反案例构建测试反案例集合,并确定所述测试反案例集合中包括的所述测试反案例的总数量。
[0167]
可选的,测试案例生成模块530具体用于:遍历全部测试案例节点,确定配置有界面检查规则的测试案例节点作为第三目标测试案例节点;根据所述测试案例流程图解析结果确定所述第三目标测试案例节点的界面检查项;根据所述界面检查项生成所述第三目标测试案例节点对应的至少一个界面检查案例。
[0168]
可选的,测试案例生成模块530具体用于:确定当前测试案例节点以及所述当前测试案例节点有效等价类的后续测试案例节点集合;对所述后续测试案例节点集合进行节点去重操作,得到后续目标节点集合;遍历各所述后续目标节点集合,依次生成具有操作步骤顺序的独立操作路径。
[0169]
可选的,测试案例生成模块530具体用于:确定当前后续目标节点集合,并从所述当前后续目标节点集合中选择当前目标节点;在当前独立操作路径队列中追加所述当前目标节点;确定所述当前目标节点在所述当前独立操作路径中出现的次数;在所述当前目标节点在所述当前独立操作路径中出现的次数为1的情况下,根据所述当前目标节点和所述当前独立操作路径队列触发独立操作路径递归处理,直至生成完整的当前独立操作路径;在所述当前目标节点在所述当前独立操作路径中出现的次数等于2的情况下,复制所述当前独立操作路径队列,在所述当前独立操作路径队列依次追加多个目标节点,直至确定追加的目标节点为所述当前目标节点本身,生成所述当前独立操作路径队列的至少一个逆向回路分支;拼接所述当前独立操作路径队列和各所述逆向回路分支,生成完整的当前独立操作路径;在所述当前目标节点在所述当前独立操作路径中出现的次数大于2的情况下,确定所述当前独立操作路径为死循环路径,并删除所述当前独立操作路径。
[0170]
可选的,测试案例生成装置还包括:案例标识确定模块,用于确定各所述测试案例的案例标识;案例内容唯一编码生成模块,用于根据各所述测试案例的案例内容生成各所述测试案例的案例内容唯一编码;去重处理模块,用于根据各所述案例标识和各所述案例内容唯一编码对各所述测试案例进行去重处理。
[0171]
上述测试案例生成装置可执行本发明任意实施例所提供的测试案例生成方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的测试案例生成方法。
[0172]
由于上述所介绍的测试案例生成装置为可以执行本发明实施例中的测试案例生成方法的装置,故而基于本发明实施例中所介绍的测试案例生成方法,本领域所属技术人员能够了解本实施例的测试案例生成装置的具体实施方式以及其各种变化形式,所以在此
对于该测试案例生成装置如何实现本发明实施例中的测试案例生成方法不再详细介绍。只要本领域所属技术人员实施本发明实施例中测试案例生成方法所采用的装置,都属于本技术所欲保护的范围。
[0173]
实施例六
[0174]
图8为本发明实施例六提供的一种计算机设备的结构示意图。图8示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图8显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0175]
如图8所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器16,存储器28,连接不同系统组件(包括存储器28和处理器16)的总线18。
[0176]
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industry standard architecture,isa)总线,微通道体系结构(micro channel architecture,mca)总线,增强型isa总线、视频电子标准协会(video electronics standards association,vesa)局域总线以及外围组件互连(peripheral component interconnect,pci)总线。
[0177]
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0178]
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(random access memory,ram)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如只读光盘(compact disc

read only memory,cd

rom)、数字视盘(digital video disc

read only memory,dvd

rom)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0179]
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0180]
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(input/output,i/o)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(local area network,lan),广域网wide area network,wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图8中未示
出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、(redundant arrays of independent disks,raid)系统、磁带驱动器以及数据备份存储系统等。
[0181]
处理器16通过运行存储在存储器28中的程序,从而执行各种功能应用以及数据处理,实现本发明实施例所提供的测试案例生成方法:获取测试案例流程图源文件;其中,所述测试案例流程图源文件包括测试案例节点、测试案例节点属性以及测试案例节点流转关系;对所述测试案例流程图源文件进行解析,得到测试案例流程图解析结果;根据所述测试案例流程图解析结果自动生成至少一种类型的测试案例;其中,所述测试案例的类型包括测试正案例、测试反案例以及界面检查案例。
[0182]
实施例七
[0183]
本发明实施例七还提供一种存储计算机程序的计算机存储介质,所述计算机程序在由计算机处理器执行时用于执行本发明上述实施例任一所述的测试案例生成方法:获取测试案例流程图源文件;其中,所述测试案例流程图源文件包括测试案例节点、测试案例节点属性以及测试案例节点流转关系;对所述测试案例流程图源文件进行解析,得到测试案例流程图解析结果;根据所述测试案例流程图解析结果自动生成至少一种类型的测试案例;其中,所述测试案例的类型包括测试正案例、测试反案例以及界面检查案例。
[0184]
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(read only memory,rom)、可擦式可编程只读存储器((erasable programmable read only memory,eprom)或闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0185]
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0186]
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、射频(radio frequency,rf)等等,或者上述的任意合适的组合。
[0187]
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通
过因特网连接)。
[0188]
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1