随着电信级以太网的快速发展,对数据通信设备(如三层交换机、路由器等)的需要越来越大。特别是三层交换机的出现使IP网络成为更加经济实用的网络连接方式,在具备路由功能的同时,也具有更快的交换速度、更低的成本、更灵活的组网方式。随着IP网络的快速发展,对三层交换机的功能和性能提出了更高的要求,为了提供更加可靠的产品,三层交换机有很多功能以及性能需要测试,为了提高测试的效率,提出了基于Tcl/Tk语言的自动化测试平台。本平台是由Tcl/Tk语言实现的GUI和测试用例脚本两大部分组成,并已经在二层交换机、三层交换机、路由器、企业网关等设备测试中广泛应用。
1Tc1L/Tk语言简介
工具命令语言Tcl (Tool Command Language)是一种解释执行的脚本语言,工具集Tk (Toolkit)指的是X Window的工具包、基于Tel图形化开发工具。Tel拥有一个固有的核心命令集,同时还具有和C/C++语言类似的控制结构:if控制、循环控制和switch控制等,并支持过程的定义和调用,对数组和字符串等简单数据结构也提供了支持。由于Tel解释器是用一个C/C++语言的过程库实现,这个库中有丰富的用于扩展Tel命令的C/C++过程和函数,所以比较容易在C/C++应用嵌人TCL。
Tcl良好的可扩展性使得它能很好地适应产品测试的需要。测试任务常常会由于设计和需求的改变而迅速改变,利用Tcl的可扩展性,测试人员就可以迅速继承多种新技术,并针对产品新特点迅速推出扩展Tel命令集(比如本文对Spirent提供的STC_ API进行二次封装),以用于产品的测试中,可以较容易跟上设计需求的变化。
同时Tcl也具有很好的可移植性,它将程序设计概念高度抽象,真正地把程序设计与操作系统底层结构隔开,因此不依赖于任何平台,具有良好的可移植性,可运行在Unix , Windows , Macintosh等各种平台上。由于TCL程序设计与操作系统底层结构隔开,它屏蔽掉了编写C/C++程序时必须涉及到的一些较为烦琐的细节,可以大大地提高开发测试例的速度。而且,使用Tcl语言写的测试例脚本,即使作了修改,也无须重新编译即可调用Tcl解释器执行,从而省去不少时间,很大程度上提高测试的效率。
2 GUI的实现
利用Tk语言实现本平台的GUI, Tk是Tel的扩展功能,它扩充了Tcl写X Window程序的能力,即是说Tk是在一个X Window下编写的GUI程序套件,通过Tk语言可以很容易地写成窗口式的程序,按如图1所示流程实现。
一个应用程序有且只能有一个根窗口,它是子窗口或者按钮、文本等所有对象的“父亲”,在Tk中根窗口用“.”,在创建子窗口或者按钮、文本等对象时均以“.”加标识符构成对象名。
在Tk中包含很多构件(Widget),如Scrollbar ,Menu , Button , Message , Listbox等,都可以用于GUI的设计;Tk应用程序是由事件驱动的,而事件是由相应的操作系统管理(文本所用的操作系统为Windows XP),然后操作系统将用户的动作通知应用程序,应用程序执行相应的回调过程。Tk的应用程序由两个Tel脚本控制初始化脚本和事件句柄。当应用启动时,执行初始化脚本,进行创建应用的用户界面、装载应用的数据结构及其初始化工作。一旦初始化完成,进人事件循环中等待用户的交互动作,触发相应的Tcl脚本执行。