一种流程图的路径获取方法及装置与流程

文档序号:11829436阅读:410来源:国知局
一种流程图的路径获取方法及装置与流程

本发明涉及计算机领域,尤其涉及一种流程图的路径获取方法及装置。



背景技术:

流程图指的是以特定的图形符号加上说明,表示算法的图,通常一件事或者一个知识点用流程图可以帮助我们从总体上掌控概要提纲以及层次关系。但是若是想验证这个流程图有没有问题,我们就需要去验证各种情况,例如:流程图的各条路径是否符合设计的要求。

在软件测试领域中,白盒测试人员在设计测试用例时要根据代码逻辑来设计,也就是需要搜索流程图的路径,但是日常工作中,我们遇到的流程图往往有着复杂的逻辑,比如有在十几个分支的路径情况就有二的十几次幂,也就是至少好几千种情况,手动从中找出全部路径简直不可能。

也就是说,现有技术中存在着无法自动搜索并获取流程图的路径的技术问题。



技术实现要素:

本发明提供一种流程图的路径获取方法及装置,以解决现有技术中无法自动搜索并获取流程图的路径的技术问题。

第一方面,本发明实施例提供一种流程图的路径获取方法,包括:

获取流程图包含的所有节点的数量N,其中N为正整数;

从所述流程图的起始节点开始搜索所述流程图的路径;

在搜索到节点i时,通过所述节点i所指向的每个节点的权值确定所述节点i下一步经过的节点,i为0,1,2…N;

在一条路径搜索结束之后,通过回溯方式搜索新的路径,直至回溯至所述起始节点。

可选的,在所述通过所述节点i所指向的每个节点的权值确定所述节点i下一步经过的节点之前,所述方法还包括:

针对所述流程图的每个节点分别设置对应的V值和H值,其中,V值表征对应节点在任意一条路径中最多出现的次数,H值表示对应节点在当前搜索的路径中出现的次数;

针对每个节点设置启发式函数F=V-H,其中F即为所述权值。

可选的,所述针对所述流程图的每个节点分别设置对应的V值,具体包括:

确定每个节点的输入线条数和输出线条数;

确定所述输入线条数和输出线条数中的最大值作为对应节点的所述V值。

可选的,所述通过所述节点i所指向的每个节点的权值确定所述节点i下一步经过的节点,具体包括:

确定所述节点i所指向的至少一个节点;

从所述至少一个节点中选择F值最大且大于零的一个节点作为下一步经过的节点。

可选的,在一条路径搜索结束之后所述方法还包括:

将所有节点的V值和H值归为初始值。

可选的,所述通过回溯方式搜索新的路径,具体包括:

在回溯至当前节点i时,判断对应所述节点i是否存在没有搜索过的路径;

在对应所述节点i存在没有搜索过的路径时,从没有搜索过的路径中选择一条路径进行搜索;

在对应所述节点i不存在没有搜索过的路径时,选择所述节点i的前一个节点i-1作为新的当前节点。

第二方面,本发明实施例提供一种流程图的路径获取装置,包括:

获取模块,用于获取流程图包含的所有节点的数量N,其中N为正整数;

搜索模块,用于从所述流程图的起始节点开始搜索所述流程图的路径;

确定模块,用于在搜索到节点i时,通过所述节点i所指向的每个节点的权值确定所述节点i下一步经过的节点,i为0,1,2…N;

回溯模块,用于在一条路径搜索结束之后,通过回溯方式搜索新的路径,直至回溯至所述起始节点。

可选的,所述装置还包括:

第一设置模块,用于在通过所述节点i所指向的每个节点的权值确定所述节点i下一步经过的节点之前,针对所述流程图的每个节点分别设置对应的V值和H值,其中,V值表征对应节点在任意一条路径中最多出现的次数,H值表示对应节点在当前搜索的路径中出现的次数;

第二设置模块,用于针对每个节点设置启发式函数F=V-H,其中F即为所述权值。

可选的,所述第一设置模块,具体包括:

第一确定单元,用于确定每个节点的输入线条数和输出线条数;

第二确定单元,用于确定所述输入线条数和输出线条数中的最大值作为对应节点的所述V值。

可选的,所述确定模块,具体包括:

第三确定单元,用于确定所述节点i所指向的至少一个节点;

第一选择单元,用于从所述至少一个节点中选择F值最大且大于零的一个节点作为下一步经过的节点。

可选的,所述装置还包括:

初始化模块,用于在一条路径搜索结束之后,将所有节点的V值和H值归为初始值。

可选的,所述回溯模块,具体包括:

判断单元,用于在回溯至当前节点i时,判断对应所述节点i是否存在没有搜索过的路径;

