一种自动化测试系统及其方法

文档序号:6531703阅读:354来源:国知局
专利名称:一种自动化测试系统及其方法
技术领域
本发明涉及自动化测试系统,更具体地,本发明涉及一种动作词分层的自动化测试系统及其自动化测试方法。
背景技术
进行产品测试时,某些基本的业务功能和流程通常在产品的每个版本都需要进行测试,对于这些重复的测试工作可采用自动化测试系统,例如接入网关产品的自动化测试便可采用华为技术有限公司的基于GT3000测试平台的自动化测试体系。在自动化测试中的一个重要内容就是动作词(ActionWord,AW)的编写和维护。AW是实现一项功能的命令行脚本,是对被测产品的操作命令和功能的“封装”,它是测试逻辑的组成元素,众多的AW组成一个可重复使用的函数库。一系列按特定顺序执行的AW的组合便可以构成测试逻辑。自动化测试体中,被测产品的版本会发生变化,不同的版本间会出现命令的改变、命令参数的增减等等,这些改变都要求AW内部做出相应的变动,严重时测试逻辑也要做相应的变动。在某些自动化测试中,有多台被测设备,而被测版本又不完全相同,运行自动化测试脚本时需要对不同的版本进行区分。这些都给自动化测试造成很大的冲击,使AW维护的工作量明显增加。
目前对于被测产品版本的变化,大多数测试系统的处理方法是对不同的被测版本,自动化测试脚本都相应保留一个备份,并只对最新的版本进行维护。这种处理方法只能对最新版本进行AW优化,对早期版本进行优化的工作量将很庞大,对于产品出现分支版本的情况也比较难处理,需要同时维护多套自动化测试脚本。而且这种方法无法处理测试系统中有多台被测设备而各设备使用的版本又不相同的情况。

发明内容
本发明要解决的技术问题在于提供一种动作词分层的自动化测试系统及其自动化测试方法,有效的降低因被测产品版本变化而产生AW维护的工作量和难度,提高自动化测试脚本的可维护性。
为了解决上述的技术问题,本发明采用的技术方案在于提供一种动作词分层的自动化测试系统,包括虚拟编程接口模块、命令传输模块、至少一个命令模块和外部编程接口模块;所述虚拟编程接口模块位于系统的底层,为上层模块调用自动化测试体系功能函数提供一个统一的接口;所述命令传输模块调用虚拟编程接口模块提供的功能函数进行命令的发送和接收;所述命令模块根据不同版本调用特定功能的命令封装,向被测设备发送命令并获取设备响应;所述外部编程接口模块位于系统的最上层,为外部测试逻辑调用所述命令模块的功能提供一个统一的接口。
在本发明所述的自动化测试系统中,还包括直接访问全局数据的数据访问模块,为系统内其他各模块提供全局数据访问的统一接口。
在本发明所述的自动化测试系统中,还包括通过调用所述虚拟编程接口模块提供的功能函数为其他各模块提供信息输出的信息输出模块。
在本发明所述的自动化测试系统中,所述命令传输模块包括三层封装第一层XsendBx封装,调用所述虚拟编程接口模块提供的功能函数发送命令、根据设备响应进行错误类型判断和/或在被测设备正忙时重新发送命令;第二层XsendEx封装,调用第一层的XsendBx封装,在发送命令前判断与被测设备的通讯是否正常;第三层SendCom封装,调用第二层的XsendEx封装,为所述命令模块提供统一的接口发送命令并接收返回结果。
在本发明所述的自动化测试系统中,所述命令传输模块还包括有重新登陆子模块、命令模式切换子模块和通用返回错误处理子模块。
在本发明所述的自动化测试系统中,所述命令模块由第一层单个命令封装、第二层多个命令组合的功能封装和第三层能访问全局数据的功能集封装构成。
本发明还提供一种自动化测试方法,用在自动化测体系中对被测设备进行自动化测试,包括如下步骤(a)测试逻辑调用AW提供的外部编程接口模块;(b)外部编程接口模块根据测试逻辑调用相应的命令模块;(c)命令模块根据当前被测设备的版本选择相应的功能调用;(d)命令传输模块调用虚拟编程接口模块提供的自动化测试体系功能函数向被测设备发送选择的命令并接收设备响应;(e)命令模块获取设备响应并对设备响应的结果进行分析。
本发明所述的自动化测试方法中,所述步骤(c)进一步包括(c1)命令模块获取当前被测设备的版本;(c2)判断AW在当前版本是否有变化;(c3)如果AW没有发生变化,执行缺省的AW,然后转至步骤(c5);(c4)如果AW发生变化,执行与当前版本对应的AW;(c5)返回相应的执行结果。
本发明的自动化测试系统及其自动化测试方法,通过AW内部的分层处理,提供统一的外部编程接口,使测试逻辑与AW分离,在AW内部实现版本判断,根据当前版本调用相应的内部AW,这样可降低被测版本及AW变动对测试逻辑的影响,使自动化测试适应测试环境中出现不同被测版本的情况;AW内部不允许直接调用自动化测试体系提供的功能函数,而是提供一个统一的虚拟编程接口,使AW与自动化测试体系环境分离,减少了自动化测试体系接口改变对AW内部实现的影响,降低了AW维护的工作量,提高了可维护性。


