CN1719786A - 数据通讯设备命令行接口命令的自动测试系统及测试方法 - Google Patents
数据通讯设备命令行接口命令的自动测试系统及测试方法 Download PDFInfo
- Publication number
- CN1719786A CN1719786A CN 200410009309 CN200410009309A CN1719786A CN 1719786 A CN1719786 A CN 1719786A CN 200410009309 CN200410009309 CN 200410009309 CN 200410009309 A CN200410009309 A CN 200410009309A CN 1719786 A CN1719786 A CN 1719786A
- Authority
- CN
- China
- Prior art keywords
- command
- module
- test
- node
- node tree
- 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.)
- Granted
Links
Images
Abstract
本发明涉及一种数据通讯设备命令行接口命令的自动测试系统及其方法,通过在一包括有测试用例自动生成与执行系统以及操作系统的测试主机的通讯协议软件层上构建人机命令字符串分析处理软件模块,自动在所述测试主机内生成网关命令节点树数据结构,并以所述数据结构为基础,利用软件实现网管命令测试用例的自动构造、生成与执行,以实现对一被测设备进行命令行接口命令的自动测试。本发明可自动生成网管人机命令节点树结构以及基于该节点树的人机命令测试用例的自动生成与自动执行,有效地克服现有测试方法测试路径单一、功能点覆盖率低的缺点,同时,可对本发明提出的方法和算法进行修改和扩充以满足特殊测试项的需要。
Description
技术领域
本发明涉及一种通用的数据通讯产品网管人机命令的自动测试系统及其测试方法,尤其涉及路由器、接入服务器、交换机等数据通讯产品测试领域中使用Telnet或串口通讯方式的CLI(Command Line Interface,命令行接口)测试用例自动生成与自动执行的系统及其测试方法。
背景技术
数据通讯设备,如路由器、数据交换机、宽带接入服务器等都支持基于命令行接口CLI的网管方式,通过主控机上的Telnet客户端程序或超级终端程序与设备建立连接,并通过在程序内键入并执行人机命令来对设备进行配置、管理和测试等操作。在设备内部,人机命令集一般以命令树的形式组织,命令字符串经解析后形成一组命令和参数的节点,实现各人机命令的函数首先通过对命令字符串进行解析以及对命令树进行搜索获得并执行。由于节点树中各级命令、子命令和参数的数量一般较大,由这些命令、子命令和参数节点的不同遍历组合方式以及嵌套层次所确定的网管命令数量极其庞大,给网管命令的全面测试带来很大困难。
目前,在网管命令自动测试领域还缺乏有力的工具支持,一般只能根据测试功能点的需要执行网管命令的个别子集,所覆盖的命令组合和执行流程相对单一,导致网管命令测试的覆盖率较低。目前有几种自动化工具,如RationalRobot、Symantec Procomm Plus等支持CLI方式测试用例的录制、回放与自动执行,主要是基于已录制的信息来构造并自动执行测试用例,不能覆盖更深层次的命令节点树信息,因此无法根本上解决网管人机命令的全面测试,尤其是健壮性、稳定性测试面临的问题。
发明内容
本发明所要解决的技术问题在于提供一种数据通讯设备的CLI命令自动测试系统,实现网管人机命令节点树结构的自动生成以及基于该节点树的人机命令测试用例的自动生成与自动执行。
本发明的另一目的在于提供一种数据通讯设备的CLI命令自动测试方法,自动生成网管人机命令节点树结构以及基于该节点树的人机命令测试用例的自动生成与自动执行,有效地克服现有测试方法测试路径单一、功能点覆盖率低的缺点,同时,可对本发明提出的方法和算法进行修改和扩充以满足特殊测试项的需要。
为了实现上述目的,本发明提供了一种数据通讯设备命令行接口命令的自动测试系统,其特点在于,包括
测试主机,包括有测试用例自动生成与执行系统以及操作系统,用于在测试主机通讯协议软件层上构建人机命令字符串分析处理软件模块,在测试主机内生成网管命令节点树数据结构,并以所述数据结构为基础,利用所述系统的软件实现网关命令测试用例的自动构造、生成与执行;
被测设备,与所述测试主机通讯连接,用于为所述测试主机提供人机命令源代码以及执行所述测试主机发送的测试用例进行测试与配置。
上述的数据通讯设备CLI命令的自动测试系统,其特点在于,所述测试用例自动生成与执行系统ATCGE(Automatic Test Case Generator & Executor)包括如下功能模块:通讯协议处理模块CPP(Communication Protocol Processor)、命令处理状态机模块CPSM(Command Processor State Machine)、节点树生成算法模块NTGA(Node Tree Generator Algorithm)、命令生成与执行模块CGE(Command Generator & Executor)、命令节点数据库模块CTDB(CommandTree Database)、系统控制模块SYSCTL(System Control)、人机界面模块GUI(Graphic User Interface),其中
所述通讯协议处理模块,构建于所述操作系统的通讯协议软件层上,用于完成通讯协议处理,为所述命令处理状态机模块提供文本方式的人机命令字符流,并将所述命令生成与执行模块生成的命令字符流发送至所述被测设备;
所述命令处理状态机模块,用于实现命令字符流的解析与处理,并调用所述节点树生成算法模块构造命令节点树数据库,并根据输入字符和当前状态决定后续操作;
所述节点树生成算法模块,用于通过所树系统控制模块间接接收并执行用户通过所述人机界面模块发送的控制命令,同时将所述命令处理状态机模块上传的命令和参数节点信息记录到命令节点树数据库,构造节点树;
所述命令生成与执行模块,用于根据所述人机界面模块的输入信息以及所述命令节点树数据库的信息,在所述系统控制模块的协调下完成所述命令节点树数据库的遍历和测试用例生成;
所述命令节点树数据库模块,用于保存所述节点树生成算法模块获得的CLI命令节点信息,并为所述节点树生成算法模块以及命令生成与执行模块提供接口,用户生成、修改或删除命令树信息;
所述系统控制模块,用于提供一组控制所述测试用例自动生成与执行系统运行方式的接口;
所述人机界面模块,用于实现所述测试用例自动生成与执行系统的图形操作界面。
上述的数据通讯设备CLI命令的自动测试系统,其特点在于,所述测试用例自动生成与执行系统系统的模块构建在操作系统TCP/IP协议栈软件模块之上,协议栈底层与NIC驱动模块接口,在物理层经网络连接与被测设备管理口相连;相应地,在被测设备侧分别有对应软件层,包括网络接口驱动模块、TCP/IP协议栈模块、Telnet服务器、人机命令处理模块。
上述的数据通讯设备CLI命令的自动测试系统,其特点在于,所述测试用例自动生成与执行系统系统模块构建于操作系统串口驱动模块之上,被测设备侧也有对应的软件层,包括串口驱动模块和命令接口模块,测试主机与被测设备通过串口线进行数据交互。
本发明还提供了一种数据通讯设备CLI命令的自动测试方法,其特点在于,通过在一包括有测试用例自动生成与执行系统以及操作系统的测试主机的通讯协议软件层上构建人机命令字符串分析处理软件模块,自动在所述测试主机内生成网关命令节点树数据结构,并以所述数据结构为基础,利用软件实现网管命令测试用例的自动构造、生成与执行,以实现对一被测设备进行CLI命令的自动测试。
上述的数据通讯设备CLI命令的自动测试方法,其特点在于,所述方法包括如下步骤:
步骤一,将一测试主机和一被测设备通讯连接成一自动测试系统模型,其中所述测试主机的测试用例自动生成与执行系统包括有如下功能模块:通讯协议处理模块、命令处理状态机模块、节点树生成算法模块、命令生成与执行模块、命令节点树数据库模块、系统控制模块以及人机界面模块;
步骤二,所述通讯协议处理模块完成通讯协议的处理,为所述命令处理状态机模块提供文本方式的人机命令字符流;
步骤三,所述命令处理状态机进行命令字符流的解析与处理,并调用所述命令节点树生成算法模块构造所述命令节点树数据库,自动生成网管人机命令节点树结构;
步骤四,所述命令生成与执行模块根据所述人机界面模块的输入信息以及所述命令节点树数据库的信息,在所述系统控制模块的协调下完成节点数据库的遍历和测试用例生成;
步骤五,将所执行的测试用例通过所述通讯协议处理模块发送至所述被测设备端执行。
上述的数据通讯设备CLI命令的自动测试方法,其特点在于,在步骤一中,所述通讯协议处理模块支持Telnet和串口两种通讯方式,可根据所述人机界面模块的用户设置项分别启动,并且在所述被测设备侧相应地设置有对应的软件层。
上述的数据通讯设备CLI命令的自动测试方法,其特点在于,在步骤三中,所述命令处理状态机模块内部实现字符处理状态机功能,根据输入字符和当前状态决定后续操作,包括的状态和操作有:等待登陆、等待口令、等待提示、命令名与命令描述、列表结束、消耗错误提示、空闲提示、换页提示、空闲、错误处理;所述节点树生成算法模块根据通讯设备CLI命令的查询方式确定,其查询步骤从根命令开始,然后采用深度遍历的方式依次查询并构造所述命令节点树数据库。
上述的数据通讯设备CLI命令的自动测试方法,其特点在于,在步骤四中,实现命令自动生成与执行的用户操作步骤如下:
通过所述人机界面模块选定所需执行的起始命令节点,包括根节点或叶节点,或终止节点,设置所选节点或节点范围内的部分子命令或参数节点的遍历属性;
设置参数节点的遍历方式;
通过所述人机界面模块控制遍历的开始和终止,控制命令生成和执行的方式。
上述的数据通讯设备CLI命令的自动测试方法,其特点在于,所述命令生成与执行模块实现命令自动生成与执行的算法如下:命令字符串的构造从所选的遍历起始节点的根节点开始,用深度遍历的方式依次查询所述命令节点树数据库以获取改节点的所有下级子节点,直至叶节点。
本发明可用于实现网管人机命令测试用例的自动生成与执行。该方法通过在测试主机通讯协议软件层上构建人机命令字符串分析处理模块,在测试主机内生成网管命令节点树数据结构,并以该数据结构为基础,实现网管命令测试用例的自动构造、生成与执行,从而有效地克服现有测试方法测试路径单一、功能点覆盖率低的缺点,同时,可对本发明提出的方法和算法进行修改和扩充以满足特殊测试项的需要。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1是本发明在Telnet方式下ATCGE与DUT的交互方式图;
图2是本发明在串口方式下ATCGE与DUT的交互方式图;
图3是本发明的ATCGE系统的内部结构及功能模块图。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细说明。
在Telnet和串口两种通讯方式下,运行ATCGE系统的测试主机与DUT的连接和交互模型如图1、图2所示。如图1所示,在Telnet方式下,测试主机1上的ATCGE系统模块10构建在操作系统TCP/IP协议栈20软件之上,协议栈20底层与NIC驱动30接口,在物理层经网络连接50与被测设备(DUT)2管理口相连;相应地,在DUT侧分别有对应软件层,包括网络接口NIC驱动30、TCP/IP协议栈20、Telnet服务器60、命令接口模块70。如图2所示,在串口方式下,测试主机1上的ATCGE软件模块10构建于操作系统串口驱动40程序之上,DUT2侧也使用对应协议软件,包括串口驱动40和命令接口模块80,测试主机与DUT通过串口线90进行数据交互。
如图3所示的ATCGE系统10内部结构及功能模块包括:通讯协议处理模块(CPP)11、命令处理状态机模块(CPSM)12、节点树生成算法模块(NTGA)13、命令节点树数据库模块(CTDB)14、命令生成与执行模块(CGE)15、系统控制模块(SYSCTL)16、人机界面模块(GUI)17。各模块的功能与实现方式如下:
通讯协议处理模块(CPP)11:
CPP支持Telnet和串口两种通讯方式,可根据GUI的用户设置项分别启动。在Telnet方式下,CPP实现Telnet客户端协议功能,提供RFC 854 NVT(Network Virtual Terminal,网络虚拟终端)的实现方式,丢弃NUL字符并按接收顺序将字符流上传。ATCGE的算法可全部基于NVT方式实现,CPP无需支持其他Telnet选项,因此CPP在选项协商时对DUT的选项请求可均做否定应答(CPP也可选择支持其他Telnet选项,如支持ECHO选项以提供回显、支持ANSI终端仿真方式,以处理ANSI ESC序列等)。CPP为CGE提供数据发送接口,将CGE生成的命令字符流发送至DUT。根据GUI提供的地址信息,CPP在端口23与DUT建立TCP连接。连接成功后,链路接收的数据流通过调用CPP协议状态机接口发送至Telnet状态机处理,该状态机处理数据流中的Telnet命令,进行协议交互,并调用CPSM模块接口将其他数据上传给CPSM处理。在串口方式下,CPP根据GUI提供的COM端口号、波特率、数据校验与停止位(与DUT设置一致)信息设置本地串口参数,并调用操作系统提供的读写文件API与DUT交互数据。CPP将串口接收的字符流发送至CPSM处理,并同样为CGE提供发送数据的接口函数。
命令处理状态机模块(CPSM)12:
CPSM在底层与CPP接口,接收CPP上传的命令数据流。CPSM内部实现字符处理状态机功能,根据输入字符和当前状态决定后续操作。
CLI命令的一般格式如下(用“[]”区分各项),其中“PROMPT”为命令提示字符串,COMMAND为键入的命令字符串,在COMMAND后键入查询字符(一般为“?”)后,DUT发送该命令字符串的所有下一级子命令、参数、列表结束符EOL(可选项),以及各子命令、参数的描述信息DESC字符串(包括全部空白字符)。
[PROMPT][COMMAND]
[SUBCMD][DESC]
[PARAM][DESC]
[EOL]
解析上述命令格式,CPSM包含的主要状态及操作如下:
WAITLOGIN(等待登录):接收并匹配DUT登录提示符(如“Login:”),登录提示符由用户通过GUI输入。获取提示符后,调用CPP向DUT发送登录名字符串,切换至WAITPWD状态。
WAITPWD(等待口令):接收并匹配DUT口令提示符(如“Password:”),口令提示符串由用户通过GUI输入。获取提示符后,调用CPP向DUT发送口令字符串,切换至WAITPMPT状态。
WAITPMPT(等待提示):接收并匹配DUT命令提示符PROMPT。命令提示符串由用户通过GUI输入。获取提示符后,初始化状态机内部数据结构,切换至IDLE状态,等待用户控制其后续执行。
CMDNAME(命令名)与CMDDESC(命令描述):分别用于接收SUBCMD、PARAM、DESC字符串。状态机在这两个状态间循环切换,直至命令列表结束,然后调用CPDB的接口函数将命令名和命令描述信息存储到命令树数据库。如果命令列表末尾为EOL字符串(该字符串可通过GUI设置),切换至LISTEND状态,如果为PROMPT字符串,切换至WAITPMPT状态。
LISTEND(列表结束):接收并匹配EOL字符串。如果匹配成功,对所接收的命令节点和参数节点的属性进行标记(如是否为叶节点以及参数节点的类型等)。状态切换至IDLE状态,等待NTGA控制其后续执行。
EATMSG(消耗错误提示):当NTGA判断已遍历至最深层节点时,调用CPP向DUT发送垃圾字符串清空DUT命令缓冲区,并控制CPSM切换至EATMSG状态。在此状态下,CPSM消耗返回的错误提示字符串,等待PROMPT字符串,然后切换至IDLE状态。
IDLEPMPT(空闲提示):DUT发送空闲提示字符串时CPSM切换至此状态。空闲提示字符串可由用户通过GUI设置。
NEXTPAGE(换页提示):当DUT发送的字符串行数大于终端长度(Terminal Length)时,将按页发送,并在每页后发送换页提示字符串。在此状态下,CPSM接收并匹配该字符串,如果匹配成功,调用CPP向DUT发送特殊字符(通过GUI输入)控制DUT发送下一页。该换页提示符由用户通过GUI设置。(如果通过GUI设置配置DUT终端长度的命令字符串,将DUT的终端长度设置为足够长,CPSM可以不包括本状态)。
IDLE(空闲):用于GUI和NTGA控制状态机的执行方式。切换至此状态的三种方式为:状态机内部逻辑控制切换;由NTGA直接设置;通过GUI设置(利用SYSCTL模块调用CPSM的接口函数)。
ERROR(错误处理):当上述各状态下的操作出现错误时,状态机切换至此状态。根据错误的类型,处理方式包括:状态机复位、向GUI报错或终止状态机的执行。
节点树生成算法模块(NTGA)13:
NTGA在底层与CPSM接口,直接控制命令处理状态机的操作;在上层,NTGA通过SYSCTL间接接收并执行用户通过GUI发送的控制命令;同时NTGA与CTDB接口,将CPSM上传的命令和参数节点信息记录到命令树数据库。
NTGA的算法根据通讯设备CLI命令的查询方式确定,该查询方式的一般格式如下:
[PROMPT][COMMAND][QUERY]
PROMPT为命令提示符,COMMAND为任意命令字符串(可以为空,此时查询的起点为本命令模式下的所有根命令),QUERY为查询字符串(一般为“?”,可通过GUI设置)。当COMMAND有下层子命令或参数时,在COMMAND后输入QUERY字符串,DUT将返回COMMAND下层的所有子命令和参数列表。按照上述格式,NTGA算法的查询步骤从根命令开始,然后采用深度遍历的方式依次查询并构造CTDB。NTGA的主要遍历算法(C语言格式)如下,其中CmdNode为定义命令节点的数据结构,pParent为传入的命令节点参数指针,bProcess、pChild、pNext为CmdNode中的字段,分别用作该命令节点的遍历标志、及其第一个子节点和下一节点指针。
TreeNode*searchNextCmd(TreeNode*pParent) { TreeNode*pNode=NULL; <!-- SIPO <DP n="8"> --> <dp n="d8"/> TreeNode*pSubNode=NULL; if(pParent==NULL) ReportError();/*向GUI发送出错信息*/ if(pParent->bProcess==TRUE) return NULL; for(pNode=pParent->pChild;pNode!=NULL;pNode= pNode->pNext) { if(pNode->bProcess==TRUE) continue; pSubNode=searchNextCmd(pNode);/*递归调用*/ if(pSubNode==NULL) { if(pNode->bProcess==FALSE) return pNode;/*返回非NULL*/ else continue;/*继续处理下一子命令*/ } else return pSubNode;/*逐级返回*/ } return NULL; }
当CPSM接收到EOL字符串后,调用NTGA的接口函数构造下一次查询的命令字符串,该接口函数首先调用searchNextCmd函数获得下一个命令节点,然后构造完整的命令查询字符串。当命令列表中只包含EOL字符串时,CPSM通知NTGA生成垃圾字符串,并调用CPP将垃圾字符串发送至DUT,清空DUT的命令缓冲区。
命令节点树数据库模块(CTDB)14:
CTDB为命令树数据库,保存NTGA获得的CLI命令节点信息,并为NTGA及CGE模块提供接口函数,用户生成、修改或删除命令树信息。CTDB的结构组织为多颗相关的二叉树,每颗二叉树用于记录一个命令模式下的全部命令节点信息。初始情况下CTDB包含一颗二叉树,用于记录登录后的命令模式下命令节点的信息。命令模式由用户通过GUI设置,设置方式为将某一命令节点设置为关键节点,同时设置该关键节点的完整命令字符串以及执行后的命令提示字符串,不同命令模式下的二叉树之间通过关键节点相关联。例如,将进入特权模式的命令节点,如enable设置为关键节点,输入特权模式命令的命令提示符,将在CTDB中构造一颗新的二叉树,用于记录特权模式下的命令节点信息。
CTDB中命令节点的定义(C语言格式)如下,包括如下信息:
typedef struct TreeNode
{
NodeType nType; /*节点类型,如子命令和各种参数*/
NodeData *pNode; /*节点数据,如命令名和命令描述等*/
TreeNode *pParent; /*父节点指针*/
TreeNode *pChild; /*第一个子节点指针*/
TreeNode *pNext; /*后一节点指针*/
TreeNode *pPrev; /*前一节点指针*/
BOOL bProcess; /*遍历标记*/
NodeState *pState; /*当前命令模式及其命令提示符等*/
NodeState *pNewSt; /*新的命令模式及其命令提示符等*/
NODE_PROP nProp; /*节点属性,如是否为叶节点关键节点*/
GuiNode *pGuiNode;/*与该节点关联的GUI节点指针*/
NodeBase *pBasePtr;/*节点类的基类指针*/
}TreeNode;
其中,pBasePtr为节点类基类指针,用于CGE实现命令的自动生成。命令节点与GUI显示相关的信息记录在结构GuiNode中,其中包括本节点及其父、子节点和前后节点的句柄,以及该节点的使能标记(用户可通过GUI设置节点的使能状态,CGE根据该标记确定命令生成的方式)等。CTDB为NTGA、CGE和SYSCTL提供的接口函数用于创建或删除节点、查询和修改节点中的任意信息。
命令生成与执行模块(CGE)15:
CGE用于实现CLI命令测试用例的自动生成与执行,分别与CPP、SYSCTL以及CTDB模块接口。在底层,CGE调用CPP的接口函数向DUT发送命令字符串。在上层,CGE调用CTDB的接口函数查询命令树数据库,获取命令节点相关信息;此外CGE与SYSCTL之间互有调用接口,用于CGE执行用户通过GUI传送的控制命令和向GUI发送执行信息。
CGE可实现多种CLI命令的自动生成方式,如遍历执行某命令模式下的所有命令,遍历执行某命令或子命令下的全部参数组合等。控制CGE实现命令自动生成与执行的用户操作步骤如下:
(1)通过GUI选定所需执行的起始命令节点(根节点或叶节点),或终止节点,设置所选节点或节点范围内的部分子命令或参数节点的遍历属性,如使能状态(如果为非使能状态,则遍历时跳过该节点)等;
(2)设置参数节点的遍历方式。例如,通过GUI设置字符串参数的长度、生成方式(随机值、固定值等),或范围型参数的上下限和步长等;
(3)通过GUI控制遍历的开始和终止,控制命令生成和执行的方式(如只生成命令列表或立即执行)等。
CGE实现命令自动生成与执行的算法如下:命令字符串的构造从所选的遍历起始节点的根节点开始,用深度遍历的方式依次查询CTDB以获取该节点的所有下级子节点,直至叶节点。对获取的各级节点,通过该节点类的基类指针调用节点类接口函数获取子命令或参数实例字符串,并将该字符串加入到命令字符串末尾。节点类的基类定义一组虚函数接口,如设置命令节点生成方式、设置节点默认值、获取节点字符串等,其中部分接口函数由CGE的遍历算法直接调用,其他接口由GUI通过SYSCTL间接调用。子命令和参数节点类为该基类的子类,分别提供上述虚函数接口的不同实现方式,各种参数节点字符串的获取方式分别由GUI控制实现。节点虚基类的定义如下(C++格式):
class NodeBase
{
public:
……
virtual char*getCmdString()=0;
virtual void setDefault()=0;
virtual void setTravMode()=0;
private:
char cmdBuf[256];/*命令字符串缓冲区*/
……
};
系统控制模块(SYSCTL)16:
SYSCTL位于GUI和系统其他模块之间,提供一组控制ATCGE运行方式的接口函数。SYSCTL的各项功能可分别在GUI和其他底层模块中实现,但为避免各模块间的紧密耦合,在ATCGE中将SYSCTL做为一个中间层实现,其封装的接口函数分为上下两层。在上层,SYSCTL为用户通过GUI控制ATCGE提供的调用接口包括:启动、停止和复位CPSM状态机、读取和设置CPSM状态;启动和停止NTGA节点生成算法;启动和停止CGE命令生成与执行算法;查询CTDB节点数据库的信息。在下层,SYSCTL为其他模块提供的接口包括一组向GUI反馈信息的接口函数,包括各底层模块的出错信息和调试信息的反馈。
人机界面模块(GUI)17:
GUI实现ATCGE的图形操作界面。GUI提供的CPSM参数输入和修改的内容包括:各种命令模式下的PROMPT字符串,QUERY字符串、登录提示字符串、口令提示字符串,空闲提示字符串,换页提示字符串,用户名、口令等。GUI为CTDB和CGE提供的输入和修改内容包括:各命令节点参数的使能状态、关键节点状态、各节点命令的提示字符串、查询和修改节点树数据库的全部信息等。GUI为CPP提供的输入和修改内容包括:DUT地址、端口号以及串口方式下的各种通讯参数。
本发明提出的ATCGE系统和相关算法为数据通讯设备CLI命令的自动测试提供了一种新的解决方案,所构造的ATCGE系统可实现网管人机命令测试用例的自动生成与执行。该方法无需参考和修改被侧设备的人机命令模块源代码,可直接应用于现有的大多数通讯设备。在本发明系统框架的基础上,可扩充实现多种测试执行流程和执行方式。例如,通过运行多个ATCGE软件实例,可模拟多台终端并发的健壮性和稳定性测试。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (10)
1、一种数据通讯设备命令行接口命令的自动测试系统,其特征在于,包括:
测试主机,包括有测试用例自动生成与执行系统以及操作系统,用于在测试主机通讯协议软件层上构建人机命令字符串分析处理软件模块,在测试主机内生成网管命令节点树数据结构,并以所述数据结构为基础,利用所述系统的软件实现网关命令测试用例的自动构造、生成与执行;
被测设备,与所述测试主机通讯连接,用于为所述测试主机提供人机命令源代码以及执行所述测试主机发送的测试用例进行测试与配置。
2、根据权利要求1所述的数据通讯设备命令行接口命令的自动测试系统,其特征在于,所述测试用例自动生成与执行系统包括如下功能模块:通讯协议处理模块、命令处理状态机模块、节点树生成算法模块、命令生成与执行模块、命令节点树数据库模块、系统控制模块以及人机界面模块,其中
所述通讯协议处理模块,构建于所述操作系统的通讯协议软件层上,用于完成通讯协议处理,为所述命令处理状态机模块提供文本方式的人机命令字符流,并将所述命令生成与执行模块生成的命令字符流发送至所述被测设备;
所述命令处理状态机模块,用于实现命令字符流的解析与处理,并调用所述节点树生成算法模块构造命令节点树数据库,并根据输入字符和当前状态决定后续操作;
所述节点树生成算法模块,用于通过所树系统控制模块间接接收并执行用户通过所述人机界面模块发送的控制命令,同时将所述命令处理状态机模块上传的命令和参数节点信息记录到命令节点树数据库,构造节点树;
所述命令生成与执行模块,用于根据所述人机界面模块的输入信息以及所述命令节点树数据库的信息,在所述系统控制模块的协调下完成所述命令节点树数据库的遍历和测试用例生成;
所述命令节点树数据库模块,用于保存所述节点树生成算法模块获得的命令行接口命令节点信息,并为所述节点树生成算法模块以及命令生成与执行模块提供接口,用户生成、修改或删除命令树信息;
所述系统控制模块,用于提供一组控制所述测试用例自动生成与执行系统运行方式的接口;
所述人机界面模块,用于实现所述测试用例自动生成与执行系统的图形操作界面。
3、根据权利要求2所述的数据通讯设备命令行接口命令的自动测试系统,其特征在于,所述测试用例自动生成与执行系统系统的模块构建在操作系统TCP/IP协议栈软件模块之上,协议栈底层与NIC驱动模块接口,在物理层经网络连接与被测设备管理口相连;相应地,在被测设备侧分别有对应软件层,包括网络接口驱动模块、TCP/IP协议栈模块、Telnet服务器、人机命令处理模块。
4、根据权利要求2所述的数据通讯设备命令行接口命令的自动测试系统,其特征在于,所述测试用例自动生成与执行系统系统模块构建于操作系统串口驱动模块之上,被测设备侧也有对应的软件层,包括串口驱动模块和命令接口模块,测试主机与被测设备通过串口线进行数据交互。
5、一种数据通讯设备命令行接口命令的自动测试方法,其特征在于,通过在一包括有测试用例自动生成与执行系统以及操作系统的测试主机的通讯协议软件层上构建人机命令字符串分析处理软件模块,自动在所述测试主机内生成网关命令节点树数据结构,并以所述数据结构为基础,利用软件实现网管命令测试用例的自动构造、生成与执行,以实现对一被测设备进行CLI命令的自动测试。
6、根据权利要求5所述的数据通讯设备命令行接口命令的自动测试方法,其特征在于,包括如下步骤:
步骤一,将一测试主机和一被测设备通讯连接成一自动测试系统模型,其中所述测试主机的测试用例自动生成与执行系统包括有如下功能模块:通讯协议处理模块、命令处理状态机模块、节点树生成算法模块、命令生成与执行模块、命令节点树数据库模块、系统控制模块以及人机界面模块;
步骤二,所述通讯协议处理模块完成通讯协议的处理,为所述命令处理状态机模块提供文本方式的人机命令字符流;
步骤三,所述命令处理状态机进行命令字符流的解析与处理,并调用所述命令节点树生成算法模块构造所述命令节点树数据库,自动生成网管人机命令节点树结构;
步骤四,所述命令生成与执行模块根据所述人机界面模块的输入信息以及所述命令节点树数据库的信息,在所述系统控制模块的协调下完成节点数据库的遍历和测试用例生成;
步骤五,将所执行的测试用例通过所述通讯协议处理模块发送至所述被测设备端执行。
7、根据权利要求6所述的数据通讯设备命令行接口命令的自动测试方法,其特征在于,在步骤一中,所述通讯协议处理模块支持Telnet和串口两种通讯方式,可根据所述人机界面模块的用户设置项分别启动,并且在所述被测设备侧相应地设置有对应的软件层。
8、根据权利要求7所述的数据通讯设备命令行接口命令的自动测试方法,其特征在于,在步骤三中,所述命令处理状态机模块内部实现字符处理状态机功能,根据输入字符和当前状态决定后续操作,包括的状态和操作有:等待登陆、等待口令、等待提示、命令名与命令描述、列表结束、消耗错误提示、空闲提示、换页提示、空闲、错误处理;所述节点树生成算法模块根据通讯设备命令行接口命令的查询方式确定,其查询步骤从根命令开始,然后采用深度遍历的方式依次查询并构造所述命令节点树数据库。
9、根据权利要求7所述的数据通讯设备命令行接口命令的自动测试方法,其特征在于,在步骤四中,实现命令自动生成与执行的用户操作步骤如下:
通过所述人机界面模块选定所需执行的起始命令节点,包括根节点或叶节点,或终止节点,设置所选节点或节点范围内的部分子命令或参数节点的遍历属性;
设置参数节点的遍历方式;
通过所述人机界面模块控制遍历的开始和终止,控制命令生成和执行的方式。
10、根据权利要求9所述的数据通讯设备命令行接口命令的自动测试方法,其特征在于,所述命令生成与执行模块实现命令自动生成与执行的算法如下:命令字符串的构造从所选的遍历起始节点的根节点开始,用深度遍历的方式依次查询所述命令节点树数据库以获取改节点的所有下级子节点,直至叶节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100093093A CN100388690C (zh) | 2004-07-08 | 2004-07-08 | 数据通讯设备命令行接口命令的自动测试系统及测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100093093A CN100388690C (zh) | 2004-07-08 | 2004-07-08 | 数据通讯设备命令行接口命令的自动测试系统及测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1719786A true CN1719786A (zh) | 2006-01-11 |
CN100388690C CN100388690C (zh) | 2008-05-14 |
Family
ID=35931516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100093093A Expired - Fee Related CN100388690C (zh) | 2004-07-08 | 2004-07-08 | 数据通讯设备命令行接口命令的自动测试系统及测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100388690C (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100421394C (zh) * | 2005-06-28 | 2008-09-24 | 华为技术有限公司 | 一种用户接口的自动测试装置和方法 |
CN101022375B (zh) * | 2007-04-04 | 2010-05-26 | 杭州华三通信技术有限公司 | 一种对无线局域网测试的集中式自动测试装置和方法 |
CN101387980B (zh) * | 2007-09-13 | 2010-09-22 | 英业达股份有限公司 | 配置文件测试系统及方法 |
CN101969476A (zh) * | 2010-09-25 | 2011-02-09 | 清华大学 | 用于半导体制造设备仿真的通讯模式管理方法及系统 |
CN101197734B (zh) * | 2007-12-27 | 2011-04-13 | 华为技术有限公司 | 命令行接口的测试方法及装置 |
CN102271066A (zh) * | 2011-08-22 | 2011-12-07 | 中兴通讯股份有限公司 | 命令行自动化智能测试方法及系统 |
CN102377611A (zh) * | 2010-08-18 | 2012-03-14 | 正文科技股份有限公司 | 动态主机配置协议服务器的自动测试系统 |
CN101471826B (zh) * | 2007-12-27 | 2012-12-12 | 华为技术有限公司 | 命令行接口的测试方法及装置 |
CN102946349A (zh) * | 2012-02-23 | 2013-02-27 | Ut斯达康通讯有限公司 | 一种基于OSPF协议的以太网E-Line业务链路发现方法及装置 |
CN104346280A (zh) * | 2014-10-31 | 2015-02-11 | 上海斐讯数据通信技术有限公司 | 一种交换机重启配置检查的方法及系统 |
CN104572430A (zh) * | 2013-10-24 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种终端应用界面的测试方法、装置和系统 |
CN105260317A (zh) * | 2015-11-19 | 2016-01-20 | 上海斐讯数据通信技术有限公司 | 一种测试用例的选取方法 |
CN106341197A (zh) * | 2016-08-11 | 2017-01-18 | 中国电子科技集团公司第四十研究所 | 一种用于多用户接入控制的接收机程控解析算法 |
CN107741911A (zh) * | 2017-11-01 | 2018-02-27 | 广州爱九游信息技术有限公司 | 接口测试方法、装置、客户端及计算机可读存储介质 |
CN107864010A (zh) * | 2017-11-10 | 2018-03-30 | 郑州云海信息技术有限公司 | 一种光纤交换机快速自检方法及装置 |
CN107977310A (zh) * | 2017-11-06 | 2018-05-01 | 杭州迪普科技股份有限公司 | 一种遍历测试命令生成方法及装置 |
CN111143006A (zh) * | 2019-12-25 | 2020-05-12 | 杭州迪普科技股份有限公司 | 命令帮助信息的获取方法及装置 |
CN114302436A (zh) * | 2021-12-31 | 2022-04-08 | 紫光展锐(重庆)科技有限公司 | 一种物理层测试方法、装置、芯片及模组设备 |
US11430536B2 (en) | 2018-12-20 | 2022-08-30 | Advantest Corporation | Software-focused solution for arbitrary all-data odd sector size support |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101625709B (zh) * | 2008-07-09 | 2011-05-18 | 华为技术有限公司 | 功能覆盖率的收集方法及装置 |
CN102289372A (zh) * | 2011-07-21 | 2011-12-21 | 京信通信系统(中国)有限公司 | 基于lut的字符串协议解析方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6823479B1 (en) * | 2000-02-14 | 2004-11-23 | Teradyne, Inc. | Network fault analysis tool |
CN1138382C (zh) * | 2001-05-29 | 2004-02-11 | 华为技术有限公司 | 传输产品树状业务分配方法 |
-
2004
- 2004-07-08 CN CNB2004100093093A patent/CN100388690C/zh not_active Expired - Fee Related
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100421394C (zh) * | 2005-06-28 | 2008-09-24 | 华为技术有限公司 | 一种用户接口的自动测试装置和方法 |
CN101022375B (zh) * | 2007-04-04 | 2010-05-26 | 杭州华三通信技术有限公司 | 一种对无线局域网测试的集中式自动测试装置和方法 |
CN101387980B (zh) * | 2007-09-13 | 2010-09-22 | 英业达股份有限公司 | 配置文件测试系统及方法 |
CN101197734B (zh) * | 2007-12-27 | 2011-04-13 | 华为技术有限公司 | 命令行接口的测试方法及装置 |
CN101471826B (zh) * | 2007-12-27 | 2012-12-12 | 华为技术有限公司 | 命令行接口的测试方法及装置 |
CN102377611A (zh) * | 2010-08-18 | 2012-03-14 | 正文科技股份有限公司 | 动态主机配置协议服务器的自动测试系统 |
CN101969476A (zh) * | 2010-09-25 | 2011-02-09 | 清华大学 | 用于半导体制造设备仿真的通讯模式管理方法及系统 |
CN101969476B (zh) * | 2010-09-25 | 2012-12-19 | 清华大学 | 用于半导体制造设备仿真的通讯模式管理方法及系统 |
CN102271066A (zh) * | 2011-08-22 | 2011-12-07 | 中兴通讯股份有限公司 | 命令行自动化智能测试方法及系统 |
CN102946349B (zh) * | 2012-02-23 | 2015-08-19 | Ut斯达康通讯有限公司 | 一种基于OSPF协议的以太网E-Line业务链路发现方法及装置 |
CN102946349A (zh) * | 2012-02-23 | 2013-02-27 | Ut斯达康通讯有限公司 | 一种基于OSPF协议的以太网E-Line业务链路发现方法及装置 |
CN104572430B (zh) * | 2013-10-24 | 2018-04-27 | 腾讯科技(深圳)有限公司 | 一种终端应用界面的测试方法、装置和系统 |
CN104572430A (zh) * | 2013-10-24 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种终端应用界面的测试方法、装置和系统 |
CN104346280A (zh) * | 2014-10-31 | 2015-02-11 | 上海斐讯数据通信技术有限公司 | 一种交换机重启配置检查的方法及系统 |
CN105260317A (zh) * | 2015-11-19 | 2016-01-20 | 上海斐讯数据通信技术有限公司 | 一种测试用例的选取方法 |
CN105260317B (zh) * | 2015-11-19 | 2017-10-13 | 上海斐讯数据通信技术有限公司 | 一种测试用例的选取方法 |
CN106341197A (zh) * | 2016-08-11 | 2017-01-18 | 中国电子科技集团公司第四十研究所 | 一种用于多用户接入控制的接收机程控解析算法 |
CN106341197B (zh) * | 2016-08-11 | 2018-11-20 | 中国电子科技集团公司第四十一研究所 | 一种用于多用户接入控制的接收机程控解析算法 |
CN107741911A (zh) * | 2017-11-01 | 2018-02-27 | 广州爱九游信息技术有限公司 | 接口测试方法、装置、客户端及计算机可读存储介质 |
CN107977310A (zh) * | 2017-11-06 | 2018-05-01 | 杭州迪普科技股份有限公司 | 一种遍历测试命令生成方法及装置 |
CN107864010A (zh) * | 2017-11-10 | 2018-03-30 | 郑州云海信息技术有限公司 | 一种光纤交换机快速自检方法及装置 |
US11430536B2 (en) | 2018-12-20 | 2022-08-30 | Advantest Corporation | Software-focused solution for arbitrary all-data odd sector size support |
CN111143006A (zh) * | 2019-12-25 | 2020-05-12 | 杭州迪普科技股份有限公司 | 命令帮助信息的获取方法及装置 |
CN114302436A (zh) * | 2021-12-31 | 2022-04-08 | 紫光展锐(重庆)科技有限公司 | 一种物理层测试方法、装置、芯片及模组设备 |
Also Published As
Publication number | Publication date |
---|---|
CN100388690C (zh) | 2008-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1719786A (zh) | 数据通讯设备命令行接口命令的自动测试系统及测试方法 | |
CN1265317C (zh) | 数据处理装置 | |
CN1220745A (zh) | 与传统主机系统操作持续相连的全球信息网/仿真器的服务器和全球信息网浏览器的终端仿真器 | |
CN1166115C (zh) | 一种管理互配单元及生产该单元的方法 | |
CN101035039A (zh) | Usb映射方法 | |
CN1893442A (zh) | 网络终端设备 | |
CN101068206A (zh) | 分组交换机、网络节点、分组交换架构及数据包路由方法 | |
CN1897575A (zh) | 多址传送通信方法 | |
CN1700665A (zh) | 分布式数据模型 | |
CN1848774A (zh) | 一种远程调用通信组件的系统及方法 | |
CN1809053A (zh) | 文本编码类协议通用解析器 | |
CN1841299A (zh) | 信息处理装置和程序产品 | |
CN1786965A (zh) | 一种新闻网页正文信息的提取方法 | |
CN1968134A (zh) | 基于中间件实现多媒体融合业务的方法及系统 | |
CN101042710A (zh) | 实现采集数据共享的方法、系统 | |
CN1852261A (zh) | 维护邻居表项的方法 | |
CN1280727C (zh) | 一种人机命令测试方法 | |
CN1614927A (zh) | 在b/s结构中实现树型结构的方法 | |
CN1577277A (zh) | 管理程序应用 | |
CN1946039A (zh) | 基于模板集的命令行回显信息解析方法及装置 | |
CN1357981A (zh) | 可进行多种应用协议测试的方法 | |
CN1447561A (zh) | 网络管理系统、要被管理的装置、管理装置和程序 | |
CN101030228A (zh) | 页面导航方法和装置及应用服务器 | |
CN1960367A (zh) | 一种通用多协议关联方法 | |
CN1320456C (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080514 Termination date: 20190708 |
|
CF01 | Termination of patent right due to non-payment of annual fee |