第二选择单元,用于在对应所述节点i存在没有搜索过的路径时,从没有搜索过的路径中选择一条路径进行搜索;

第三选择单元,用于在对应所述节点i不存在没有搜索过的路径时,选择所述节点i的前一个节点i-1作为新的当前节点。

本发明有益效果如下:

由于在本发明实施例中,首先获取流程图包含的所有节点的数量N,其中N为正整数;然后从流程图的起始节点开始搜索流程图的路径;在搜索到节点i时,通过节点i所指向的每个节点的权值确定节点i下一步经过的节点,i为0,1,2…N;在一条路径搜索结束之后,通过回溯方式搜索新的路径,直至回溯至起始节点,即获得流程图的所有有效路径。由于在搜索到节点i之后,通过节点i所指向的每个节点的权值确定节点i下一步所输出的节点,故而能够防止在遇到流程图的环时,因为无法确定选择哪个节点所造成的死循环,而通过回溯算法则能够遍历流程图的所有有效路径,从而达到了能够对流程图进行处理,并搜索获得流程图的全部有效路径的技术效果。

附图说明

图1为本发明实施例中流程图的路径获取方法的流程图;

图2为本发明实施例中流程图的路径获取方法中所列举的流程图的示意图;

图3为本发明实施例中流程图的路径获取方法中建立启发式函数F的流程图;

图4为本发明实施例中流程图的路径获取方法中通过节点i所指向的每个节点的权值确定节点i下一步所输出的节点的流程图;

图5为本发明实施例中流程图的路径获取方法的逻辑框图;

图6为本发明实施例中流程图的路径获取装置的结构图。

具体实施方式

本发明提供一种流程图的路径获取方法及装置,以解决现有技术中无法自动搜索并获取流程图路径的技术问题。

本申请实施例中的技术方案为解决上述的技术问题,总体思路如下:

首先获取流程图包含的所有节点的数量N,其中N为正整数;然后从流程图的起始节点开始搜索流程图的路径;在搜索到节点i时,通过节点i所指向的每个节点的权值确定节点i下一步经过的节点,i为0,1,2…N;在一条路径搜索结束之后,通过回溯方式搜索新的路径,直至回溯至起始节点,即获得流程图的所有有效路径。由于在搜索到节点i之后,通过节点i所指向的每个节点的权值确定节点i下一步所输出的节点,故而能够防止在遇到流程图的环时,因为无法确定选择哪个节点所造成的死循环,而通过回溯算法则能够遍历流程图的所有有效路径,从而达到了能够对流程图进行处理,并搜索获得流程图的全部有效路径的技术效果。

为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。

第一方面,本发明实施例提供一种流程图的路径获取方法,请参考图1,包括:

步骤S101:获取流程图包含的所有节点的数量N,其中N为正整数;

步骤S102:从流程图的起始节点开始搜索流程图的路径;

步骤S103:在搜索到节点i时,通过节点i所指向的每个节点的权值确定节点i下一步经过的节点,i为0,1,2…N;

步骤S104:在一条路径搜索结束之后,通过回溯方式搜索新的路径,直至回溯至起始节点。

步骤S101中,可以首先通过程序读取待处理的流程图,而流程图中的每个框则表示一个节点,以图2所示的流程图为例,则该流程图中包含5个节点, 为了方便表示,可以将这5个节点分别用1-5的数字表示。

步骤S102中,以图2所示的流程图为例,则该流程图的起始节点为“开始”所对应的节点,在搜索开始阶段,从该起始节点搜索下一节点。

其中,作为进一步的优选实施例,在基于步骤S103通过节点i所指向的每个节点的权值确定节点i下一步所经过的节点之前,请参考图3,方法还包括:

步骤S301:针对流程图的每个节点分别设置对应的V值和H值,其中,V值表征对应节点在任意一条路径中最多出现的次数,H值表示对应节点在当前搜索的路径中出现的次数;

步骤S302:针对每个节点设置启发式函数F=V-H,其中F即为权值。

步骤S301中,V值通常由对应节点所连接的线条数量决定,V值可以通过以下方式获得:确定每个节点的输入线条数和输出线条数;确定输入线条数和输出线条数的最大值作为对应节点的V值。

以图2所示的流程图举例,起始节点1的输入线条数为0,输出线条数为1,则V(1)=1;

节点2的输入线条数为2,输出线条数为1,则V(2)=2;

节点3的输入线条数为1,输出线条数为2,则V(3)=2;

节点4的输入线条数为1,输出线条数为1,则V(4)=1;

节点5的输入线条数为1,输出线条数为0,则V(5)=1。

对于其它流程图其每个节点的V值的计算方式与之类似,故而在此不再赘述。

