一种实现通信设备自动化测试中网络测试仪的封装方法与流程

文档序号:17474360发布日期:2019-04-20 06:01阅读:316来源:国知局
一种实现通信设备自动化测试中网络测试仪的封装方法与流程

本发明涉及网络通信设备的自动化测试领域,具体涉及一种实现通信设备自动化测试中网络测试仪的封装方法。



背景技术:

通信设备的功能具有标准化和一致性的特点,设备功能演进和版本迭代的过程中,涉及大量既有功能的遍历和回归。作为产品研发中重要的环节,直接决定了产品交付能力和后期的稳定运行,对产品竞争力具有决定性的作用。自动化测试能够稳定快速的实现功能回归,将研发人员从低效重复的测试活动中解放出来。但由于功能模块的繁多、交叉叠加的复杂,往往需要编写大量的自动化测试脚本,脚本中包含大量固定和程式化的逻辑,没有抽象和封装将导致脚本编写存在冗余、后期维护扩展困难,无法聚焦最重要的测试逻辑,带来很多无效的劳动输出。

网络通信设备的自动化测试流程为按照测试用例连接测试拓扑中的设备,模拟telnet或web请求进行设备的配置下发,检查设备和协议状态,使用测试仪表进行协议和流量的仿真及发送,检查流量的统计结果是否符合预期。网络测试仪表的流量发送和结果检查需要在测试脚本中调用仪表厂商的api接口,是极为重要也是比较困难的一个部分,主要包括以下几个方面:

1、跨厂商的网络测试仪的操作问题;

不同测试仪厂商提供的api不一致,直接用于脚本将使脚本与测试仪表形成绑定依赖,脚本没有通用性;

2、原生api接口使用复杂学习成本高;

测试仪表具有大量的功能和api接口,脚本编写人员在使用前需要熟悉接口名称和参数内容;

3、直接使用统一api扩展和维护困难;

实现跨设备厂商的统一api解决了接口不一致问题,但api接口的变动将使得直接耦合统一接口的测试脚本需要修改,无法获得稳定;

4、没有流程的抽象封装使得脚本存在大量的冗余;

每个测试脚本都去实现测试仪操作的固定流程,存在大量的重复性内容;

5、实现流程抽象后的各阶段需要进行参数重载;

模拟设备的创建,报文内容和字节长度的修改,流量发送的大小和时长等很多参数随具体测试内容的差异而不同,需要提供一种简易的方式例如字符串传参实现脚本运行时函数调用的注入;

由于测试仪操作的流程和功能的复杂性,导致编写测试脚本时耗费大量的工作而无法专注于测试逻辑,测试脚本也无法获得稳定。



技术实现要素:

本发明提出的一种实现通信设备自动化测试中网络测试仪的封装方法,可解决现有测试仪操作的流程和功能的复杂性,导致编写测试脚本时耗费大量的工作而无法专注于测试逻辑,测试脚本也无法获得稳定的技术问题。

为实现上述目的,本发明采用了以下技术方案:

一种实现通信设备自动化测试中网络测试仪的封装方法,包括以下步骤:

步骤1:构建跨测试仪厂商的统一api接口;

步骤2:将步骤1的接口函数名和参数从代码逻辑中分离到可持久化的数据模板,数据模板为“key->value”的键值形式,key为字符串形式的键值,value按照顺序将真实函数名和参数占位符依次以固定间隔符形式排列;

步骤3:数据模板不采用常见的json、yaml等格式化的文件形式,直接以最简单的编写方式作为人机接口,方便维护,程序实际查找索引使用的是该文件转成的xml文件,完成人机接口到机机接口的转化;

步骤4:通过反射实现所有测试仪api功能的对外暴露的唯一接口,这也是上层调用的唯一入口,入参是“key->value”形式的字符串,通过key索引步骤3中的xml文件,索引值为真实函数名和参数占位符,将value与参数占位符依次替换生成最终函数的真实入参,通过反射机制完成函数调用和调用结果的返回;

步骤5:通过反射实现的接口对测试仪通用操作流程进行抽象封装,完成仪表连接、端口占用、模拟设备创建、流量引擎创建、抓包分析引擎创建、统计引擎创建,进行创建的流量的发送和收发包统计,返回统计结果;

步骤6:抽象封装的各阶段以参数形式对外提供重载功能,实现根据需要的全流程改写和功能注入,重载方法就是对代表各阶段的参数名进行字符串形式的参数传递,参数值就是反射接口的实参;

步骤7:自动化测试脚本中使用通用流程封装接口完成测试仪表功能的调用,不必关注具体的实现原理和底层的仪表差异,使脚本更加专注测试逻辑;

步骤8:新功能和接口的添加等扩展性被分离到了数据模板,使接口和逻辑非常健壮稳定。

