本发明涉及通信设备自动化测试技术领域,具体涉及一种实现通信设备自动化云测试的方法。
背景技术:
自动化测试作为一种高效稳定的测试方法被广泛的应用于软件测试领域。尤其对于长期迭代和演进的软件产品,脚本的重用性会大幅提高自动化收益,保证故障收敛和产品稳定。
对于通信设备的自动化测试,首先按照测试拓扑进行物理组网,测试开始后使用socket连接到设备通过cli或snmp协议将配置下发到设备上,通过测试仪表开放的api进行端口占用、流量创建和发送,检查设备状态和流量状态并输出结果,最后将测试环境重置至初始状态继续运行下一个测试用例。不同的业务测试对应不同的网络拓扑和设备连接,需要提供全集拓扑去适配不同的测试拓扑,为了避免业务冲突导致测试结果失准,用例一般是串行执行,每一个用例独占硬件资源,无法像其它软件测试一样利用并行特性,导致执行效率无法提高,具体体现如下:
硬件资源包括测试设备互联及设备与测试仪表互联形成的物理拓扑,需要匹配测试用例需求。不同的测试用例对拓扑的需求是不一致的,有点到点组网、三角形组网、口字型组网、4台fullmesh组网等。对设备间的互联端口也有要求,有以太链路、pos链路、串行链路等。测试负荷分担时对设备之间的链路数也有要求,有的功能甚至对设备型号也有要求。为了适应测试拓扑的各种需求一般需要提供一个全集的拓扑,测试用例选取全集拓扑的子集进行自动化测试,这部分硬件资源独占。但由于没有自动化测试用例执行的调度和编排,使得在执行一个用例时其它未利用的硬件资源被闲置。因为缺少不同测试人员所占测试资源的全局视图,当有人测试资源闲置时,也无法被其它人员利用。
技术实现要素:
为了解决上述背景中提到的问题,本发明目的在于提供一种实现通信设备自动化云测试的方法。
为实现上述目的,本发明提供如下技术方案:
一种实现通信设备自动化云测试的方法,包括以下步骤:
1)使用无向图对设备拓扑进行描述,无向图中的节点代表测试设备,无向图的边代表设备之间的物理连接,节点属性有ip地址、用户名密码、设备类型、在用标记、连接测试仪表的端口名和数量,边属性有端口类型、端口名和数量;
2)每一个无向图描述一套物理拓扑,一个或多个物理拓扑构成测试云上的资源池,测试人员私有的设备资源可以动态加入或撤出测试云来实现资源闲置时的共享;
3)测试云上测试调度系统实现自动化用例调度执行,达到最大限度并行,测试云实现一个运行队列来进行优先调度,默认所有自动化用例都不在队列中并无差别执行,执行后置位测试用例的运行标记,如果有用例需要优先运行,用户只需向测试云提交请求,即可将这些用例加入运行队列进行优先调度,直到队列为空;
4)测试云上的并行调度算法如下,执行到测试用例时,提取测试拓扑,在测试云上的资源池中的所有无向图中查找与测试拓扑同构的子图,并按照测试需求,如设备类型、链路类型、链路数等限制条件进行搜索剪枝,如果找到则将拓扑数据映射到自动化测试用例中进行执行,并标记相应无向图中节点的在用标记,运行结束后恢复,然后继续调度运行后续用例;
如果未找到满足条件的同构子图则将该用例加入到挂起队列和其余用例随机调度执行;
5)测试云提供全部的测试结果查询,并向提交优先执行测试用例的用户推送该用例的自动化执行结果;
6)所有的测试用例的运行标记全部置位表示测试用例已经执行完,重新跳至步骤3继续运行,直至测试用例执行完。
与现有技术相比,本发明提供的实现通信设备自动化云测试的方法通过子图同构算法,可以从测试云的资源池中找到匹配的物理资源执行自动化测试用例,该同一无向图中的其它节点可以继续做子图同构查找,避免了子拓扑运行时的全集拓扑其它节点的闲置。通过测试云资源池中设备资源的动态添加和删除,使设备在手工测试时独立出来,不使用时发布到云端参与自动化执行,以上特性最大限度的发挥自动化测试的并行特性,充分利用了测试资源。
附图说明
图1是本发明中设备物理拓扑的无向图的数据描述;
图2是本发明中子图同构查找过程示例。
具体实施方式
下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种实现通信设备自动化云测试的方法,包括以下步骤:
1)使用无向图对设备拓扑进行描述,无向图中的节点代表测试设备,无向图的边代表设备之间的物理连接,节点属性有ip地址、用户名密码、设备类型、在用标记、连接测试仪表的端口名和数量,边属性有端口类型、端口名和数量;
2)每一个无向图描述一套物理拓扑,一个或多个物理拓扑构成测试云上的资源池,测试人员私有的设备资源可以动态加入或撤出测试云来实现资源闲置时的共享;
3)测试云上测试调度系统实现自动化用例调度执行,达到最大限度并行,测试云实现一个运行队列来进行优先调度,默认所有自动化用例都不在队列中并无差别执行,执行后置位测试用例的运行标记,如果有用例需要优先运行,用户只需向测试云提交请求,即可将这些用例加入运行队列进行优先调度,直到队列为空;
4)测试云上的并行调度算法如下,执行到测试用例时,提取测试拓扑,在测试云上的资源池中的所有无向图中查找与测试拓扑同构的子图,并按照测试需求,如设备类型、链路类型、链路数等限制条件进行搜索剪枝,如果找到则将拓扑数据映射到自动化测试用例中进行执行,并标记相应无向图中节点的在用标记,运行结束后恢复,然后继续调度运行后续用例;
如果未找到满足条件的同构子图则将该用例加入到挂起队列和其余用例随机调度执行;
5)测试云提供全部的测试结果查询,并向提交优先执行测试用例的用户推送该用例的自动化执行结果;
6)所有的测试用例的运行标记全部置位表示测试用例已经执行完,重新跳至步骤3继续运行,直至测试用例执行完。
下面结合附图对本发明的实现通信设备自动化云测试的方法进行说明。
如图1所示,对应物理设备资源组成的网络拓扑采用无向图的数据结构进行描述,由于单图的规模一般不会太大,可以选择邻接表表示法或邻接矩阵表示法来描述。无向图中的节点代表测试设备,无向图的边代表设备之间的物理连接,节点属性有ip地址、用户名密码、设备类型、在用标记、连接测试仪表的端口名和数量,边属性有端口类型、端口名和数量等。
如图2所示,本发明中子图同构查找算法可以采用ullmann算法,具体流程如下:
提取自动化测试用例中的测试拓扑,依次从测试云资源池中的无向图中寻找与测试拓扑同构的子图。设测试拓扑的邻接矩阵为方阵ma,阶数为n1,测试云资源池中的无向图根据节点的在用标记进行修剪后的邻接矩阵为方阵mb,阶数为n2,寻找一个n1×n2的映射矩阵m',计算mc=m'(m'mb)t,对于
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。