接入网设备自动化测试系统
技术领域
本发明涉及计算机技术及通信技术领域,特别是涉及一种接入网设备自动化测试系统。
背景技术
自动化测试是在PC上运行自动化测试程序,自动化程序通过多个控制链路(TCP/IP、远程服务器Remote Server)对接入网设备进行配置和信息查看,控制PC进行测试帧的收发,并完成测试结果的自动获取与判断,最终得出该测试程序的测试结果。
Robot Framework是一个通用的关键字驱动的自动化测试技术,可以通过一种非常简单的机制,使用Python或Java实现一个测试库,原生支持Python或Java脚本语言,并支持使用Python封装调用TCL脚本。通过测试库中实现的关键字来驱动被测软件。测试用例以HTML,纯文本或TSV(制表符分隔的一系列值)文件存储。目前,在应用Robot Framework自动化测试框架进行测试时,首先启动测试框架,读入测试用例的关键字驱动表Test Data,测试框架Robot Framework将调用测试框架中的测试引擎(Python)来处理测试用例表中的数据,生成可被测试驱动层识别的命令,通过协议执行关键字转换,再到驱动层测试库TestLibrary(对象、动作执行等)读取命令,根据命令中的数据在系统下自动生成测试脚本并执行。运行机制如图1所示。
Robot Framework核心框架主要提供测试用例文件的解析、用例的调度、测试报告的生成功能,在基于自动化测试及配置管理业务中,自动化测试系统必须基于SSH(SecureShell)、FTP、TCL服务等远程登录到远端设备上自动的执行用户命令,并有相应协议开发的测试库,但Robot Framework并未提供完善的基于协议开发的特定测试库;另一方面,也不具有针对脚本文件系统共享、复用服务进行测试的功能管理。综上所述,现有的RobotFramework自动化测试方式测试效果较差。
发明内容
基于此,有必要针对现有的Robot Framework自动化测试方式测试效果较差的问题,提供一种接入网设备自动化测试系统。
一种接入网设备自动化测试系统,包括:
客户端、服务器和测试仪器;
所述客户端通过服务器与测试仪器相连接,所述测试仪器与待测的接入网设备相连接;
所述服务器在监听到所述接入网设备的连接请求之后,建立与所述接入网设备的通信连接,通过所述通信连接获取所述接入网设备需要执行的测试动作,并将包含所述测试动作的消息发送到客户端;
所述客户端根据所述消息中携带的测试动作确定需要执行的测试用例,将对所述测试用例的调用指令发送到所述服务器,接收所述服务器根据所述调用指令返回的封装函数,对所述封装函数进行解析,得到原始测试函数,并通过所述服务器将所述原始测试函数发送至所述测试仪器;
所述测试仪器从预存的测试库中获取所述原始测试函数与目标测试函数之间的关键字之间的映射关系,根据所述映射关系将所述原始测试函数转换为相应的目标测试函数,并将所述目标测试函数发送到所述接入网设备;其中,所述测试库用于存储各个测试函数的关键字及其相应的映射关系;
所述接入网设备根据所述目标测试函数执行相应的测试操作,根据所述测试操作的执行结果生成测试日志,并将所述测试日志返回至所述客户端。
上述接入网设备自动化测试系统,根据待测的接入网设备需要执行的测试动作调用服务器中的测试用例,并通过测试仪器将测试用例的原始测试函数转换为目标测试函数后发送到待测设备进行自动化测试,能够支持不同测试脚本,另外,将测试脚本存储在服务器中,任意一个客户端需要执行自动化测试时,只需从服务器调用相应的测试脚本,便于脚本文件系统共享和复用。
附图说明
图1为现有技术的运行机制示意图;
图2为本发明的接入网设备自动化测试系统的结构示意图;
图3为Robot Framework自动化测试平台的示意图;
图4为一个实施例的测试流程图。
具体实施方式
下面结合附图对本发明的接入网设备自动化测试系统的实施例进行说明。
图2为本发明的接入网设备自动化测试系统的结构示意图。如图2所示,所述接入网设备自动化测试系统可包括:
客户端10、服务器20和测试仪器30;
所述客户端10通过服务器20与测试仪器30相连接,所述测试仪器30与待测的接入网设备40相连接;
所述服务器20在监听到所述接入网设备40的连接请求之后,建立与所述接入网设备40的通信连接,通过所述通信连接获取所述接入网设备40需要执行的测试动作,并将包含所述测试动作的消息发送到客户端10;
所述客户端10根据所述消息中携带的测试动作确定需要执行的测试用例,将对所述测试用例的调用指令发送到所述服务器20,接收所述服务器20根据所述调用指令返回的封装函数,对所述封装函数进行解析,得到原始测试函数,并通过所述服务器20将所述原始测试函数发送至所述测试仪器30;
所述测试仪器30从预存的测试库中获取所述原始测试函数与目标测试函数之间的关键字之间的映射关系,根据所述映射关系将所述原始测试函数转换为相应的目标测试函数,并将所述目标测试函数发送到所述接入网设备40;其中,所述测试库用于存储各个测试函数的关键字及其相应的映射关系;
所述接入网设备40根据所述目标测试函数执行相应的测试操作,根据所述测试操作的执行结果生成测试日志,并将所述测试日志返回至所述客户端10。
其中,所述客户端10的数量可以是一个或多个。各个客户端10可以分别对不同的待测接入网设备40进行自动化测试,从而提高测试效率。各个客户端10可以采用不同的自动化测试语言。例如,其中一台客户端10可以采用Java语言,另一台客户端10可以采用Python语言,等等。
所述服务器20中可以存储各种不同语言的测试用例。所述测试用例可以存储在本地脚本库50中,也可以存储在远程脚本库60中。所述服务器可以直接调用本地脚本库50中的脚本,也可以接入其他服务器70,调用其他服务器70的远程脚本库60中的脚本。测试项目的测试脚本文件,可按标准在服务器20上建立统一存储、管理和共享,多台客户端10可直接通过服务器20进行调用,对相同测试应用场景的可对测试脚本进行较少的修改或复用测试,减少测试开发时间。
所述测试仪器30(如IXIA设备)可以内置基于通信协议开发的测试库,所述测试库是测试仪器进行测试时须启用的测试服务(如IXIA的TCL SERVICE),包含测试环境、测试套件、命令函数等。测试仪器30通常使用TCL脚本语言(现在也越来越多支持Python\Java),测试库可以理解为一个定义了很多函数的集合,每种语言都有对应的测试库。
所述接入网设备40的数量可以是一个或多个。不同接入网设备40通过IP地址来区分。所述测试仪器30可以获取接入网设备40的IP地址,将所述IP地址发送到所述服务器20,并接收所述服务器20发送的所述原始测试函数,根据所述IP地址将所述原始测试函数发送至相应的接入网设备40。各个接入网设备40可以通过物理交换机80与测试仪器30相连接。所述物理交换机80可以实现设备间的软拓扑连接。即测试过程中接入网设备40的连接拓扑发生变更时,无需改变物理实际接线,可以通过物理交换机80的软件实现便捷的连接配置,从而实现接入网设备40间的软拓扑连接。
在所述接入网设备40进行自动化测试之前,所述测试仪器30可以根据所述目标测试函数对所述接入网设备40的端口参数进行配置,并将所述端口参数发送到所述接入网设备40,其中,所述接入网设备根据所述目标测试函数和所述端口参数执行相应的测试操作。例如,当进行端口吞吐量的测试时,需要先配置产生的模拟流量、流控、相互可以ping通的端口、数据包的大小等参数,配置完成无错误后,才会开始一系列的测试执行。
为了提高测试效率,在通过所述服务器20将所述原始测试函数发送至所述测试仪器30之前,可以在所述测试用例中设置断点。设置断点通常有两种方式实现,一种是直接在测试脚本中进行编写,一种是在测试动作执行中设置遇到错误就暂停。
为了确保测试用例的正确性,所述客户端10在获取到测试用例之后,可以模拟测试用例“执行步骤”的要求,在待测试系统上进行操作。即所述客户端10根据所述原始测试函数执行相应的测试操作,并根据所述测试操作的执行结果对所述原始测试函数进行校验。
在将对所述测试用例的调用指令发送到所述服务器20之前,所述客户端10还可以对所述测试用例进行数据标准化处理。
本发明的自动化测试可以基于Robot Framework自动化测试平台。RobotFramework自动化测试平台的架构如图3所示。其中,被测DUT表示正在进行测试的接入网设备,其数量可以是一个,也可以是多个。测试仪器与被测DUT可通过以太网Ethernet相连接。测试仪器的测试库中可根据预先定义的通信协议封装测试所需的函数,包括支撑层封装函数、服务层封装函数、业务层封装函数。由于Robot Framework并未提供完善的基于协议开发的特定测试库,上述封装函数可以对Robot Framework平台的功能进行扩展。测试仪器可通过服务器连接到客户端。客户端可以向用户展示一个面向用户的Robot Framework执行引擎,接收用户自定义的脚本,并根据需要从所述支撑层封装函数、服务层封装函数或业务层封装函数中调用相应的脚本进行语言转换。测试结果(包括测试报告和测试日志等)可以通过上述Robot Framework执行引擎展示给用户。
上述基于Robot Framework框架的自动化测试系统,除了支持自身测试用例的自主开发(支持脚本语言Python/Java),同时能够对网络测试仪表(支持TCL、Perl和Python等)进行集成,在读取不同自动化脚本语言的时候启用相应的测试服务及测试库,对测试用例进行解析。
下面结合图4对本发明的接入网设备自动化测试系统的测试过程的一个实施例进行说明。自动化测试系统处理流程如下所示:
(1)测试准备:包括测试用例和测试数据准备测试人员编写好测试用例(包括环境配置信息与测试数据处理说明),把准备好的测试用例和测试数据存放到指定的目录。
(2)测试环境搭建:自动化测试系统根据环境配置信息,进行环境搭建,包括环境变量设置,清理输入目录、输出目录和相关表数据等操作。启动RIDE将根据项目开始配置,自动进行环境搭建。
(3)测试用例解析:进行测试用例信息读取、解析。
(4)测试数据处理:自动化测试系统根据测试用例中对测试数据的要求,进行测试用例数据的规范化处理。
(5)测试执行:测试数据处理完成之后,自动化测试系统模拟测试用例“执行步骤”的要求,在待测试系统上进行操作。
(6)测试结果分析:根据测试用例中设置的断点,如“日志内容”等,对数据表、日志文件进行分析,判断该条测试用例是否执行通过。如果不通过,则捕获失败的原因。
(7)测试结果记录:将分析结果填到测试用例表,如果测试不通过,记录“失败原因”分析结果。
(8)结束判断:如果本次执行的是最后一条用例,则循环结束;否则继续步骤(3)~步骤(8)。
(9)日志获取和分析:自动化测试系统处理的整个过程中,都会进行日志分析,主要功能为日志提取与展示、操作截屏、错误告警等。
本发明的接入网设备自动化测试系统具有以下优点:
(1)可以同时支持不同的脚本语言实现的测试脚本,减少了自动化测试脚本的开发成本,提高了测试效率。
(2)将测试脚本存储在服务器中,任意一个客户端需要执行自动化测试时,只需从服务器调用相应的测试脚本,便于脚本文件系统共享和复用。
(3)支持软拓扑,能够实现便捷的连接配置。
(4)断点测试,便于发现测试过程中的错误,进一步提高了测试效率,同时也方便查找错误发生的位置。
(5)面向对象的架构,支持用户自定义的脚本,降低了测试难度,便于非专业测试人员进行操作。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。