一种基于用例依赖关系自动生成测试调度的方法和装置的制造方法

文档序号:10471040阅读:373来源:国知局
一种基于用例依赖关系自动生成测试调度的方法和装置的制造方法
【专利摘要】本发明公开了一种基于用例依赖关系自动生成测试调度的方法和装置,其中所述方法包括:获取预设测试任务所需的测试用例;获取测试用例之间的依赖关系及前置依赖类型,并根据所述前置依赖类型,为同顶级的多个测试用例设置优先级,所述同顶级表示依赖于同一个前置用例;根据测试用例间的依赖关系以及测试用例的优先级,生成测试调度。本发明实施例提供的自动生成测试调度的方法通过管理简单的用例关系和前置依赖类型,即可自动生成测试调度,同时可消除测试过程中的缺陷误报,提升调度执行的可靠性,提升测试结果分析的效率,进而提高自动化测试工作的准确性与效率。
【专利说明】
-种基于用例依赖关系自动生成测试调度的方法和装置
技术领域
[0001] 本发明设及软件测试技术及自动化测试技术领域,尤其设及一种基于用例依赖关 系自动生成测试调度的方法和装置。
【背景技术】
[0002] 随着计算机软件自动化测试的深入开展,自动化测试的需求、用例、测试任务调度 均日趋增多且复杂多样,而由于自动化测试对测试环境与测试数据的严格要求,导致关于 测试执行效率的一些问题变得日趋严重,亟待解决;
[0003] 1、用例的选择与执行顺序排序靠人工,操作复杂且易导致调度执行成功率不高, 且对测试人员的要求也比较高。而在执行人员非用例编写或设计人员的情况下,困难就更 大。
[0004] 2、自动化测试产生大量缺陷误报,自动化测试准确性受质疑。自动化测试中每个 用例失败都会报一个异常,但实际上运些用例失败可能只是部分测试用例执行失败导致的 连环失败,大量的缺陷误报必将引起对自动化测试的正确性及有效性怀疑,阻碍自动化测 试的继续推广与应用。
[0005] 3、重新调度执行失败用例困难,由于用例需要特定的前置条件,仅仅执行失败的 用例调度成功率不高,而执行整个调度花费时间又长,所W如果能自动查找将调度中失败 的用例及其依赖用例组成一个新的测试调度,将节省大量的时间与精力。
[0006] 对于测试用例调度生成与缺陷误报的消除,目前的解决方案主要存在W下问题:
[0007] (1)对调度中用例的选择与排序不能达到完全的自动化
[0008] (2)测试执行人员需要了解用例设计的整体结构与数据关系。
[0009] (3)不能实现基于业务级别的缺陷误报消除。

【发明内容】