而在初始化阶段时,所有节点的H值都为0,在一条路径搜索结束之后将所有节点的V值和H值归为初始值以图2所示的流程图为例,则:

H(1)=H(2)=H(3)=H(4)=H(5)=0

步骤S302中,在初始化阶段,每个节点的启发式函数F(也即:权值)与V值相同。

步骤S103中,通过节点i所指向的每个节点的权值确定节点i下一步所输出的节点,请参考图4,具体包括:

步骤S401:确定节点i所指向的至少一个节点;

步骤S402:从至少一个节点中选择F值最大且大于零的一个节点作为下一步所经过的节点;

步骤S403:在对应节点的F值小于等于零时,节点i不再经过对应的节点。

步骤S401中,以图2所示的流程图为例,节点1指向的节点为节点2,节点2指向的节点为节点3,节点3指向的节点为节点2、节点4,节点4指向的节点为节点5,节点5没有指向的节点,所以在搜索到节点5之后,由于H(5)等于零,则一条路径的搜索完成。

步骤S402中,对于节点1、2、4、5由于其指向的节点都只有一个,故而下一步直接经过其指向的节点即可,对于节点3,由于其指向的节点有两个,则需要通过权值,也即启发式函数F确定出节点3下一步经过的节点。

其中,在搜索至节点3时,节点2和节点4的启发式函数分别如下:

F(2)=V(2)–H(2)=2–1=1;(节点2已经过一次)

F(4)=V(4)–H(4)=1–0=1;

而在同时存在多个最大的F值的情况下,则会随机选择一个最大的F值所对应的节点作为下一步所经过的节点,故而,节点3可以随机从节点2和节点4中选择出一个节点进行输出,并对被选择出的节点进行标记,假设节点3选择的节点4,因为节点4只指向节点5,故而最终确定出的路径为1→2→3→4→5。

步骤S402中,由于对于F值小于等于零的路径则不再走,从而保证不会导致死循环。

通过上述启发式函数F,采取一条路径中每个环只经过一次的控制手段,能够解决有环的流程图中路径不可数的问题。

步骤S104中,在一条路径搜索结束之后,为了搜索出其他节点,则需要开始回溯,作为进一步的优选实施例,通过回溯方式获取新的路径,具体包括:

在回溯至当前节点i时,判断对应节点i是否存在没有搜索过的路径;

在对应节点i存在没有搜索过的路径时,从没有搜索过的路径中选择一条路径进行搜索;

在对应节点i不存在没有搜索过的路径时,选择节点i的前一个节点i-1作为新的当前节点。

举例来说,还是以图2所示的流程图为例,假设第一节点为节点4,由于节点4所指向的节点只有节点5,而节点4至节点5的路径已经走过,故而节点4并不包含没有走过的路径,在种情况下,则选择节点4的前一个节点(也即节点3)继续上述判断过程;

节点3所指向的节点包含节点2和节点4,其中节点3至节点4的路径之前已经走过,故而忽略已经标记过的节点4,直接选择节点3至节点2的路径继续搜索,在这种情况下,F(2)=V(2)–H(2)=2-1=1;

在回到节点2之后,节点2所指向的节点为节点3,而:

F(3)=V(3)–H(3)=2-1=1

也就是F(3)大于0,故而可以从节点2输出至节点3,而在由节点2输出至节点3之后,H(2)和H(3)都变为2,从而F(2)和F(3)都变为0,而由于上一条路径已经搜索完毕,故而节点4和节点5恢复至初始状态,也即H(4)与H(5)都等于0,故而:

F(4)=V(4)-H(4)=1-0=1 F(5)=V(5)-H(5)=1-0=1

在这种情况下,故而节点3只能先经过节点4,然后经过至节点5,获得第二条路径:1→2→3→2→3→4→5;

然后继续回溯,由于对应节点3的两条路径都搜索过了,而节点1和节点2的输出节点都只有一个,故而再次回溯就回溯到起始节点,也就是搜索节点的过程结束。

最后可以得到以下两条路径:

①开始→申请人书写交底书→审核通过(是)→申请专利→结束;

②开始→申请人书写交底书→审核通过(否)→申请人书写交底书→审核通过(是)→申请专利→结束。

作为进一步的优选实施例,在基于步骤S104获得流程图的所有路径之后,方法还包括:针对所有路径设计测试用例,进而可以通过测试用例对所有的路径进行测试,进而能够提高测试用例对代码逻辑的覆盖度,例如:一些复杂逻辑的代码,如果通过人工去搜索路径,不仅耗费时间,而且极易漏掉一些路径,而使用程序来搜索路径就没有这个问题。

