一种遍历测试命令生成方法及装置与流程

文档序号:14303470阅读:211来源:国知局
一种遍历测试命令生成方法及装置与流程

本申请涉及计算机技术领域,特别涉及一种遍历测试命令生成方法及装置。



背景技术:

cli(commandlineinterface,命令行界面)是指用户可以通过键入命令行的方式操作软件的界面,设备执行命令行时,根据命令行中的不同命令将得到不同的执行结果。由于cli具有操作速度快、节约系统资源、功能强大、扩充方便等优点,许多应用软件都可以通过cli模式操作。在对这类软件进行功能测试前,需要对软件在cli中的命令的有效性进行测试,例如,在软件更新版本后,遍历执行新版本中的所有命令,验证更新后的软件版本中所有命令的有效性,从而在新版本投入使用之前,及时准确地发现无效的命令。

现有技术中,在测试命令的有效性时,可以人为地确定软件在cli中的命令,并进行测试,以保证能够遍历测试所有命令。但是,开发人员在进行开发时,会设定不同的可执行命令,并且可能会在版本更新时,对命令进行新增、修改和删除等更新,因此,不同软件的命令存在差异,同一软件的不同版本的命令也可能存在差异,在对软件的命令进行测试时,人为地确定软件在cli中的命令会耗费大量的人力及时间。



技术实现要素:

有鉴于此,本申请提供本申请提供一种遍历测试命令生成方法及装置,技术方案如下:

一种遍历测试命令生成方法,其特征在于,任一待测试命令i由ni个命令片段构成,且ni≥1,所述方法包括:

在未指定联想依据的情况下,调用系统内置联想功能,获得第一命令片段集合,所述第一命令片段集合包括:所有可能在待测试命令第一个命令片段位置出现的命令片段;

针对第一命令片段集合中的每个命令片段,分别以该命令片段为根节点,调用系统内置联想功能,生成联想片段树,在联想片段树中,任一非根节点所对应的命令片段,均以其所有祖先节点对应命令片段所构成的序列为联想依据;任一叶子节点均为无法继续生成联想结果的节点;

遍历各联想片段树,得到任一根节点至任一叶子节点所形成的有向路径,并根据各有向路径对应的命令片段序列生成待测试命令。

一种遍历测试命令生成装置,其特征在于,任一待测试命令i由ni个命令片段构成,且ni≥1,所述装置包括:

第一命令片段联想模块,用于在未指定联想依据的情况下,调用系统内置联想功能,获得第一命令片段集合,所述第一命令片段集合包括:所有可能在待测试命令第一个命令片段位置出现的命令片段;

联想片段树生成模块,用于针对第一命令片段集合中的每个命令片段,分别以该命令片段为根节点,调用系统内置联想功能,生成联想片段树,在联想片段树中,任一非根节点所对应的命令片段,均以其所有祖先节点对应命令片段所构成的序列为联想依据;任一叶子节点均为无法继续生成联想结果的节点;

待测试命生成模块,用于遍历各联想片段树,得到任一根节点至任一叶子节点所形成的有向路径,并根据各有向路径对应的命令片段序列生成待测试命令。

本申请所提供的技术方案,可以通过调用系统内置的联想功能,完成组成一条命令的各个命令片段之间的自动联想,生成命令的联想片段树,并按照生成的树中从根节点到叶子节点的有向路径,生成待测试的命令,从而可以在不耗费大量的人力及时间的情况下,进行命令遍历测试,及时准确地发现无效的命令,避免出现无效命令导致的设备死机等问题。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。此外,本申请中的任一实施例并不需要达到上述的全部效果。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本申请的遍历测试命令生成方法的流程示意图;

图2是本申请的遍历测试命令生成装置的结构示意图;

图3是本申请的联想片段树生成模块的结构示意图;

图4是本申请的删除单元的结构示意图;

图5是本申请的遍历测试命令生成装置的另一结构示意图。

具体实施方式

为了使本领域技术人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请保护的范围。

