本申请涉及数据通信技术领域,特别涉及一种测试仪自动化实现方法和装置。
背景技术:
从性能基准测试、缺陷识别和分析,到通过自动化实现的回退测试,Spirent TestCenterTM是测试当前网络和未来技术的全新的、事实上的标准。TCL作为实现TestCenter测试仪自动化的一种语言,通过调用SpirentTestCenter.tcl文件实现对TestCenter测试仪的操作,替代手动操作。
在平时测试中,编辑数据流进行模拟测试是使TestCenter测试仪的一个重要用途,数据流创建好后不是一成不变的,需要进行修改添加删除等操作,一般是当前网络需要什么样的数据流就编辑什么样的数据流,这就需要编写许多库函数去实现,使得编写脚本工作量加大。
现有技术的测试过程,需要人工根据测试需求编辑大量的脚本,不但浪费人工资源,还使得TestCenter测试仪的自动化不够高效。
技术实现要素:
有鉴于此,本发明的目的在于提供一种测试仪自动化实现方法和装置,能够提高测试仪的自动化测试的效率。
为实现上述目的,本发明提供的技术方案为:
一种测试仪自动化实现方法,该方法包括:
预先配置针对测试目标的每种测试操作类型对应的测试函数;
根据各测试操作类型对应的测试函数配置一接口函数;所述接口函数的输入参数包括测试操作类型,且当调用所述接口函数时,该测试操作类型对应的测试函数被所述接口函数调用;
需要对测试目标执行任一类型测试操作时,以该测试操作类型为输入参数调用所述接口函数,以实现对测试目标的测试。
一种测试仪自动化实现装置,该装置包括:
配置单元,用于预先配置针对测试目标的每种测试操作类型对应的测试函数;用于根据各测试操作类型对应的测试函数配置一接口函数;所述接口函数的输入参数包括测试操作类型,且当调用所述接口函数时,该测试操作类型对应的测试函数被所述接口函数调用;
测试单元,用于需要对测试目标执行任一类型测试操作时,以该测试操作类型为输入参数调用所述接口函数,以实现对测试目标的测试。
综上所述,本发明通过预先配置针对测试目标的每种测试操作类型对应的测试函数,并为这些测试函数配置统一的接口函数,使得用户需要对测试目标执行任一类型测试操作时,以该测试操作类型为输入参数调用所述接口函数,以实现对测试目标的测试。本发明可以减少人工编辑脚本工作,能够有效减少人工资源浪费,同时还能够提高测试仪的自动化测试的效率。
附图说明
图1是本发明实施例测试仪自动化实现方法流程图;
图2是本发明实施例测试仪自动化实现装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
参见图1,图1是本发明实施例测试仪自动化实现方法流程图,如图1所示,该方法包括:
步骤101、预先配置针对测试目标的每种测试操作类型对应的测试函数。
本发明实施例中,针对每种测试操作类型,均配置对应的测试函数,这可以使得同样的测试操作,均可通过调用该测试函数实现,从而避免重复写脚本。
步骤102、根据各测试操作类型对应的测试函数配置一接口函数;所述接口函数的输入参数包括测试操作类型,且当调用所述接口函数时,该测试操作类型对应的测试函数被所述接口函数调用。
本发明中,配置一个接口函数,该接口函数用于为所有测试操作类型的测试函数提供统一入口,使得所有测试函数的调用均通过该接口函数的调用实现。
步骤103、需要对测试目标执行任一类型测试操作时,以该测试操作类型为输入参数调用所述接口函数,以实现对测试目标的测试。
本发明实施例中,使用统一接口函数实现对所有测试函数的调用,其中,为了区分不同的测试操作类型,使用测试操作类型作为接口函数的输入参数,确保接口函数被执行时,该测试操作类型对应的测试函数被调用。
在实际应用中,测试函数本身也是需要有输入参数的,本申请中,除了将测试操作类型作为接口函数的输入参数外,还需要将被调用函数的输入参数(简称被调用函数参数)也作为接口函数的输入参数,使得接口函数调用某一测试函数时,可以将该测试函数的输入参数输入该测试函数。因此,本发明实施例中,接口函数的输入参数还包括:被调用函数参数。
一般情况下,测试操作至少包括增加、删除、修改三种操作,本申请中,将测试操作类型定义为至少包括以下三种取值:增加操作、删除操作、修改操作。
其中,
对于增加操作,将增加操作对应的测试函数称为增加函数;将增加函数的输入参数称为增加操作相关参数;则步骤103中,需要对测试目标执行增加操作,以增加操作为输入参数调用所述接口函数时,还需要进一步将增加操作相关参数作为所述接口函数的被调用函数参数,以使所述接口函数调用所述增加函数时,将增加操作相关参数作为所述增加函数的输入参数;所述增加操作相关参数和所述被调用函数参数个数相同,且一一对应。
对于修改操作,将修改操作对应的测试函数称为修改函数;将修改函数的输入参数称为修改操作相关参数;则步骤103中,需要对测试目标执行修改操作,以修改操作为输入参数调用所述接口函数时,还需要进一步将修改操作相关参数作为所述接口函数的输入参数,以使所述接口函数调用所述修改函数时,将修改操作相关参数作为所述修改函数的输入参数;所述修改操作相关参数和所述被调用函数参数个数相同,且一一对应。
对于删除操作,将删除操作对应的测试函数称为删除函数,将删除函数的输入参数称为删除操作相关参数;则步骤103中,需要对测试目标执行删除操作,以删除操作为输入参数调用所述接口函数时,还需要进一步将删除操作相关参数作为所述接口函数的输入参数,以使所述接口函数调用所述删除函数时,将删除操作相关参数作为所述删除函数的输入参数;所述删除操作相关参数和所述被调用函数参数个数相同,且一一对应。
以上对本发明测试仪自动化实现方法进行了详细说明,下面以使用TCL语言实现Spirent TestCenter测试仪自动化为例,对测试函数和接口函数的配置的进行举例说明。
现有技术中,用TCL语言实现TestCenter测试仪自动化,一般是调用库文件一步一步实现,只要掌握了TCL语言就可以方便的使用,但是一步一步去操作,脚本中重复性内容会很多,执行时间加长,无法达到自动化测试的高效性。
在TestCenter测试仪自动化中,主要包括对数据的增加、修改、删除三种测试操作,分别对应增加函数、修改函数、删除函数,下面逐一进行说明:
I、添加函数:
添加函数的输入参数有两个,一个是数据流指针(hStreamBlock);另一个是需要添加的数据内容(dataDict),其中,需要添加的数据内容使用字典的方式传入,使用字典的方式可以使添加函数的输入参数个数减少,方便调用,字典的key值为报文头名称,字典的value值为报文的具体数据。具体添加函数如下所示:
II、修改函数
修改函数的输入参数有两个,一个是数据流指针(hStreamBlock);另一个是需要修改的数据内容(dataDict),需要修改的数据内容使用字典的方式传入,使用字典的方式可以使修改函数的输入参数个数减少,方便调用,字典的key值为报文头名称,字典的value值为报文的具体数据。具体修改函数如下所示:
III、删除函数:
删除函数的输入参数有两个,一个是数据流指针(hStreamBlock);另一个是需要删除的报文头名称(dataDict),名称使用列表的方式传入,使得函数的输入参数个数减少,方便调用。删除函数具体如下所示:
对于上述三种测试函数,本发明提供以下接口函数:
上述接口函数的输入参数有三个:测试操作类型、数据流指针、需要操作的内容。只需要在脚本中调用这个接口函数就可以实现对数据流的增加、修改、或删除操作。
下面以创建两层数据流(ARP)删除并修改为三层数据流(带IP)再修改为四层数据流(TCP)最后再修改其中参数的过程为例说明如下:
第一步,创建两层数据流
##获取数据流指针:
set portLocation[stc::get$hPort-Location];#hPort为端口指针
set hStream[stc::create streamBlock-under$hPort]
stc::delete[stc::get$hStream-children-ipv4:Ipv4]
stc::delete[stc::get$hStream-children-ethernet:EthernetII]
##添加arp数据流:
set dStreamData0[list ethernet:ethernetII"srcMac 0000.1234.abcd dstMac ffff.ffff.ffff"arp:ARP""]
STC_streamConfig add$hStream$dStreamData0;#调用添加函数
stc::apply
第二步:删除并修改为三层数据流
##删除arp报文头:
STC_streamConfig del$hStream“arp:ARP”;#调用删除函数
stc::apply
##修改数据流为三层数据流:
set dStreamData1[list ethernet:EthernetII"srcMac 00:00:21:00:00:01dstMac 00:00:31:00:00:01name eth1"ipv4:ipv4"sourceAddr 192.85.1.1destAddr 192.0.0.1"vlan1"id 101pri 000name vlan1"RangeModifier1"Data 101Mask 4095StepValue 1RecycleCount 100OffsetReference eth1.vlans.v1.id"]
STC_streamConfig conf$hStream$dStreamData1;#调用修改函数
stc::apply
第三步:修改为四层数据流并修改参数
##添加数据流为四层数据流:
set dStreamData2[list tcp:Tcp“srcPort 2000dstPort 4000”]
STC_streamConfig add$hStream$dStreamData2;#调用添加函数
stc::apply
##修改四层数据流:
set dStreamData3[list ethernet:ethernetII"srcMac 10:00:21:00:00:03dstMac 00:00:31:00:00:03name eth1"ipv4:ipv4"sourceAddr 192.85.1.3destAddr 192.0.0.3name ip1"vlan1"id 103name vlan1"RangeModifier1"Data 103Mask 4095StepValue 1RecycleCount 103OffsetReference eth1.vlans.v1.id"tcp:Tcp“srcPort 1000dstPort 3000”]
STC_streamConfig conf$hStream$dStreamData3;#调用修改函数
stc::apply
以上对本发明测试仪自动化实现方法进行了详细说明,本发明还提供了一种测试仪自动化实现装置,以下结合图2进行详细说明。
参见图2,图2是本发明实施例测试仪自动化实现装置的结构示意图,如图2所示,该装置包括:
配置单元201,用于预先配置针对测试目标的每种测试操作类型对应的测试函数;用于根据各测试操作类型对应的测试函数配置一接口函数;所述接口函数的输入参数包括测试操作类型,且当调用所述接口函数时,该测试操作类型对应的测试函数被所述接口函数调用;
测试单元202,用于需要对测试目标执行任一类型测试操作时,以该测试操作类型为输入参数调用所述接口函数,以实现对测试目标的测试。
图2所示装置中,
所述接口函数的输入参数还包括:被调用函数参数。
图2所示装置中,
测试操作类型包括:增加操作;
增加操作对应的测试函数为增加函数;
增加函数的输入参数包括:增加操作相关参数;
所述测试单元202,需要对测试目标执行增加操作,以增加操作为输入参数调用所述接口函数时,还进一步将增加操作相关参数作为所述接口函数的被调用函数参数,以使所述接口函数调用所述增加函数时,将增加操作相关参数作为所述增加函数的输入参数;所述增加操作相关参数和所述被调用函数参数个数相同,且一一对应。
图2所示装置中,
测试操作类型包括:修改操作;
修改操作对应的测试函数为修改函数;
修改函数的输入参数包括:修改操作相关参数;
所述测试单元202,需要对测试目标执行修改操作,以修改操作为输入参数调用所述接口函数时,还进一步将修改操作相关参数作为所述接口函数的输入参数,以使所述接口函数调用所述修改函数时,将修改操作相关参数作为所述修改函数的输入参数;所述修改操作相关参数和所述被调用函数参数个数相同,且一一对应。
图2所示装置中,
测试操作类型包括:删除操作;
删除操作对应的测试函数为删除函数;
删除函数的输入参数包括:删除操作相关参数;
所述测试单元202,需要对测试目标执行删除操作时,以删除操作为输入参数调用所述接口函数时,还进一步将删除操作相关参数作为所述接口函数的输入参数,以使所述接口函数调用所述删除函数时,将删除操作相关参数作为所述删除函数的输入参数;所述删除操作相关参数和所述被调用函数参数个数相同,且一一对应。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。