并且,还能够提高测试人员的工作效率,例如:一些比较复杂的流程图人工看起来特别费时间,而用程序分析很快就可以完成。

通常情况下,流程图中的路径包括有效路径和无效路径两部分,其中:

流程图中的无效路径指的是:若当前路径是对某个环路的多次重复,且前面已经有路径涵盖到这个环路了,就认为这条路径是无效路径。

流程图中有效路径指的是:全路径除去无效路径就是有效路径。

在上述方案中,通过设定启发式函数F能够防止对某个环路重复多次,进而能够搜索出流程图中所有有效路径。

为了使本领域所属技术人员能够进一步的了解本发明实施例所介绍的流程图的路径获取方法的应用环境,下面将介绍该方法所采用的软件架构或者模块化的功能框图,请参考图5,该功能框图包括以下两部分:

用户层50,在用户层50,测试人员首先导入需要获取路径的流程图,然后产生搜索所有路径的控制指令;

业务逻辑层51,业务逻辑层51接收用户层50发送的控制指令;然后执行该控制指令,进而读入流程图并对流程图进行分析;然后依据启发式函数F对流程图进行搜索;进而最终搜索出流程图的所有路径;然后将所有路径提供给用户层50所对应的测试人员,由测试人员根据所有路径设计测试用例。

当然,在具体实施过程中,本发明实施例所介绍的流程图的路径获取方法本技术除了在软件测试领域可以广泛使用外,还可以应用在其他任意包含流程 图的领域,例如:公司要对专利申请流程进程改革,而专利申请流程图为一个很复杂的流程图,在需要核对该专利申请流程图的情况下,如果采用人工方式的话,则只能大概了解一下整体的层次关系,但是如果需要判断该专利申请流程图有没有什么漏洞的话,则需要逐条路径去看,而通过本发明实施例所介绍的方案,则可以直接展示该专利申请流程图的所有有效路径,进而使专利申请流程图的审核更加方便。

第二方面,基于同一发明构思,本发明实施例提供一种流程图的路径获取装置,请参考图6,包括:

获取模块60,用于获取流程图包含的所有节点的数量N,其中N为正整数;

搜索模块61,用于从流程图的起始节点开始搜索流程图的路径;

确定模块62,用于在搜索到节点i时,通过节点i所指向的每个节点的权值确定节点i下一步经过的节点,i为0,1,2…N;

回溯模块63,用于在一条路径搜索结束之后,通过回溯方式搜索新的路径,直至回溯至起始节点。

可选的,装置还包括:

第一设置模块,用于在通过节点i所指向的每个节点的权值确定节点i下一步经过的节点之前,针对流程图的每个节点分别设置对应的V值和H值,其中,V值表征对应节点在任意一条路径中最多出现的次数,H值表示对应节点在当前搜索的路径中出现的次数;

第二设置模块,用于针对每个节点设置启发式函数F=V-H,其中F即为权值。

可选的,第一设置模块,具体包括:

第一确定单元,用于确定每个节点的输入线条数和输出线条数;

第二确定单元,用于确定输入线条数和输出线条数中的最大值作为对应节点的V值。

可选的,确定模块62,具体包括:

第三确定单元,用于确定节点i所指向的至少一个节点;

第一选择单元,用于从至少一个节点中选择F值最大且大于零的一个节点作为下一步经过的节点。

可选的,装置还包括:

初始化模块,用于在一条路径搜索结束之后,将所有节点的V值和H值归为初始值。

可选的,回溯模块63,具体包括:

判断单元,用于在回溯至当前节点i时,判断对应节点i是否存在没有搜索过的路径;

第二选择单元,用于在对应节点i存在没有搜索过的路径时,从没有搜索过的路径中选择一条路径进行搜索;

第三选择单元,用于在对应节点i不存在没有搜索过的路径时,选择节点i的前一个节点i-1作为新的当前节点。

本发明一个或多个实施例至少具有以下有益效果:

由于在本发明实施例中,首先获取流程图包含的所有节点的数量N,其中N为正整数;然后从流程图的起始节点开始搜索流程图的路径;在搜索到节点i时,通过节点i所指向的每个节点的权值确定节点i下一步经过的节点,i为0,1,2…N;在一条路径搜索结束之后,通过回溯方式搜索新的路径,直至回溯至起始节点,即获得流程图的所有有效路径。由于在搜索到节点i之后,通过节点i所指向的每个节点的权值确定节点i下一步所输出的节点,故而能够防止在遇到流程图的环时,因为无法确定选择哪个节点所造成的死循环,而通过回溯算法则能够遍历流程图的所有有效路径,从而达到了能够对流程图进行处理,并搜索获得流程图的全部有效路径的技术效果。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的 形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1