CN101197734B - 命令行接口的测试方法及装置 - Google Patents
命令行接口的测试方法及装置 Download PDFInfo
- Publication number
- CN101197734B CN101197734B CN2007103023842A CN200710302384A CN101197734B CN 101197734 B CN101197734 B CN 101197734B CN 2007103023842 A CN2007103023842 A CN 2007103023842A CN 200710302384 A CN200710302384 A CN 200710302384A CN 101197734 B CN101197734 B CN 101197734B
- Authority
- CN
- China
- Prior art keywords
- command
- aggregate
- node
- binary tree
- line interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施方式提供了一种命令行接口的测试方法及装置。首先通过获得需要进行测试的聚合命令,然后从所述聚合命令的根结点开始,对所述聚合命令进行等价二叉树的转化,再对所述等价二叉树的叶子结点进行遍历,并进行叶子结点到根结点的路径访问,获得每一条单命令和对应的预期提示信息,最后对所获得的每一条单命令进行测试。这样通过等价二叉树的转化简化了命令树的构造,建立一个很容易测试的命令树,提高了可测试性,从而减少了设备计算资源的浪费,并且大大提高了测试的效率。
Description
技术领域
本发明涉及设备测试领域,尤其涉及一种网络设备命令行接口的测试方法及装置。
背景技术
命令行界面(Command Line Interface,CLI)是对当前网络设备进行设置的主要操作方式。随着网络设备功能的日益完善,命令行的内容也在不断丰富,在利用命令行界面对网络设备进行操作时,常常会遇到多视图、多用户级别的命令行界面,而不同视图或不同用户级的命令行界面所能够进行的命令测试是不一样的,而且动辄就可以达到几千条命令,命令之间不同含义的组合甚至可以达到几十万条之多,同时随着系统的升级或变迁,系统设备内还会出现新旧命令的更替,为设备提出了更高的命令测试需求。
举例来说,以下命令格式是网络设备上常见的一种聚合命令格式:
Display{ip{routi|vpn}|clock[config]|fib{acl|verbose|vpn}}
将上述命令格式用命令树的形式来表现就形成了如图1所示的命令树,图1中命令树的结构来自于语法规则,其中标注为叶子结点的是命令行中有<CR>提示的地方,所说的<CR>提示表示该命令行已经结束,可以输入回车执行测试,如果命令行中不含有<CR>提示信息,则表示该命令行不能结束,需要继续进行填写;其他的结点是命令行中的一个单词或参数,是一条完整命令的一部分;而命令树顶部的display所代表的结点可以看成是命令树的根结点。
这样从根结点到任一的叶子结点就可以形成一条完整的命令,在进行命令行接口的测试时,就需要对每一条完整的命令进行测试验证。而按照现有技术中的命令格式和命令树结构,设备在进行命令测试时,往往需要耗费较多的系统资源来实现测试计算过程,当命令数量较多时,测试建树的效率也非常的低。
综上所述,在实现本发明过程中,发明人发现现有技术中至少存在如下问题:按照现有技术中的命令格式和命令树结构,设备在进行命令测试时,需要耗费较多的系统资源来实现测试计算过程,同时当命令数量较多时,测试的效率也非常的低,无法满足系统升级或变迁的测试需求。
发明内容
本发明实施方式所要解决的技术问题在于提供一种命令行接口的测试方法及装置,能够简化命令树的构造,建立一个很容易测试的命令树,提高可测试性,从而减少了设备计算资源的浪费,并且大大提高了测试的效率。
本发明实施方式是通过以下技术方案实现的:
一种命令行接口的测试方法,包括:
获得需要进行测试的聚合命令;
从所述聚合命令的根结点开始,对所述聚合命令进行等价二叉树的转化;
对所述等价二叉树的叶子结点进行遍历,并进行叶子结点到根结点的路径访问,获得每一条单命令和对应的预期提示信息;
对所获得的每一条单命令进行测试。
本发明实施方式还提供了一种命令行接口的测试装置,包括:
聚合命令获取单元,用于获得需要进行测试的聚合命令;
命令树转化单元,用于从所获得的聚合命令的根结点开始,对所述聚合命令进行等价二叉树的转化;
单命令获取单元,用于对所述等价二叉树的叶子结点进行遍历,并进行叶子结点到根结点的路径访问,获得每一条单命令和对应的预期提示信息;
命令测试单元,用于对所获得的每一条单命令进行测试。
由上述所提供的技术方案可以看出,首先通过获得需要进行测试的聚合命令,然后从所述聚合命令的根结点开始,对所述聚合命令进行等价二叉树的转化,再对所述等价二叉树的叶子结点进行遍历,并进行叶子结点到根结点的路径访问,获得每一条单命令和对应的预期提示信息,最后对所获得的每一条单命令进行测试。这样通过等价二叉树的转化简化了命令树的构造,建立一个很容易测试的命令树,提高了可测试性,从而减少了设备计算资源的浪费,并且大大提高了测试的效率。
附图说明
图1为现有技术中常见的命令树结构示意图;
图2为本发明实施方式所述方法的流程示意图;
图3为本发明实施方式所举例子中聚合命令进行等价二叉树转化后的结构示意图;
图4为现有技术中多视图下的命令行结构示意图;
图5为本发明实施方式所述装置的结构示意图。
具体实施方式
本发明实施方式提供了一种命令行接口的测试方法及装置。对于高端的数据设备来说,在进行命令行接口的测试时,常常面临很多问题,例如多视图问题,多级别问题,多命令分支问题和未使用的命令等问题。本发明实施方式通过将常见的聚合命令进行等价二叉树的转化,简化了命令树的构造,建立出一个很容易测试的命令树,提高了可测试性,从而减少了设备计算资源的浪费,并且大大提高了测试的效率。
上述方法流程还可以使用TCL(Tool Command Language,工具命令语言)的测试脚本语言来进行编写,将各流程步骤生成自动化测试的功能模块,然后再结合命令行测试工具来进行使用。这样就可以在测试过程中,实现自动化测试,同时还可以支持有效性、一致性等多种类型的测试需求,提高了命令行接口的测试效率。
为更好的描述本发明实施方式,现结合附图对本发明的具体实施方式进行说明,图2所示为本发明实施方式所述方法的流程示意图,所述方法包括:
步骤11:获得需要进行测试的聚合命令;
具体来说,就是通过命令行界面对被测设备进行测试操作时,利用特定的功能模块获得某一条需要进行测试的聚合命令。
步骤12:对聚合命令进行等价二叉树的转化。
具体来说,就是在获得一条需要进行测试的聚合命令之后,从所述聚合命令的根结点开始,采用先序遍历的方式将所述聚合命令转化为等价二叉树。其中在等价二叉树中增加可达空结点来表示所述聚合命令中的可选关系和并列关系,增加不可达空结点来表示所述聚合命令中的必选关系。
具体采用先序遍历的方式进行等价二叉树的转化,可以通过如下过程来实现:
从所述聚合命令的根结点开始,将第一个第一层结点标识为等价二叉树的左分支。此时,若所述第一层结点为可选项,则将与所述第一层结点对应的右分支标识为可达空结点;若所述第一层结点为必选项,则将与所述第一层结点对应的右分支标识为不可达空结点。
同时,若所述聚合命令的第一层结点有多个并列项,则将并列的第二个第一层结点标识在上述确定的可达空结点下的左分支上。此时,如果并列项就是两个,也就是说第二个第一层结点是最后一个第一层结点,那么再判断这两个并列项是否是可选,若这两个并列项为可选项,则将与所述第二个第一层结点对应的右分支标识为可达空结点;若这两个并列项为必选项,也就是说必须选择其中一个,则将与所述第二个第一层结点对应的右分支标识为不可达空结点。
然后再依此类推,如果并列项有3个或3个以上,则按照以上操作将并列的多个第一层结点依次进行标识,直到最后一个第一层结点时,再判断这多个并列项是否是可选的,并根据判断结果再进行相应的操作,这样就实现了对所述聚合命令进行等价二叉树的转化。
举例来说,若所获得的聚合命令为:COMMAND1[A|B|C]。这里A,B,和C就是聚合命令COMMAND1的三个并列的第一层结点,符号“|”表示并列的意思;而符号“[”和“]”就是表示可选的意思,也就是说A,B,C三个并列项为可选项,该聚合命令COMMAND1可以一个都不选,直接执行。
如图3所示为该聚合命令进行等价二叉树转化后的结构示意图,图中:从根结点COMMAND1开始,首先将第一个第一层结点A标识为左分支,由于有并列的可选项存在,故将与A对应的右分支标识为可达空结点,这里可以用“O”来标识,也可以用其他的符号来进行标识;然后将并列的第二个第一层结点B标识在上述确定的可达空结点下的左分支上,也就是结点O下的左分支下,由于还有一个并列的可选项C存在,故将与B对应的右分支标识为可达空结点O;同样的,再将并列的第三个第一层结点C按照以上的方法,标识在上述可达空结点O下的左分支上,此时由于C是最后一个第一层结点,同时A,B,C三个并列项为可选项,故将与C对应的右分支标识为可达空结点O。
另外,在以上例子中,若所获得的聚合命令为:COMMAND1{A|B|C}。
这里的符号“{”和“}”表示必选的意思,也就是A,B,C这三个并列项为必选项,该聚合命令COMMAND1必须选择一个才能进行执行操作。
在对这个聚合命令进行等价二叉树的转化时,对结点A,B,C的标识过程与上述方法相同,只是在标识完C之后,由于C是最后一个第一层结点,同时A,B,C三个并列项为必选项,故将与C对应的右分支标识为不可达空结点,这里不可达空结点可以用“X”来标识,也可以用其他的符号来进行标识。
另外,当所述聚合命令的第一层结点下包括有一个或多个分结点时,将所述第一层结点作为根结点,对所述第一层结点进行等价二叉树的转化。以上述所举的例子中,聚合命令COMMAND1[A|B|C]来说,其中的第一层结点A或B或C下有可能还包括有一个或多个的分结点,此时就可以将A或B或C作为根结点,按照以上所述的方法对A或B或C进行等价二叉树的转化,最终就可以得到一个完整的等价二叉树。
步骤13:遍历叶子结点,获得单命令和预期提示信息。
具体来说,就是在进行以上步骤1 2的操作,对聚合命令进行等价二叉树的转化之后,再对所述等价二叉树的叶子结点进行遍历,并进行叶子结点到根结点的路径访问,从而获得每一条单命令和对应的预期提示信息。
这里遍历叶子结点的方法可以是将所述等价二叉树的每一个叶子结点到根结点的链路连接在一起,并进行叶子结点到根结点的路径访问,从而获得每一条单命令和对应的预期提示信息。其中,如果叶子结点为可达空结点或不可达空结点,那么在将该叶子结点连接到根结点的链路上,所有非空左分支都是所获得的单命令的预期提示信息;而所有空的左分支下面,更深一层的非空左分支也是所获得的单命令的预期提示信息。也就是说,如果在叶子结点连接到根结点的链路上,左分支不是空结点,则该左分支就是单命令的预期提示信息;如果该左分支是空结点,那么就到该左分支的下一层,此次若下一层的左分支不是空结点,则这个下一层左分支也是单命令的预期提示信息;但是若下一层的左分支是空结点,则需要再进行上述操作,即再到这层左分支的下一层,再判断这个下一层的左分支是否为空结点,如果不是空结点,那么这个左分支就是单命令的预期提示信息,以此类推。
另外,如果所述叶子结点为可达空结点,那么由所述叶子结点所获得的单命令的预期提示信息中包含最终命令提示信息;如果所述叶子结点为不可达空结点,那么由所述叶子结点所获得的单命令的预期提示信息中就不包含最终命令提示信息。
以上述所举的例子中,聚合命令COMMAND1[A|B|C]的拆分遍历来说,按照图3中的等价二叉树进行遍历,可以将上述聚合命令拆分成四个单命令:
COMMAND1 A
COMMAND1 B
COMMAND1 C
COMMAND1
在获得以上四个单命令的同时,还可以分别得到其在命令行界面上的预期提示信息,形成一一对应关系,具体如下表1所示:
序号 | 拆分获得的单命令 | 预期提示信息 |
1 | COMMAND1 A | <CR> |
2 | COMMAND1 B | <CR> |
3 | COMMAND1 C | <CR> |
4 | COMMAND1 | {A}{B}{C}{<CR>} |
(表1)
以上的预期提示信息<CR>表示该命令行已经结束,可以输入回车直接执行测试;而并列的{A}{B}{C}{<CR>}表示这四个提示信息是并列出现的,并且不分先后次序。
步骤14:对所获得的每一条单命令进行测试。
具体来说,就是在进行以上步骤13的操作之后,就可以对所获得的每一条单命令进行测试操作,实现命令分解的全覆盖。
另外,当所述聚合命令增加多层结构,也就是命令树的层次比较深时,在进行等价二叉树的转化过程中,可以将所述不可达空结点下面的分支去除,直接剪枝,这样就大大提高了测试建树的效率,进一步减少了设备计算资源的浪费。
通过以上的操作步骤,就可以将常见的聚合命令进行等价二叉树的转化,简化了命令树的构造,建立出一个很容易测试的命令树,提高了可测试性,从而减少了设备计算资源的浪费,并且大大提高了测试的效率。
另外,在进行以上步骤11的操作,获得需要进行测试的聚合命令时,若所获得的聚合命令为任意顺序的多个选项的组合时,则将所述聚合命令优化拆分为多个替代聚合命令,然后再对这每一个替代聚合命令进行后继的处理操作。
这里所述的优化拆分可以通过如下的方法来实现:选择所有选项,并将其正向组合,获得一个替代聚合命令;根据正向组合所获得的替代聚合命令,在尾部依次去掉一个选项,获得相应的替代聚合命令;选择所有选项,并将其反向组合,获得一个替代聚合命令;根据反向组合所获得的替代聚合命令,在尾部依次去掉一个选项,获得相应的替代聚合命令;每次只选择多个选项中的一个选项,获得相应的替代聚合命令;不选择任何一个选项,获得一个替代聚合命令;检查所获得的所有替代聚合命令,消减重复的替代聚合命令。
通过这样的正反两次选择,也证明了每一个并列选项的前后次序是没有依赖关系的。
举例来说,若获得聚合命令是:COMMAND2{A|B|C|D|E}*。
其中包括了5个可以选择的项:A,B,C,D,E。这五个选项由于标注了星号(*),则表示可以任意选择其中的若干个附加在命令COMMAND2后面,附加的顺序也是任意的;然后再按照以上所述的优化拆分方法进行操作,得到如下表2所示的一一对应关系:
1、选择所有选项,正向组合 (表2中为1)
2、根据正向组合,依次在尾部递减 (表2中为2-5)
3、选择所有选项,反向组合 (表2中为6)
4、根据反向组合,依次在尾部递减 (表2中为7-10)
5、每次之选择一个选项 (表2中为11-15)
6、一个选项都不选的时候 (表2中为16)
7、消减重复项 (表2中的5和11,10和15实际上是重复的)
序号 | 拆分获得的替代聚合命令 | 预期提示信息 |
1 | COMMAND2 A B C D E | <CR> |
2 | COMMAND2 A B C D | {<CR>}{E} |
3 | COMMAND2 A B C | {<CR>}{E}{D} |
4 | COMMAND2 A B | {<CR>}{E}{D}{C} |
5 | COMMAND2 A | {<CR>}{E}{D}{C}{B} |
6 | COMMAND2 E D C B A | <CR> |
7 | COMMAND2 E D C B | {<CR>}{A} |
8 | COMMAND2 E D C | {<CR>}{A}{B} |
9 | COMMAND2 E D | {<CR>}{A}{B}{C} |
10 | COMMAND2 E | {<CR>}{A}{B}{C}{D} |
11(重复5) | COMMAND2 A | {<CR>}{B}{C}{D}{E} |
12 | COMMAND2 B | {<CR>}{A}{C}{D}{E} |
13 | COMMAND2 C | {<CR>}{A}{B}{D}{E} |
14 | COMMAND2 D | {<CR>}{A}{B}{C}{E} |
15(重复10) | COMMAND2 E | {<CR>}{A}{B}{C}{D} |
16 | COMMAND2 | {A}{B}{C}{D}{E} |
(表2)
通过以上的优化拆分操作,就可以将所述聚合命令优化拆分为多个替代聚合命令,然后再对每个替代聚合命令进行后继的处理操作。
另外,以上所述的优化拆分也可以通过这样的方法来实现:选择所有选项,并将其正向组合,获得一个包含所有选项的替代聚合命令;将所述包含所有选项的替代聚合命令的首部第一个选项去掉,获得一个替代聚合命令;将去掉的首部第一个选项放在尾部,获得另一个包含所有选项的替代聚合命令;然后再重复进行以上第二步和第三步的操作,循环的将当前包含所有选项的替代聚合命令的首部第一个选项去掉,获得相应的替代聚合命令,并将去掉的首部第一个选项放在相应替代聚合命令的尾部,获得相应的包含所有选项的替代聚合命令;每次只选择多个选项中的一个选项,获得相应的替代聚合命令;不选择任何一个选项,获得一个替代聚合命令;检查所获得的所有替代聚合命令,消减重复的替代聚合命令。
另外,所述的优化拆分除了按照以上的方法实现外,还可以通过给用户提供操作界面,由用户自行的设置拆分组合方式,从而获得相应的替代聚合命令,提高了优化拆分的灵活性,优化了测试过程。
另外,在对每一条命令进行测试时,还可以验证命令级别的正确性,并在命令级别错误时进行相应的记录。具体来说,在所述聚合命令所属的当前用户级别下,对所获得的每一条单命令进行测试,若有某一条单命令不存在,则该单命令的命令级别错误,并记录该单命令的命令级别写低的错误情况。
除了进行以上的正向测试外,还可以进行反向测试。具体来说,在所述当前用户级别的低一用户级别下,获得所述聚合命令的每一条最终单命令,这里所述的最终单命令是包含<CR>提示,可以直接输入回车执行测试的单命令;然后再对所获得的每一条最终单命令进行测试,若有某一条最终单命令存在,则该最终单命令的命令级别错误,并记录该最终单命令的命令级别写高的错误情况。
举例来说,若获得的聚合命令为:COMMAND3[A B|C D];且当前用户级别为2,即配置级。按照以上所述方法进行等价二叉树的转化,并进行叶子结点的遍历后,得到如下表3所示的级别验证项目,其中的表项1~5是正向测试的内容,表项6~7是反向测试的内容:
序号 | 级别 | 拆分获得的单个命令 | 预期提示信息 |
1 | 2:配置级 | COMMAND3 A B | <CR> |
2 | 2:配置级 | COMMAND3 A | {B} |
3 | 2:配置级 | COMMAND3 C D | <CR> |
4 | 2:配置级 | COMMAND3 C | D |
5 | 2:配置级 | COMMAND3 | {A}{C} |
6(来源于1) | 1:监控级 | COMMAND3 A B | 命令不存在* |
7(来源于3) | 1:监控级 | COMMAND3 C D | 命令不存在 |
(表3)
从上表3中可知,在当前用户级别,即配置级下进行如表项1~5的正向测试时,所获得的各单个命令是存在的,这表示各单个命令的命令级别并没有写低;然后在当前用户级别的低一用户级别,即监控级下进行如表项6~7的反向测试时,所获得的两个单个命令是不存在的,这表示这两个单个命令的命令级别并没有写高。综合正反测试的结论,就可以得知表项6和7中的命令的命令级别是正确的。
这里若某一条单命令不是最终单命令,则不需要对该单命令进行反向测试,例如上表3中的表项2,4,5中的命令就不需要进行反向测试,这是因为这些命令并不是包含<CR>提示信息的最终命令,也就是说这些命令不完全属于当前的命令,有可能属于更低级别命令中的前缀或参数,这样就不需要对这些命令进行反向的测试,从而进一步简化了验证的过程,提高了验证效率。
另外,当命令行接口存在多个视图时,如图4所示为多视图下的命令行结构示意图,在这种情况下,可以将用户登录的第一个视图当作根结点,其他多个视图当作是叶子结点,对所述多个视图进行等价二叉树的转化。由于用户每次登录时的第一个视图有可能是不一样的,所以在选取根结点时,只需要将用户登录的第一个视图当作根结点,而将其他视图当作是叶子结点,然后在对这多个视图进行等价二叉树的转化。
在得到多视图等价二叉树之后,可以将每个视图当作根结点,对每个视图下的多个聚合命令再进行等价二叉树的转化,从而就在多视图下形成了一组命令的森林;然后再遍历所转化后的等价二叉树的各个视图,获得多个视图下的每一条聚合命令;这样就可以对这每一条聚合命令进行上述步骤12的操作。
另外,在对多个视图进行等价二叉树的转化之后,还可以对所获得的多视图等价二叉树的叶子结点进行遍历,并进行叶子结点到根结点的路径访问,从而获得每一个视图和对应的预期聚合命令;然后再输入所述预期聚合命令,以此来验证与该预期聚合命令对应的视图是否存在,获得视图验证结果。具体来说,若输入的预期聚合命令不存在,则与该预期聚合命令对应的视图也是不存在的;若输入的预期聚合命令是存在的,则与该预期聚合命令对应的视图也是存在的。
上述所获得的视图验证结果也可以作为对该视图下的聚合命令进行测试的前置条件。具体来说,若视图验证结果为该视图存在,则可以对该视图下的聚合命令进行测试;反之,若视图验证结果为该视图不存在,则不需要对该视图下的聚合命令进行测试。
另外,在对所获得的每一条单命令进行测试之后,还可以获得测试过程中未使用过的命令。具体来说就是,当对所有视图下的每一条聚合命令的叶子结点进行遍历时,若发现不符合预期提示信息的未覆盖分支,则对全部分支中符合预期提示信息的分支进行标识,这里所说的未覆盖指的是主命令在语法规则中,没有描述这个叶子结点处于并列关系的其他分支。
在对所获得的全部单命令测试完毕后,再对一直没有标识的不完整分支做叶子结点的遍历,从而获得最终不符合预期提示信息的一部分命令,也就是测试过程中未使用过的命令。这里为了使不完整分支更加的清楚,可以将那些有标识的符合预期提示信息的分支进行剪枝处理,也就是将它们去除;这样就可以得到一颗不完整的命令树,然后再遍历这些不完整分支的叶子结点,从而获得未使用过的命令。
本发明实施方式还提供了一种命令行接口的测试装置,如图5为本发明实施方式所述装置的结构示意图,所述装置包括聚合命令获取单元、命令树转化单元、单命令获取单元和命令测试单元。其中所述的聚合命令获取单元用于获得需要进行测试的聚合命令,具体来说,就是在通过命令行界面对被测设备进行测试操作时,由所述的聚合命令获取单元来获得某一条需要进行测试的聚合命令。
所述的命令树转化单元用于从所获得的聚合命令的根结点开始,对所述聚合命令进行等价二叉树的转化。具体来说,就是在获得某一条需要进行测试的聚合命令之后,从所述聚合命令的根结点开始,采用先序遍历的方式将所述聚合命令转化为等价二叉树。其中在等价二叉树中增加可达空结点来表示所述聚合命令中的可选关系和并列关系,增加不可达空结点来表示所述聚合命令中的必选关系。
所述的单命令获取单元用于对所述等价二叉树的叶子结点进行遍历,并进行叶子结点到根结点的路径访问,获得每一条单命令和对应的预期提示信息。具体来说,是将等价二叉树的每一个叶子结点到根结点的链路连接在一起,并进行叶子结点到根结点的路径访问,从而获得每一条单命令和对应的预期提示信息。
所述的命令测试单元用于对所获得的每一条单命令进行测试,实现命令分解的全覆盖。
另外,所述测试装置中还可以包括优化拆分单元,所述的优化拆分单元用于当所获得的聚合命令为任意顺序的多个选项的组合时,将所述聚合命令优化拆分为多个替代聚合命令;再由所述命令树转化单元对每个替代聚合命令进行处理操作,具体的优化拆分方法如上方法实施方式所述。
所述的优化拆分单元中还可以包括用户操作模块,所述的用户操作模块用于提供给用户操作界面,由用户自行设置拆分组合,获得相应的替代聚合命令。
另外,在所述测试装置中还可以包括级别验证单元,所述的级别验证单元用于对所获得的单命令的命令级别进行验证,并在命令级别错误时进行相应的记录。具体来说,在当前用户级别下,对所获得的每一条单命令进行测试,若有某一条单命令不存在,则该单命令的命令级别错误,并记录该单命令的命令级别写低的错误情况;在所述当前用户级别的低一用户级别下,对所获得的每一条最终单命令进行测试,若有某一条最终单命令存在,则该最终单命令的命令级别错误,并记录该最终单命令的命令级别写高的错误情况。
另外,在所述测试装置中还可以包括视图转换单元,所述的视图转换单元用于当命令行接口存在多个视图时,将用户登录的第一个视图当作根结点,其他多个视图当作是叶子结点,对所述多个视图进行等价二叉树的转化;并将每个视图当作根结点,对每个视图下的多个聚合命令进行等价二叉树的转化;在遍历所转化后的等价二叉树的视图后,获得多个视图下的每一条聚合命令。
另外,在所述测试装置中还可以包括未使用命令发现单元,所述的未使用命令发现单元用于在对所获得的每一条单命令进行测试之后,发现测试过程中未使用过的命令。具体来说,当对所有视图下的每一条聚合命令的叶子结点进行遍历时,若发现不符合预期提示信息的未覆盖分支,则对全部分支中符合预期提示信息的分支进行标识;在对所获得的全部单命令测试完毕后,对没有标识的不完整分支做叶子结点的遍历,从而获得测试过程中未使用过的命令。
以上所述的测试装置可以设置于被测试设备上,也可以设置成单独的功能实体。
综上所述,本发明实施方式通过将常见的聚合命令进行等价二叉树的转化,简化了命令树的构造,建立出一个很容易测试的命令树,提高了可测试性,从而减少了设备计算资源的浪费,并且大大提高了测试的效率;在测试过程中,还能够解决多视图存在的问题,并能够对命令级别进行有效的验证,同时还可以发现设备上所有未使用过的命令,提高了测试的覆盖效果,扫除了测试盲区。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (22)
1.一种命令行接口的测试方法,其特征在于,
获得需要进行测试的聚合命令;
从所述聚合命令的根结点开始,对所述聚合命令进行等价二叉树的转化;
对所述等价二叉树的叶子结点进行遍历,并进行叶子结点到根结点的路径访问,获得每一条单命令和对应的预期提示信息;
对所获得的每一条单命令进行测试;
其中,所述从所述聚合命令的根结点开始,对所述聚合命令进行等价二叉树的转化,具体包括:
从所述聚合命令的根结点开始,采用先序遍历的方式将所述聚合命令转化为等价二叉树;
在等价二叉树中增加可达空结点来表示所述聚合命令中的可选关系和并列关系,并增加不可达空结点来表示所述聚合命令中的必选关系。
2.如权利要求1所述的命令行接口的测试方法,其特征在于,所述方法还包括:
当所述聚合命令的第一层结点下包括有一个或多个分结点时,将所述第一层结点作为根结点,对所述第一层结点进行等价二叉树的转化。
3.如权利要求1或2所述的命令行接口的测试方法,其特征在于,所述对所述等价二叉树的叶子结点进行遍历,并进行叶子结点到根结点的路径访问,获得每一条单命令和对应的预期提示信息,具体包括:
对所述等价二叉树的叶子结点进行遍历,将所述等价二叉树的每一个叶子结点到根结点的链路连接在一起,并进行叶子结点到根结点的路径访问,获得每一条单命令和对应的预期提示信息。
4.如权利要求3所述的命令行接口的测试方法,其特征在于,在进行叶子结点到根结点的路径访问时,所述方法还包括:
如果叶子结点为可达空结点或不可达空结点,那么在将该叶子结点连接到根结点的链路上,所有非空左分支都是所获得的单命令的预期提示信息;而所有空的左分支下面,更深一层的非空左分支也是所获得的单命令的预期提示信息;
如果所述叶子结点为可达空结点,那么由所述叶子结点所获得的单命令的预期提示信息中包含最终命令提示信息;
如果所述叶子结点为不可达空结点,那么由所述叶子结点所获得的单命令的预期提示信息中就不包含最终命令提示信息。
5.如权利要求1或2所述的命令行接口的测试方法,其特征在于,所述方法还包括:
当所述聚合命令增加多层结构,并进行等价二叉树的转化时,将所述不可达空结点下面的分支去除。
6.如权利要求1或2所述的命令行接口的测试方法,其特征在于,所述方法还包括:
当所述聚合命令为任意顺序的多个选项的组合时,将所述聚合命令优化拆分为多个替代聚合命令。
7.如权利要求6所述的命令行接口的测试方法,其特征在于,所述的优化拆分具体为:
选择所有选项,并将其正向组合,获得一个替代聚合命令;
根据正向组合所获得的替代聚合命令,在尾部依次去掉一个选项,获得相应的替代聚合命令;
选择所有选项,并将其反向组合,获得一个替代聚合命令;
根据反向组合所获得的替代聚合命令,在尾部依次去掉一个选项,获得相应的替代聚合命令;
每次只选择多个选项中的一个选项,获得相应的替代聚合命令;
不选择任何一个选项,获得一个替代聚合命令;
检查所获得的所有替代聚合命令,消减重复的替代聚合命令。
8.如权利要求6所述的命令行接口的测试方法,其特征在于,所述的优化拆分具体为:
选择所有选项,并将其正向组合,获得一个包含所有选项的替代聚合命令;
将所述包含所有选项的替代聚合命令的首部第一个选项去掉,获得一个替代聚合命令;
将去掉的首部第一个选项放在尾部,获得另一个包含所有选项的替代聚合命令;
重复进行相应的操作,循环的将当前包含所有选项的替代聚合命令的首部第一个选项去掉,获得相应的替代聚合命令,并将去掉的首部第一个选项放在相应替代聚合命令的尾部,获得相应的包含所有选项的替代聚合命令;
每次只选择多个选项中的一个选项,获得相应的替代聚合命令;
不选择任何一个选项,获得一个替代聚合命令;
检查所获得的所有替代聚合命令,消减重复的替代聚合命令。
9.如权利要求6所述的命令行接口的测试方法,其特征在于,所述的优化拆分具体为:
通过给用户提供操作界面,由用户自行设置拆分组合,获得相应的替代聚合命令。
10.如权利要求1或2所述的命令行接口的测试方法,其特征在于,所述方法还包括:
在所述聚合命令所属的当前用户级别下,对所获得的每一条单命令进行测试,若有某一条单命令不存在,则该单命令的命令级别出现写低的错误情况,并记录该单命令的命令级别写低的错误情况。
11.如权利要求10所述的命令行接口的测试方法,其特征在于,所述方法还包括:
在所述当前用户级别的低一用户级别下,获得所述聚合命令的每一条最终单命令;
对所获得的每一条最终单命令进行测试,若有某一条最终单命令存在,则该最终单命令的命令级别出现写高的错误情况,并记录该最终单命令的命令级别写高的错误情况。
12.如权利要求1或2所述的命令行接口的测试方法,其特征在于,所述方法还包括:
当命令行接口存在多个视图时,将用户登录的第一个视图当作根结点,其他多个视图当作是叶子结点,对所述多个视图进行等价二叉树的转化;
将每个视图当作根结点,对每个视图下的多个聚合命令进行等价二叉树的转化;
遍历所转化后的等价二叉树的视图,获得多个视图下的每一条聚合命令。
13.如权利要求12所述的命令行接口的测试方法,其特征在于,在对所述多个视图进行等价二叉树的转化之后,还包括:
对所获得的多视图等价二叉树的叶子结点进行遍历,并进行叶子结点到根结点的路径访问,获得每一个视图和对应的预期聚合命令;
输入所述预期聚合命令,验证与该预期聚合命令对应的视图是否存在,获得视图验证结果。
14.如权利要求13所述的命令行接口的测试方法,其特征在于,所述方法还包括:
将所述视图验证结果作为对该视图下的聚合命令进行测试的前置条件,
若视图验证结果为该视图存在,则对该视图下的聚合命令进行测试;反之,则不对该视图下的聚合命令进行测试。
15.如权利要求12所述的命令行接口的测试方法,其特征在于,所述方法还包括:
当对所有视图下的每一条聚合命令的叶子结点进行遍历时,若发现不符合预期提示信息的未覆盖分支,则对全部分支中符合预期提示信息的分支进行标识;
在对所获得的全部单命令测试完毕后,对没有标识的不完整分支做叶子结点的遍历,获得测试过程中未使用过的命令。
16.一种命令行接口的测试装置,其特征在于,包括:
聚合命令获取单元,用于获得需要进行测试的聚合命令;
命令树转化单元,用于从所获得的聚合命令的根结点开始,对所述聚合命令进行等价二叉树的转化,具体为:从所述聚合命令的根结点开始,采用先序遍历的方式将所述聚合命令转化为等价二叉树;并在等价二叉树中增加可达空结点来表示所述聚合命令中的可选关系和并列关系,增加不可达空结点来表示所述聚合命令中的必选关系;
单命令获取单元,用于对所述等价二叉树的叶子结点进行遍历,并进行叶子结点到根结点的路径访问,获得每一条单命令和对应的预期提示信息;
命令测试单元,用于对所获得的每一条单命令进行测试。
17.如权利要求16所述的命令行接口的测试装置,其特征在于,所述测试装置中还包括:
优化拆分单元,用于当所获得的聚合命令为任意顺序的多个选项的组合时,将所述聚合命令优化拆分为多个替代聚合命令;
再由所述命令树转化单元对每个替代聚合命令进行处理操作。
18.如权利要求17所述的命令行接口的测试装置,其特征在于,所述优化拆分单元中包括:
用户操作模块,用于提供给用户操作界面,由用户自行设置拆分组合,获得相应的替代聚合命令。
19.如权利要求16所述的命令行接口的测试装置,其特征在于,所述测试装置中还包括:
级别验证单元,用于对所获得的单命令的命令级别进行验证,并在命令级别错误时进行相应的记录;其中:
在当前用户级别下,对所获得的每一条单命令进行测试,若有某一条单命令不存在,则该单命令的命令级别出现写低的错误情况,并记录该单命令的命令级别写低的错误情况;
在所述当前用户级别的低一用户级别下,对所获得的每一条最终单命令进行测试,若有某一条最终单命令存在,则该最终单命令的命令级别出现写高的错误情况,并记录该最终单命令的命令级别写高的错误情况。
20.如权利要求16所述的命令行接口的测试装置,其特征在于,所述测试装置中还包括:
视图转换单元,用于当命令行接口存在多个视图时,将用户登录的第一个视图当作根结点,其他多个视图当作是叶子结点,对所述多个视图进行等价二叉树的转化;并将每个视图当作根结点,对每个视图下的多个聚合命令进行等价二叉树的转化;
在遍历所转化后的等价二叉树的视图后,获得多个视图下的每一条聚合命令。
21.如权利要求20所述的命令行接口的测试装置,其特征在于,所述测试装置中还包括:
未使用命令发现单元,用于在对所获得的每一条单命令进行测试之后,发现测试过程中未使用过的命令,其中:
当对所有视图下的每一条聚合命令的叶子结点进行遍历时,若发现不符合预期提示信息的未覆盖分支,则对全部分支中符合预期提示信息的分支进行标识;在对所获得的全部单命令测试完毕后,对没有标识的不完整分支做叶子结点的遍历,获得测试过程中未使用过的命令。
22.如权利要求16-21其中之一所述的命令行接口的测试装置,其特征在于,所述测试装置设置于被测试设备上,或设置成单独的功能实体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007103023842A CN101197734B (zh) | 2007-12-27 | 2007-12-27 | 命令行接口的测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007103023842A CN101197734B (zh) | 2007-12-27 | 2007-12-27 | 命令行接口的测试方法及装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200810189611 Division CN101471826B (zh) | 2007-12-27 | 2007-12-27 | 命令行接口的测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101197734A CN101197734A (zh) | 2008-06-11 |
CN101197734B true CN101197734B (zh) | 2011-04-13 |
Family
ID=39547896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007103023842A Expired - Fee Related CN101197734B (zh) | 2007-12-27 | 2007-12-27 | 命令行接口的测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101197734B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105099746A (zh) * | 2014-05-21 | 2015-11-25 | 中兴通讯股份有限公司 | Shell执行方法及装置 |
EP2990892B1 (de) | 2014-09-01 | 2019-05-22 | dSPACE digital signal processing and control engineering GmbH | Verfahren zum Verbinden einer Eingabe/Ausgabe-Schnittstelle eines für das Testen eines Steuergeräts eingerichteten Testgeräts |
CN104898459B (zh) * | 2015-04-13 | 2018-10-23 | 南京阿凡达机器人科技有限公司 | 一种基于命令行接口的机器人测试系统及测试方法 |
US10386806B2 (en) | 2015-09-01 | 2019-08-20 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for connecting models of technical systems in a testing device equipped for control unit development |
CN105281977B (zh) * | 2015-10-21 | 2018-04-03 | 北京软件产品质量检测检验中心 | 一种基于二叉树算法的智能性能测试方法及系统 |
CN107590160B (zh) * | 2016-07-08 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 一种监控基数树内部结构以实现测试的方法及装置 |
CN107423893B (zh) * | 2017-07-19 | 2020-12-22 | 北京京东尚科信息技术有限公司 | 一种业务流程的全覆盖测试方法和装置 |
CN110071848B (zh) * | 2019-03-27 | 2020-12-08 | 武汉思普崚技术有限公司 | 自动化测试命令行命令的方法、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1719786A (zh) * | 2004-07-08 | 2006-01-11 | 中兴通讯股份有限公司 | 数据通讯设备命令行接口命令的自动测试系统及测试方法 |
CN101079737A (zh) * | 2007-06-08 | 2007-11-28 | 中兴通讯股份有限公司 | 一种命令行接口命令的自动构造与解析方法及其系统 |
-
2007
- 2007-12-27 CN CN2007103023842A patent/CN101197734B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1719786A (zh) * | 2004-07-08 | 2006-01-11 | 中兴通讯股份有限公司 | 数据通讯设备命令行接口命令的自动测试系统及测试方法 |
CN101079737A (zh) * | 2007-06-08 | 2007-11-28 | 中兴通讯股份有限公司 | 一种命令行接口命令的自动构造与解析方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101197734A (zh) | 2008-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101197734B (zh) | 命令行接口的测试方法及装置 | |
CN101471826B (zh) | 命令行接口的测试方法及装置 | |
CN108647883B (zh) | 一种业务审批方法、装置、设备及介质 | |
DE102012102770B9 (de) | System und Verfahren zur Fehlereingrenzung und Fehlerabschwächung basierend auf einer Netzwerkmodellierung | |
CN100409710C (zh) | 检查电信网络中的节点配置的方法和系统 | |
US9053237B2 (en) | Test script generation | |
CN104978258B (zh) | 软件自动化测试方法及系统 | |
CN101645036B (zh) | 基于测试执行机能力度的测试任务自动分配方法 | |
CN103699693A (zh) | 一种基于元数据的数据质量管理方法及系统 | |
CN102880667B (zh) | 一种基于关键路径和禁忌搜索的测试任务调度方法 | |
CN108415846B (zh) | 一种生成最小自动化测试用例集的方法和装置 | |
CN103678446B (zh) | 基于数据视图和数据库表的改进的模式映射 | |
CN101808109A (zh) | 语义Web服务组合的模型转换及形式化验证方法 | |
CN102306122A (zh) | 自动化测试方法及设备 | |
CN109241514A (zh) | 数据自动导入方法、装置、计算机设备及存储介质 | |
CN102750301A (zh) | 针对aadl描述的综合化航电系统模型的蓝图生成方法 | |
CN105912601A (zh) | 能量管理系统分布式实时内存数据库的分区存储方法 | |
CN111324538A (zh) | 一种基于动态路由的微服务并行测试环境管理方法 | |
CN105187255A (zh) | 故障分析方法、故障分析装置和服务器 | |
Guérineau et al. | Towards a design-method selection framework for multidisciplinary product development | |
CN101763570A (zh) | 一种企业信息化数据的整合方法 | |
CN112365188B (zh) | 一种指挥信息系统满足度评估方法以及装置 | |
CN106293509A (zh) | 数据存储方法及系统 | |
CN110784349B (zh) | 一种电力通信设备与网络割接方案自动生成方法及装置 | |
CN107748720A (zh) | 一种检测功能测试案例的业务参数的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110413 Termination date: 20121227 |