首先,对本发明实施例的遍历测试命令生成方法进行说明,其中,任一待测试命令i由ni个命令片段构成,且ni≥1,即可以通过cli执行的每一条待测试命令,都是由至少一个命令片段构成,例如“showiproutea.b.c.d”这条命令,如果通过空格划分,则该条命令是由“show”、“ip”、“route”和“a.b.c.d”四个命令片段构成。对于不同的系统,命令行的语法也可能并不相同,对应地可以采用不同的命令片段划分标准,以实现命令片段之间的联想,本申请所提供的基本方案理论上并不需要对此进行限定。

参见图1所示,本发明实施例的遍历测试命令生成方法可以包括以下步骤:

s101,在未指定联想依据的情况下,调用系统内置联想功能,获得第一命令片段集合,所述第一命令片段集合包括:所有可能在待测试命令第一个命令片段位置出现的命令片段;

对于由两个或更多命令片段组成的每条待测试命令,通过命令中的各个命令片段之间的相互关联,可以实现多次的联想,直至组成一条完整的待测试命令。而为了尽可能地生成软件在cli中的所有待测试命令,首先需要确定每条待测试命令的第一个命令片段,从而依次联想出后面的命令片段。因此,在没有联想依据——前一个命令片段——的情况下,通过调用系统内置的联想功能,获得所有可能在待测试命令的第一个命令片段位置出现的命令片段,例如,在某些系统中,在cli中键入“?”,cli将自动列出所有可能的首个命令片段。

s102,针对第一命令片段集合中的每个命令片段,分别以该命令片段为根节点,调用系统内置联想功能,生成联想片段树,在联想片段树中,任一非根节点所对应的命令片段,均以其所有祖先节点对应命令片段所构成的序列为联想依据;任一叶子节点均为无法继续生成联想结果的节点;

在s101中,通过调用系统内置的联想功能,可以在没有联想依据的情况下,得到第一命令片段集合,接下来就可以继续通过调用系统内置的联想功能,以第一命令片段集合中的每个命令片段为一个根节点,逐级联想生成各级节点直到叶子节点,最终得到每个根节点对应的完整的联想片段树。在s101中得到各个根节点的联想是没有联想依据的,而在由各个根节点逐级联想生成树的过程中,对每个节点的联想都是有联想依据的,例如,在没有联想依据的情况下,得到了一个第一命令片段“show”,以此为根节点生成联想片段树时,首先就以“show”为联想依据,可能会得到“ip”、“mac”、“ipv6”等多个新的命令片段,即根节点的第一级子节点,之后,第二级子节点的联想依据分别为“showip”、“showmac”、“showipv6”,即以其祖先节点对应的命令片段所构成的序列为联想依据,类似地,逐级联想直到得到叶子节点,也就是无法继续生成联想结果的节点,即完成了整个联想片段树的联想生成过程。

s103,遍历各联想片段树,得到任一根节点至任一叶子节点所形成的有向路径,并根据各有向路径对应的命令片段序列生成待测试命令。

根据得到的所有第一命令片段生成对应的联想片段树后,即可根据树的“枝叶”生成待测试命令,即每一条从根节点到叶子节点的有向路径,均对应着一条待测试命令。具体地,有向路径上的每个节点即一个命令片段,每一条有效路径对应着一个命令片段序列,将其中的命令片段按序列顺序组合,并以命令片段的划分标准分隔,即可得到对应的待测试命令,例如,以“show”为根节点的联想片段树中的,存在着第一级子节点“ip”,“ip”的子节点中存在着“route”,“route”的子节点中存在着“a.b.c.d”,而“a.b.c.d”为叶子节点,则该树中存在着有向路径“show-ip-route-a.b.c.d”,将对应的命令片段序列中的4个命令片段按照该序列的顺序组合,并用空格分隔,即可以得到对应的待测试命令“showiproutea.b.c.d”。