图1是本发明自动化测试系统的一个实施例的方框示意图;
图2是本发明自动化测试系统的一个实施例中命令传输模块的结构示意图;图3是本发明自动化测试系统的一个实施例中命令模块的结构示意图;图4是本发明自动化测试方法的一个实施例的流程图;图5是本发明自动化测试方法的一个实施例中版本处理的流程图;图6是本发明自动化测试方法的一个实施例中命令处理的流程图。
具体实施例方式
以下将结合附图和具体实施例对本发明进行详细的介绍图1是本发明自动化测试系统的一个实施例的方框示意图。如图所示,该自动化测试系统主要由外部编程接口模块(EPI)21、多个命令模块22-24、数据访问模块25、命令传输模块26、信息输出模块27和虚拟编程接口模块(VPI)28组成。虚拟编程接口模块28位于整个分层系统的最底层,数据访问模块25、命令传输模块26和信息输出模块27均能直接调用虚拟编程接口模块28提供的功能;命令传输模块26又可以调用数据访问模块25和信息输出模块提供的功能;位于上层的命令模块22-24可调用数据访问模块25、命令传输模块26和信息输出模块27提供的功能,但是命令模块22-24不能直接调用虚拟编程接口模块28的功能;外部编程接口模块21位于整个分层系统的最上层,调用命令模块22-24的功能,同时外部编程接口模块21可直接访问全局数据40,但是外部编程接口模块21不能调用其他模块的功能;全局数据除了可以被外部编程接口21访问外,数据访问模块25可以访问全局数据40,剩下的其他模块不能直接访问全局数据40,如果需要访问全局数据,均需要通过数据访问模块25来进行。下面分别对每一功能模块进行说明该自动化测试系统中,虚拟编程接口模块28主要对自动化测试体系环境30所提供的各种功能函数进行封装,为上层模块的调用提供一个统一的接口,实现AW与自动化测试体系的隔离。虚拟编程接口模块28主要提供的功能封装有
VSend,执行命令的发送和接收,对tsend3进行封装,提供与tsend3相同的功能;VTextOut,执行信息的显示和输出,对putswin、ShowTraceMessage等功能进行封装;Vsleep,执行延时功能,对after命令进行封装。
该自动化测试系统中,信息输出模块27调用虚拟编程接口模块28提供的功能函数为其他各模块提供信息输出。具体地,信息输出模块27调用虚拟编程接口模块28中的VTextOut,其基本格式为TextOut{输出级别标识,输出内容,输出位置标识}信息输出模块27可执行系统信息输出,将系统信息输出到自动化系统的Log文件或结果文件中,实现目前ShowTraceMessage相同的功能。信息输出模块27还可执行调试信息分级输出,对调试信息定义不同的级别,将不同模块的调试信息输出到指定的不同位置。
该自动化测试系统中,命令传输模块26主要通过对虚拟编程接口模块28提供的VSend等函数的调用,实现如图2所示的三层封装第一层XsendBx封装263,调用虚拟编程接口模块28提供的Vsend函数,可执行以下三种操作(1)发送命令,不管设备是否收到命令,如果有设备响应返回,则返回成功,如果在规定的时间内没有收到设备响应,则返回失败;(2)进行错误类型判断,并返回错误类型码,其中错误类型是用户自定义的错误类型码,可通过参数传入;(3)进行遇忙重传处理,如果被测设备正忙,则重新发送命令,如果重发规定的次数后设备仍忙,则返回错误。
第二层XsendEx封装262,调用第一层的XsendBx,在发送命令前判断与被测设备之间的通讯是否正常,如果不正常则重新连接,并进入到断开前的模式下。
第三层SendCom封装261,为命令模块22-24提供统一的接口,调用XsendEx发送命令,根据预期返回结果列表和对应的返回值列表判断返回结果,返回相应的返回值。
通过命令传输模块的三层封装,命令模块22-24主要调用SendCom封装261来实现功能命令的发送和接收,并避免直接调用XsendEx和XsendBx,这样可保证内部实现的层次性和后续的维护。但是,特殊情况下也可允许命令模块22-24对XsendEx和XsendBx的直接调用。
如图2所示,命令传输模块26还包括有重新登陆子模块264、命令模式切换子模块265和通用返回错误处理子模块266三个辅助子模块。重新登陆子模块264执行系统的重新登陆,进入连接断开前设备所处的模式,关闭告警输出,切换默认语言。命令模式切换子模块265主要执行从当前模式进入到指定的模式。通用返回错误处理子模块266执行对被测设备目前通用的错误类型的判断。
该自动化测试系统中,命令模块22-24主要向被测设备发送命令,获取设备响应,并对设备响应的结果进行分析,根据设备响应返回对应的返回值。命令模块22-24是根据被测设备不同版本对各种命令功能进行的封装,因而本发明自动化测试系统中命令模块的数量取决于被测设备以及测试需求,并不限于图1所示的情况。
图3是本发明自动化测试系统的一个实施例中命令模块的结构示意图。AW分层系统中不同版本的命令模块的结构相同,如图3所示,主要由第一层单个命令封装、第二层多个命令组合的功能封装和第三层能访问全局数据的功能集封装构成。第一层是面向命令的封装,对单个命令进行封装,首先进入命令执行所在的用户模式,然后执行命令。第一层的函数名以Bx结尾,并在这一层判断版本命令行的变化。第二层是面向功能的封装,由若干个命令组合完成某一特定的常用功能。第二层的函数名以Ex结尾,功能组合或流程的变化在这一层进行判断。第一和第二层不允许对全局数据40进行访问,而第三层允许访问全局数据40,第三层是多个命令组合的集合,完成复杂的功能。
该自动化测试系统中,数据访问模块25为系统中其他模块访问全局数据40提供了统一的接口。数据访问模块25包括有两部分第一层基本数据访问部分,完成对全局数据40的读取和修改,其中GetGlobalData读取指定的全局变量,参数格式为{终端标识,全局数据标识,返回值},SetGlobalData修改指定的全局变量,参数格式为{终端标识,全局数据标识,参数值}。第二层对常用的全局数据的访问进行封装,例如获取版本、获取当前登陆用户名、获取当前登陆用户的登陆密码等。
该自动化测试系统中,外部编程接口模块21位于整个AW分层系统的最上层,为测试逻辑10提供统一的外部调用AW接口,屏蔽AW的内部实现。该外部编程接口使用可变参数形式,降低AW内部实现和版本变化对上层测试逻辑10调用AW的影响。
图4是本发明自动化测试方法的一个实施例的流程图。本发明的AW分层自动化测试系统用在自动化测试体系中,首先,测试逻辑调用AW的外部编程接口模块(步骤S400);外部编程接口模块根据测试逻辑调用相应的命令模块(步骤S402);命令模块判断被测设备的当前版本,选择相应的功能调用(步骤S404);命令传输模块调用虚拟编程结构模块提供的功能函数发送命令,接收设备响应(步骤S406);命令模块获取设备响应,并对设备响应结果进行分析(步骤S408)。
具体地,步骤S404中,命令模块内部需要执行当前设备版本的判断,并根据当前设备版本的不同,选择不同的功能调用。图5是命令模块内版本处理的流程图。假设被测设备出现了R3和R5等不同版本,如图5所示,在全局数据中有专门记录当前版本信息的数据,测试逻辑调用AW后,命令模块首先获取全局数据的当前版本信息(步骤S500);然后判断AW在当前版本是否有变化和改动(步骤S502);如果AW在当前版本没有改动,执行缺省的AW处理流程(步骤S504),然后转入步骤S514;如果AW在当前版本发生了变化,则继续判断当前版本是否是R3(步骤S506);如果被测设备当前本版是R3,则执行与版本R3对应的AW处理流程AW_R3(步骤S508),然后转入步骤S514;如果当前版本不是R3,则继续判断当前版本是否是R5(步骤S510);如果当前版本是R5,则执行与版本R5对应的AW处理流程AW_R5(步骤512),然后转入步骤S514;依此类推,其他版本变动的处理与之类似;最后,返回调用该AW的执行结果(步骤514)。
具体地,步骤S408中,命令模块提供一期望设备响应结果的关键字和返回值编码之间的对应关系列表,又称之为K列表,并根据该K列表判断设备响应的类型。该K列表可采用如下格式,但是具体实现时K列表的格式并不限于此K列表{{关键字1,返回类型值1},{关键字2,返回类型值2},{关键字3,返回类型值3},……}命令模块的命令处理流程如图6所示,首先,命令模块解析参数,按照被测设备的格式要求构造命令(步骤S600);然后,调用命令传输模块的命令发送功能将命令发给被测设备,并判断命令发送是否成功,如果发送失败则启动重发机制,继续发送命令(步骤S602);如果命令发送成功,则获取被测设备的响应信息(步骤S604);成功获取被测设备的响应后,命令模块首先取出K列表中的第一条记录元素(步骤S606和S608);比较获取的设备响应与K列表中的第一条记录元素是否匹配(步骤S610);如果匹配,则返回K列表中对应的返回类型编码(步骤S616),该命令处理流程结束;如果不匹配,则继续判断从K列表中取出的当前记录元素是否是最后一个记录元素(步骤S612);如果是,则退出循环,返回响应的返回类型编码(步骤S616)并结束命令处理流程;如果不是最后一个记录元素,则取K列表中的下一条记录元素(步骤S614),回到步骤S608继续循环判断。
本发明上述实施例中的AW分层自动化测试系统使用工具命令语言(toolcommand language,TCL)编程,具体应用中编程语言并不限于此。本发明的AW分层自动化测试系统还可以通过其它脚本语言(如Python等)或编译语言(如C/C++、Pascal等)来实现。
权利要求
1.一种自动化测试系统,包括虚拟编程接口模块、命令传输模块、至少一个命令模块和外部编程接口模块;所述虚拟编程接口模块位于系统的底层,为上层模块调用自动化测试体系功能函数提供一个统一的接口;所述命令传输模块调用虚拟编程接口模块提供的功能函数进行命令的发送和接收;所述命令模块根据不同版本调用特定功能的命令封装,向被测设备发送命令并获取设备响应;所述外部编程接口模块位于系统的最上层,为外部测试逻辑调用所述命令模块的功能提供一个统一的接口。
2.根据权利要求1所述的自动化测试系统,其特征在于,还包括直接访问全局数据的数据访问模块,为系统内其他各模块提供全局数据访问的统一接口。
3.根据权利要求1所述的自动化测试系统,其特征在于,还包括通过调用所述虚拟编程接口模块提供的功能函数为其他各模块提供信息输出的信息输出模块。
4.根据权利要求1所述的自动化测试系统,其特征在于,所述命令传输模块包括三层封装第一层XsendBx封装,调用所述虚拟编程接口模块提供的功能函数发送命令、根据设备响应进行错误类型判断和/或在被测设备正忙时重新发送命令;第二层XsendEx封装,调用第一层的XsendBx封装,在发送命令前判断与被测设备的通讯是否正常;第三层SendCom封装,调用第二层的XsendEx封装,为所述命令模块提供统一的接口发送命令并接收返回结果。
5.根据权利要求4所述的自动化测试系统,其特征在于,所述命令传输模块还包括有重新登陆子模块、命令模式切换子模块和通用返回错误处理子模块。
6.根据权利要求1所述的自动化测试系统,其特征在于,所述命令模块由第一层单个命令封装、第二层多个命令组合的功能封装和第三层能访问全局数据的功能集封装构成。
7.一种自动化测试方法,用在自动化测体系中对被测设备进行自动化测试,包括如下步骤(a)测试逻辑调用AW提供的外部编程接口模块;(b)外部编程接口模块根据测试逻辑调用相应的命令模块;(c)命令模块根据当前被测设备的版本选择相应的功能调用;(d)命令传输模块调用虚拟编程接口模块提供的自动化测试体系功能函数向被测设备发送选择的命令并接收设备响应;(e)命令模块获取设备响应并对设备响应的结果进行分析。
8.根据权利要求7所述的自动化测试方法,其特征在于,所述步骤(c)进一步包括(c1)命令模块从全局数据中获取当前被测设备的版本信息;(c2)判断AW在当前版本是否有变化;(c3)如果AW没有发生变化,执行缺省的AW,然后转至步骤(c5);(c4)如果AW发生变化,执行与当前版本对应的AW;(c5)返回相应的执行结果。
全文摘要
本发明公开了一种动作词分层的自动化测试系统,包括虚拟编程接口模块、命令传输模块、至少一个命令模块和外部编程接口模块;所述虚拟编程接口模块位于底层,为上层模块调用自动化测试体系功能函数提供统一接口;所述命令传输模块调用虚拟编程接口模块提供的功能函数进行命令的发送和接收;所述命令模块根据不同版本调用特定功能的命令封装,向被测设备发送命令并获取设备响应;所述外部编程接口模块位于最上层,为测试逻辑调用命令模块的功能提供统一接口。本发明通过AW内部分层处理,实现测试逻辑与AW以及AW与自动化测试体系环境的分离,降低被测版本及流程变动对测试逻辑的影响,降低AW维护的工作量,提高AW的可维护性。
文档编号G06F11/00GK1851638SQ200510037308
公开日2006年10月25日 申请日期2005年9月13日 优先权日2005年9月13日
发明者刘承东, 宋永刚, 李坤龙, 张宗胜, 张锋, 方键 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1