由上述技术方案可知,由于自动化测试技术中,不同测试仪厂商的api接口不一致,直接使用使脚本与测试仪形成了绑定依赖,不具备通用性,且原生api功能复杂不易使用。直接使用封装的统一api使脚本与接口形成了耦合,接口变动造成了脚本维护和扩展困难。没有流程的抽象封装,测试脚本需要编写大量重复冗余的代码来实现一些基础性操作。本发明通过统一的api接口兼容了不同厂家测试仪的功能调用,使用数据与逻辑分离将变化分离到数据模板中,使逻辑获得稳定,通过反射调用将函数功能调用转化为了字符串传参,对整个测试仪操作流程的抽象封装使脚本无需关注具体的测试仪操作实现,测试脚本中只需关注功能测试本身,隐藏了测试仪功能的使用逻辑,大幅提高了测试脚本编写的效率和稳定性。

附图说明

图1是本发明方法的流程示意图;

图2是本发明中数据与逻辑分离的实现;

图3是本发明中测试仪操作流程的封装实现;

图4是本发明中各模块的层次关系。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。

如图1所示,本发明实施例的一种实现通信设备自动化测试中网络测试仪的封装方法,包括以下步骤:

s100、构建跨测试仪厂商的统一api接口;

s200、将步骤s100的接口函数名和参数从代码逻辑中分离到可持久化的数据模板;其中,数据模板为“key->value”的键值形式,key为字符串形式的键值,value按照顺序将真实函数名和参数占位符依次以固定间隔符形式排列;

s300、数据模板直接以编写方式作为人机接口,程序实际查找索引使用的是该文件转成的xml文件,完成人机接口到机机接口的转化;

s400、通过反射实现所有测试仪api功能的对外暴露的唯一接口,这也是上层调用的唯一入口;其中,总入参是“key->value”形式的字符串,通过key索引步骤s300中的xml文件,索引值为真实函数名和参数占位符,将value与参数占位符依次替换生成最终函数的真实入参,通过反射机制完成函数调用和调用结果的返回;

s500、通过反射实现的接口对测试仪通用操作流程进行抽象封装,完成仪表连接、端口占用、模拟设备创建、流量引擎创建、待发送流量创建、抓包分析引擎创建、统计引擎创建,进行创建流量的发送和收发包统计,并返回统计结果。

本发明实施例抽象封装的各阶段以参数形式对外提供重载功能,实现根据需要的全流程改写和功能注入,重载方法就是对代表各阶段的参数名进行字符串形式的参数传递,参数值就是反射接口的实参;自动化测试脚本中使用通用流程封装接口完成测试仪表功能的调用,不必关注具体的实现原理和底层的仪表差异,使脚本更加专注测试逻辑;新功能和接口的添加等扩展性被分离到了数据模板,使接口和逻辑非常健壮稳定。

以下结合附图具体说明:

如图2所示,测试仪函数接口被映射为“key->value”形式的键值对,key为字符串形式的键值,value按照顺序将真实函数名和参数占位符依次以固定间隔符形式排列,键值模板被转换成对机器查询更友好的xml格式,最终实现了函数功能被分离到可持久化的数据文件。功能扩展只需要修改模板文件,逻辑上获得了统一稳定的调用入口,反射调用的字符串传参通过键值查询最终转换为实参到目的函数的调用,通过逗号间隔符可完成一次传参多次调用。

如图3所示,使用反射接口进行测试仪操作的通用流程封装,步骤分别为连接测试仪地址,占用测试仪端口,创建模拟设备,创建流量引擎,创建待发送流量,创建抓包分析引擎,创建统计引擎,流量发送,流量计数统计和结果返回。对于端口占用等耗时操作采取仅第一次占用,测试脚本运行结束后将端口释放到端口池中,后续占用操作直接从端口池获取。测试仪发送流量与中间经过的设备拓扑无关,测试仪创建的模拟设备的地址和网关,待发送流量的源ip和目的ip均能从测试拓扑的变量文件中获得,目的mac可以通过arp学习从直连设备上动态获取,源mac和引擎参数的索引等均按照约定自动计算。最终只需要指定测试仪的源端口和目的端口,所有步骤参数就可以完全确定,这也是通过流程封装能够简化测试仪脚本编写的前提。通过各阶段的参数重载可以按需实现各流程的参数定制,满足测试脚本的多样性需求。

如图4所示,实现自动化测试中网络测试仪封装的层次结构如下:

最底层为测试仪厂商开放的api接口,上层进行统一的api封装屏蔽测试仪差异,通过数据与逻辑分离,将调用的函数和形参从逻辑中分离到数据模板,通过反射调用实现唯一的调用入口,函数功能的扩展体现在数据模板的修改,对功能逻辑不可见。通过对通用的测试仪操作流程的封装实现简化编写步骤,并通过各阶段反射调用的参数传递实现流程定制和重写,无需改写的流程都有默认传参,最终将脚本编写人员从冗余复杂的测试仪接口调用中解放出来,使测试脚本更加专注测试逻辑。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1