[0010] 为了解决上述技术问题,本发明提供了一种基于用例依赖关系自动生成测试调度 的方法和装置,解决了目前测试调度中用例的选择和排序不能完全达到自动化的问题。
[0011] 依据本发明的一个方面,提供了一种基于用例依赖关系自动生成测试调度的方 法,包括:
[0012] 获取预设测试任务所需的测试用例;
[0013] 获取测试用例之间的依赖关系及前置依赖类型,并根据所述前置依赖类型,为同 顶级节点的多个测试用例设置优先级,所述同顶级表示依赖于同一个前置用例;
[0014] 根据测试用例间的依赖关系W及测试用例的优先级,生成测试调度。
[0015] 可选地,所述测试用例之间的依赖关系包括前置、后置和并行,所述测试用例之 间的前置依赖类型包括前置无关、前置更新和前置互斥,前置无关表示后置用例的执行不 影响前置用例的执行结果,前置更新表示后置用例的执行会导致前置用例的执行结果的变 更,前置互斥表示后置用例的执行会导致前置用例的执行结果消失。
[0016] 可选地,所述测试用例的优先级从高到低顺序依次为前置无关、前置更新和前置 互斥。
[0017] 可选地,所述根据测试用例间的依赖关系W及测试用例的优先级,生成测试调度 包括:
[0018] 根据测试用例间的依赖关系,形成一个有向无环图;
[0019] 根据测试用例的优先级,对所述有向无环图中的节点进行排序,生成测试调度,其 中排序规则为:将所述有向无环图中的前置节点排序在后置节点之前,具有同一个前置节 点的多个后置节点按照优先级从高到底依次排列。
[0020] 可选地,根据测试用例的优先级,对所述有向无环图中的节点进行排序,生成测试 调度包括:
[0021] 在所述有向无环图中查找依赖度为0的节点,加入找,其中依赖度为0的节点表示 该节点的执行不依赖其他用例。
[0022] 多次执行生成测试调度流程,直到所述找为空,队列中的测试用例顺序即为自动 生成的测试调度;
[0023] 所述生成测试调度流程包括:
[0024] 取所述找的最后一个节点,加入队列;
[00巧]在所述有向无环图中按照优先级从低到高顺序依次查找所述最后一个节点的后 置节点,加入所述找中。
[0026] 本发明的实施例还提供了一种基于用例依赖关系自动生成测试调度的装置,包 括:
[0027] 获取模块,用于获取预设测试任务所需的测试用例;
[0028] 优先级设置模块,用于获取测试用例之间的依赖关系及前置依赖类型,并根据所 述前置依赖类型,为同顶级节点的多个测试用例设置优先级;
[0029] 生成模块,用于根据测试用例间的依赖关系W及测试用例的优先级,生成测试调 度。
[0030] 可选地,所述测试用例之间的依赖关系包括前置、后置和并行,所述测试用例之 间的前置依赖类型包括前置无关、前置更新和前置互斥,前置无关表示后置用例的执行不 影响前置用例的执行结果,前置更新表示后置用例的执行会导致前置用例的执行结果的变 更,前置互斥表示后置用例的执行会导致前置用例的执行结果消失。
[0031] 可选地,所述测试用例的优先级从高到低顺序依次为前置无关、前置更新和前置 互斥。
[0032] 可选地,所述生成模块包括:
[0033] 形成单元,用于根据测试用例间的依赖关系,形成一个有向无环图;
[0034] 排序单元,用于根据测试用例的优先级,对所述有向无环图中的节点进行排序,生 成测试调度,其中排序规则为:将所述有向无环图中的前置节点排序在后置节点之前,具有 同一个前置节点的多个后置节点按照优先级从高到底依次排列。
[0035] 可选地,所述排序单元包括:
[0036] 查找子单元,用于在所述有向无环图中查找依赖度为0的节点,加入找,其中依赖 度为0的节点表示该节点的执行不依赖其他用例。
[0037] 执行子单元,用于多次执行生成测试调度流程,直到所述找为空,队列中的测试用 例顺序即为自动生成的测试调度;
[0038] 所述生成测试调度流程包括:
[0039] 取所述找的最后一个节点,加入队列;
[0040] 在所述有向无环图中按照优先级从低到高顺序依次查找所述最后一个节点的后 置节点,加入所述找中。
[0041] 本发明的实施例的有益效果是:本发明实施例提供的一种基于用例依赖关系自动 生成测试调度的方法通过管理简单的用例依赖关系,利用测试用例间的依赖关系及前置依 赖类型,根据测试任务所需的测试用例查找出与其有依赖关系的测试用例,根据测试用例 间的前置依赖类型为同顶级节点的多个测试用例设置优先级,根据测试用例间的依赖关系 及测试用例的优先级自动生成高可靠性的调度,同理也可W根据调度中的失败用例,达到 重新调度执行失败用例的目的,同时可W消除缺陷误报,提升调度执行的可靠性,提升测试 结果分析的效率,进而提高自动化测试工作的准确性与效率。
【附图说明】
[0042] 图1表示本发明所述的自动生成测试调度的方法流程图;
[0043] 图2表示本发明所述的W系统用户管理功能的测试用例为例形成的有向无环图;
[0044] 图3表示图1中步骤1的具体实现流程图;
[0045] 图4表示本发明所述的自动生成测试调度的装置结构图。
【具体实施方式】
[0046] 为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合具体实施 例及附图进行详细描述。
[0047] 本发明实施例通过指定待测试任务中的关键用例,自动查找用例间的依赖关系和 前置依赖类型,得到测试任务所需测试用例,并对此进行排序,生成测试调度。
[0048] 如图1所示,本发明的实施例提供了一种基于用例依赖关系自动生成测试调度的 方法,包括:
[0049] 步骤10,获取预设测试任务所需的测试用例;
[0050] 步骤11,获取测试用例之间的依赖关系及前置依赖类型,并根据所述前置依赖类 型,为同顶级节点的多个测试用例设置优先级;
[0051] 步骤12,根据测试用例间的依赖关系W及测试用例的优先级,生成测试调度。 [005引在本发明的具体实施例中,在自动化测试任务中,首先获取自动化测试任务所需 的关键用例,然后获取测试用例间的依赖关系和前置依赖类型,根据关键用例和测试用例 的依赖关系,可W获取到测试任务的所有测试用例,根据测试用例间的前置依赖类型,为同 顶级的多个测试用例设置优先级。
[0053] 在本发明的具体实施例中,其中测试用例间依赖关系包括前置、后置和并行,若第 二用例与第Ξ用例的执行都需要依赖第一用例,则第一用例是第二用例和第Ξ用例的前置 用例,第二用例和第Ξ用例则为第一用例的后置用例,第二用例和第Ξ用例为并行用例,第 二用例和第Ξ用例为同顶级的测试用例,也即依赖于同一个前置用例,其中,测试用例之间 的前置依赖类型包括前置无关、前置更新和前置互斥,前置无关表示后置用例的执行不影 响前置用例的执行结果,前置更新表示后置用例的执行会导致前置用例的执行结果的变 更,执行结果的变更表示执行结果数值变更或记录状态变更,前置互斥表示后置用例的执 行会导致前置用例的执行结果消失,执行结果消失表示执行结果数值或记录的消失或状态 结束,具有同一个前置用例的测试用例的优先级从高到低顺序为前置无关、前置更新和前 置互斥。
[0054] 在本发明的具体实施例中,获取测试用例依赖关系W系统用户管理功能为例,如 存在W下用例:登录、退出、用户添加、用户修改、新增用户查询,修改后用户查询、用户删 除,各功能编写一个用例,预期结果为受理成功,新增用户查询为查询新增后的账号是否存 在。修改后用户查询为查询修改用户是否成功。定义:如果用例1在执行之前必须执行用 例2,那么用例2是用例1的前置用例,逻辑表达式为Coverage!;用例2},系统用户管理功 能的测试用例的依赖关系如表1所示:
[00 巧] 阳056]
[0057] 表 1
[0058] 在本发明的上述实施例中,根据测试用例间的依赖关系W及测试用例的优先级, 生成测试调度包括:
[0059] 根据测试用例间的依赖关系,形成一个有向无环图;
[0060] 根据测试用例的优先级和依赖关系,对所述有向无环图中的节点进行排序,生成 测试调度,其中排序规则为:将所述有向无环图中的前置节点排序在后置节点之前,具有同 一个前置节点的多个后置节点按照优先级从高到底依次排列。
[0061] 在本发明的具体实施例中,如表1中测试用例间的依赖关系有W下特点,1、存在 依赖关系,2、有至少一个测试用例不依赖其他测试用例,3、不存在闭环的依赖关系。与有向 无环图的特点一致,因此每一个测试用例映射为一个节点,依赖关系映射为一个带有箭头 的直线,将测试用例的依赖关系映射成一个有向无环图,系统用户管理功能的测试用例映 射的有向无环图如图2所示。根据测试用例的优先级和依赖关系,对所述有向无环图中的 节点进行排序,其中排序规则为将所述有向无环图中的前置节点排序在后置节点之前,具 有同一个前置节点的多个后置节点按照优先级从高到底依次排列。
[0062] 在本发明的上述实施例中,根据测试用例的优先级,对所述有向无环图中的节点 进行排序,生成测试调度包括:
[0063] 在所述有向无环图中查找依赖度为0的节点,加入找,其中依赖度为0的节点表示 该节点的执行不依赖其他测试用例。
[0064] 多次执行生成测试调度流程,直到所述找为空,队列中的测试用例顺序即为自动 生成的测试调度;
[0065] 所述生成测试调度流程包括:
[0066] 取所述找的最后一个节点,加入队列;
[0067] 在所述有向无环图中按照优先级从低到高顺序依次查找所述最后一个节点的后 置节点,加入所述找中。
[0068] 在本发明的具体实施例中,W系统用户管理功能为例,针对如图2所示的有向无 环图,利用堆找、队列的特点,将过程节点信息放在堆找中,将结果信息放在队列中,最终 队列中的顺序就是生成的测试调度中用例的执行顺序,具体生成测试调度的过程如图3所 示:
[006引步骤30,查找依赖度为0的节点,如果存在为0的节点,加入找q,否则该图是有向 有图。
[0070] 步骤31,取找q的最后一个节点V,加入队列。
[0071] 步骤32,查找对V节点是互斥依赖的后置节点,加入找q中。
[0072] 步骤33,查找对V节点是更新依赖的后置节点,加入找q中。
[0073] 步骤34,查找对V节点是约束依赖的后置节点,加入找q中。
[0074] 步骤35,将V节点从其它节点的依赖表中移除。
[00巧]步骤36,判断找q是否为空,如果找q不为空,Goto 31,否则,Goto 30。
[0076] 如图4所示,本发明的实施例还提供一种基于用例依赖关系自动生成测试调度的 装置,包括:
[0077] 获取模块40,用于获取预设测试任务所需的测试用例;
[0078] 优先级设置模块41,用于获取测试用例之间的依赖关系及前置依赖类型,并根据 所述前置依赖类型,为同顶级节点的多个测试用例设置优先级;
[0079] 生成模块42,用于根据测试用例间的依赖关系化及测试用例的优先级,生成测试 调度。
[0080] 在本发明的上述实施例中,所述测试用例之间的依赖关系包括前置、后置和并行, 所述测试用例之间的前置依赖类型包括前置无关、前置更新和前置互斥,前置无关表示后 置用例的执行不影响前置用例的执行结果,前置更新表示后置用例的执行会导致前置用例 的执行结果的变更,前置互斥表示后置用例的执行会导致前置用例的执行结果消失。
[0081] 在本发明的上述实施例中,所述测试用例的优先级顺序依次为前置无关、前置更 新和前置互斥。
[0082] 在本发明的具体实施例中,所述生成模块包括:
[0083] 形成单元,用于根据测试用例间的依赖关系,形成一个有向无环图;
[0084] 排序单元,用于根据测试用例的优先级,对所述有向无环图中的节点进行排序,生 成测试调度,其中排序规则为:将所述有向无环图中的前置节点排序在后置节点之前,具有 同一个前置节点的多个后置节点按照优先级从高到底依次排列。
[0085] 在本发明的具体实施例中,所述排序单元包括:
[0086] 查找子单元,用于在所述有向无环图中查找依赖度为0的节点,加入找,其中依赖 度为0的节点表示该节点的执行不依赖其他用例。
[0087] 执行子单元,用于多次执行生成测试调度流程,直到所述找为空,队列中的测试用 例顺序即为自动生成的测试调度;
[0088] 所述生成测试调度流程包括:
[0089] 取所述找的最后一个节点,加入队列;
[0090] 在所述有向无环图中按照优先级从低到高顺序依次查找所述最后一个节点的后 置节点,加入所述找中。
[0091] 需要说明的是,该装置是与上述自动生成测试调度的方法实施例对应的装置,上 述方法实施例中所有实现方式均适用于该装置的实施例中,也能达到相同的技术效果。
[0092] W上所述的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来 说,在不脱离本发明所述的原理前提下还可W作出若干改进和润饰,运些改进和润饰也在 本发明的保护范围内。
【主权项】
1. 一种基于用例依赖关系自动生成测试调度的方法,其特征在于,包括: 获取预设测试任务所需的测试用例; 获取测试用例之间的依赖关系及前置依赖类型,并根据所述前置依赖类型,为同顶级 的多个测试用例设置优先级,所述同顶级表示依赖于同一个前置用例; 根据测试用例间的依赖关系以及测试用例的优先级,生成测试调度。2. 如权利要求1所述自动生成测试调度的方法,其特征在于,所述测试用例之间的依 赖关系包括前置、后置和并行,所述前置依赖类型包括前置无关、前置更新和前置互斥,前 置无关表示后置用例的执行不影响前置用例的执行结果,前置更新表示后置用例的执行会 导致前置用例的执行结果的变更,前置互斥表示后置用例的执行会导致前置用例的执行结 果消失。3. 如权利要求2所述自动生成测试调度的方法,其特征在于,所述测试用例的优先级 从高到低顺序依次为前置无关、前置更新和前置互斥。4. 如权利要求2所述自动生成测试调度的方法,其特征在于,所述根据测试用例间的 依赖关系以及测试用例的优先级,生成测试调度包括: 根据测试用例间的依赖关系,形成一个有向无环图; 根据测试用例的优先级和依赖关系,对所述有向无环图中的节点进行排序,生成测试 调度,其中排序规则为:将所述有向无环图中的前置节点排序在后置节点之前,具有同一个 前置节点的多个后置节点按照优先级从高到底依次排列。5. 如权利要求4所述自动生成测试调度的方法,其特征在于,根据测试用例的优先级, 对所述有向无环图中的节点进行排序,生成测试调度包括: 在所述有向无环图中查找依赖度为〇的节点,加入栈,其中依赖度为〇的节点表示该节 点的执行不依赖其他测试用例; 多次执行生成测试调度流程,直到所述栈为空,队列中的测试用例顺序即为自动生成 的测试调度; 所述生成测试调度流程包括: 取所述栈的最后一个节点,加入队列; 在所述有向无环图中按照优先级从低到高顺序依次查找所述最后一个节点的后置节 点,加入所述栈中。6. -种基于用例依赖关系自动生成测试调度的装置,其特征在于,包括: 获取模块,用于获取预设测试任务所需的测试用例; 优先级设置模块,用于获取测试用例之间的依赖关系及前置依赖类型,并根据所述前 置依赖类型,为同顶级节点的多个测试用例设置优先级; 生成模块,用于根据测试用例间的依赖关系以及测试用例的优先级,生成测试调度。7. 如权利要求6所述自动生成测试调度的装置,其特征在于,所述测试用例之间的依 赖关系包括前置、后置和并行,所述测试用例之间的前置依赖类型包括前置无关、前置更新 和前置互斥,前置无关表示后置用例的执行不影响前置用例的执行结果,前置更新表示后 置用例的执行会导致前置用例的执行结果的变更,前置互斥表示后置用例的执行会导致前 置用例的执行结果消失。8. 如权利要求7所述自动生成测试调度的装置,其特征在于,所述测试用例的优先级 从高到低顺序依次为前置无关、前置更新和前置互斥。9. 如权利要求7所述自动生成测试调度的装置,其特征在于,所述生成模块包括: 形成单元,用于根据测试用例间的依赖关系,形成一个有向无环图; 排序单元,用于根据测试用例的优先级,对所述有向无环图中的节点进行排序,生成测 试调度,其中排序规则为:将所述有向无环图中的前置节点排序在后置节点之前,具有同一 个前置节点的多个后置节点按照优先级从高到底依次排列。10. 如权利要求9所述自动生成测试调度的装置,其特征在于,所述排序单元包括: 查找子单元,用于在所述有向无环图中查找依赖度为0的节点,加入栈,其中依赖度为 0的节点表示该节点的执行不依赖其他用例; 执行子单元,用于多次执行生成测试调度流程,直到所述栈为空,队列中的测试用例顺 序即为自动生成的测试调度; 所述生成测试调度流程包括: 取所述栈的最后一个节点,加入队列; 在所述有向无环图中按照优先级从低到高顺序依次查找所述最后一个节点的后置节 点,加入所述栈中。
【文档编号】G06F11/36GK105824746SQ201510005938
【公开日】2016年8月3日
【申请日】2015年1月5日
【发明人】韩欣, 张毅, 梁恩磊, 熊文剑, 舒敏根, 李莉, 郭利江
【申请人】中国移动(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1