在本申请的一种具体实施方式中,对于有向路径对应的命令片段序列中,可能存在不可直接生成待测试命令的命令片段的情况,可以将这种命令片段替换为对应的待测试片段。例如,如果通过联想得到的命令片段为“string”,则代表自定义输入字符串(例如名称配置),此时,可以随机生成一个32位的字符串作为待测试片段,代替“string”与其他命令片段组成一条完整的待测试命令;如果通过联想得到的命令片段为用“<>”括起来的数字范围,例如“<0-64>”,则可以以最大值和最小值分别作为待测试片段,与其他命令片段组成一条完整的待测试命令;如果通过联想得到的命令片段为“a.b.c.d”、“a.b.c.d/m”或“x:x::x:x/m”,则代表ip地址或ipv6地址,此时,可以从1至100中随机生成4位数字并从1至32中随机生成掩码,例如“100.85.5.2”、“100.85.5.2/8”、“100:85::2:5/8”,作为待测试片段与其他命令片段组成一条完整的待测试命令,等等。除了以上举例的情况,还可能包括mac地址等情况,生成替换的待测试片段的规则也不限于上述的随机生成或者使用最大值、最小值的实现方式,本申请的方案理论上不需要不对此进行限定,在实际应用中,本领域技术人员可以根据实际情况进行设定。

此外,由于一般情况下,一条命令中不存在两个、尤其是两个连续的相同命令片段,因此,在本申请的一种具体实施方式中,在逐级联想生成联想片段树的过程中,还可以将联想到的子节点与其父节点或者祖先节点进行比较,并删除与父节点或者祖先节点相同的子节点,从而减少可能不需要的节点,以提高生成待测试命令的效率。本领域的技术人员在实际应用中,也可以根据提高效率或其他需求,设置其他的节点删除规则,而不限于上述的规则,本申请的基本方案在理论上不需要对此进行限定。

在遍历生成待测试命令之后,即可将命令下发到设备中进行遍历测试,通过监控设备的视图,对于出现诸如“%unknowncommand”、“kdb”等提示信息,或者使设备异常重启的无效命令,还可以输出相应的命令测试报告,从而在软件更新版本后,及时准确地发现无效的命令,避免出现无效命令导致的设备死机等问题。

相应于上述方法实施例,本申请还提供一种遍历测试命令生成装置,其中任一待测试命令i由ni个命令片段构成,且ni≥1,参见图2所示,该装置可以包括:

第一命令片段联想模块100,用于在未指定联想依据的情况下,调用系统内置联想功能,获得第一命令片段集合,所述第一命令片段集合包括:所有可能在待测试命令第一个命令片段位置出现的命令片段;

联想片段树生成模块200,用于针对第一命令片段集合中的每个命令片段,分别以该命令片段为根节点,调用系统内置联想功能,生成联想片段树,在联想片段树中,任一非根节点所对应的命令片段,均以其所有祖先节点对应命令片段所构成的序列为联想依据;任一叶子节点均为无法继续生成联想结果的节点;

待测试命令生成模块300,用于遍历各联想片段树,得到任一根节点至任一叶子节点所形成的有向路径,并根据各有向路径对应的命令片段序列生成待测试命令。

在本申请的一种具体实施方式中,参见图3所示,所述联想片段树生成模块200可以包括:

联想单元210,用于针对第一命令片段集合中的每个命令片段,分别以该命令片段为根节点,调用系统内置联想功能,生成各级子节点;

删除单元220,用于生成所述各级子节点中的每一级子节点时,删除符合预设规则的子节点;

生成单元230,用于根据所述根节点及所生成的各级子节点,生成联想片段树。

在本申请的一种具体实施方式中,参见图4所示,所述删除单元220可以包括:

比较子单元221,用于生成所述各级子节点中的每一级子节点时,将所述每一级子节点中的各子节点与其父节点比较;

删除子单元222,用于在所述各子节点中存在与其父节点相同的子节点的情况下,删除所述相同的子节点。

在本申请的一种具体实施方式中,参见图5所示,所述装置还可以包括:

待测试片段生成模块400,用于在所述有向路径对应的命令片段序列中,存在不可直接生成待测试命令的目标命令片段的情况下,根据预设规则生成所述目标命令片段对应的待测试片段;

片段替换模块500,用于使用所生成的待测试片段替换对应的目标命令片段。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。

虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。

由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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