文獻標識碼: A
文章編號: 0258-7998(2013)01-0059-03
隨著電信級以太網的快速發(fā)展,,對數據通信設備(如三層交換機,、路由器等)的需要越來越大。特別是三層交換機的出現使IP網絡成為更加經濟實用的網絡連接方式,,在具備路由功能的同時,也具有更快的交換速度,、更低的成本,、更靈活的組網方式。隨著IP網絡的快速發(fā)展,,對三層交換機的功能和性能提出了更高的要求,,為了提供更加可靠的產品,三層交換機有很多功能以及性能需要測試,,為了提高測試的效率,提出了基于Tcl/Tk語言的自動化測試平臺,。本平臺是由Tcl/Tk語言實現的GUI和測試用例腳本兩大部分組成,并已經在二層交換機,、三層交換機,、路由器、企業(yè)網關等設備測試中廣泛應用,。
1 Tcl/Tk語言簡介
工具命令語言Tcl(Tool Command Language)是一種解釋執(zhí)行的腳本語言,,工具集Tk(Toolkit)指的是X Window的工具包、基于Tcl圖形化開發(fā)工具,。Tcl擁有一個固有的核心命令集,,同時還具有和C/C++語言類似的控制結構:if控制、循環(huán)控制和switch控制等,,并支持過程的定義和調用,,對數組和字符串等簡單數據結構也提供了支持。由于Tcl解釋器是用一個C/C++語言的過程庫實現,,這個庫中有豐富的用于擴展Tcl命令的C/C++過程和函數,,所以比較容易在C/C++應用嵌入Tcl。
Tcl良好的可擴展性使得它能很好地適應產品測試的需要,。測試任務常常會由于設計和需求的改變而迅速改變,,利用Tcl的可擴展性,測試人員就可以迅速繼承多種新技術,,并針對產品新特點迅速推出擴展Tcl命令集(比如本文對Spirent提供的STC_API進行二次封裝),,以用于產品的測試中,可以較容易跟上設計需求的變化。
同時Tcl也具有很好的可移植性,,它將程序設計概念高度抽象,,真正地把程序設計與操作系統(tǒng)底層結構隔開,,因此不依賴于任何平臺,具有良好的可移植性,,可運行在Unix,、Windows、Macintosh等各種平臺上,。由于Tcl程序設計與操作系統(tǒng)底層結構隔開,,它屏蔽掉了編寫C/C++程序時必須涉及到的一些較為煩瑣的細節(jié),可以大大地提高開發(fā)測試例的速度。而且,,使用Tcl語言寫的測試例腳本,,即使作了修改,也無須重新編譯即可調用Tcl解釋器執(zhí)行,,從而省去不少時間,,很大程度上提高測試的效率。
2 GUI的實現
利用Tk語言實現本平臺的GUI,,Tk是Tcl的擴展功能,,它擴充了Tcl寫X Window程序的能力,即是說Tk是在一個X Window下編寫的GUI程序套件,,通過Tk語言可以很容易地寫成窗口式的程序,,按如圖1所示流程實現。
一個應用程序有且只能有一個根窗口,,它是子窗口或者按鈕,、文本等所有對象的“父親”,在Tk中根窗口用“.”,,在創(chuàng)建子窗口或者按鈕,、文本等對象時均以“.”加標識符構成對象名。
在Tk中包含很多構件(Widget)[1-2],,如Scrollbar,、Menu、Button,、Message,、Listbox等,都可以用于GUI的設計,;Tk應用程序是由事件驅動的,,而事件是由相應的操作系統(tǒng)管理(文本所用的操作系統(tǒng)為Windows XP),然后操作系統(tǒng)將用戶的動作通知應用程序,,應用程序執(zhí)行相應的回調過程,。Tk的應用程序由兩個Tcl腳本控制初始化腳本和事件句柄。當應用啟動時,執(zhí)行初始化腳本,,進行創(chuàng)建應用的用戶界面,、裝載應用的數據結構及其初始化工作。一旦初始化完成,,進入事件循環(huán)中等待用戶的交互動作,,觸發(fā)相應的Tcl腳本執(zhí)行。
Tcl屬于直譯式的程序語言,,就如早期的Basic語言,,寫好的Tcl腳本通過Tcl直譯器tclsh執(zhí)行程序,通過tclsh執(zhí)行用Tk寫的Tcl腳本文件后出現如圖2的GUI界面,,已在烽火網絡公司使用,,給各系列交換機的測試工作節(jié)省大量時間,提高測試的效率,。運行GUI的.tcl文件出現如圖2所示界面,通過此界面可以telnet到TestCenter上占用相應端口,、設置被測交換機帶外地址和交換機被測端口,、加載相應被測腳本,然后運行(Run)完成自動化測試,。
3 測試腳本的實現
圖2中的GUI必須配合腳本才能使用,,而腳本是通過Tcl語言和Spirent提供的STC_API函數以及對STC_API函數進行二次封裝的函數實現,本平臺的三大特點都是通過對STC_API函數進行二次封裝后實現的,。通過Tcl語言實現代碼的編寫,,最終保存為“*.tcl”文件即可,而且“*.tcl”文件不需要編譯,,然后直接調用tclsh環(huán)境執(zhí)行相應的腳本程序,。本平臺是通過GUI加載“*.tcl”腳本文件,然后通過按鈕Run調用tclsh執(zhí)行腳本程序,。
腳本主要作用是通過代碼和相應的函數對測試儀表設備TestCenter進行操作和配置,、對DUT進行寫配置,來取代大量的手動操作,。不僅可以節(jié)省大量的時間提高測試的效率,,而且可以節(jié)省大量的人力,如圖3所示為本平臺GUI加載測試腳本界面,。
4 本平臺的特點
以烽火網絡高端交換機(三層交換機)為例測試了VLAN翻譯功能,以對本平臺進行詳細說明,。以下為本平臺三大特點:
(1) 通過腳本對交換機進行配置
由Spirent提供的STC_API[3-4]函數可以telnet到TestCenter上,在此函數的基礎上對其進行二次封裝為set session [fhn::telnet -dutip $dutip],,其中dutip為DUT(被測試設備)的帶外地址,,通過此函數可以telnet到DUT上。然后再通過二次封裝函數fhn::sendcmd $session "***" display對DUT進行配置,,其中"***"為配置的命令,通過display可以把對DUT的配置過程完整地顯示出來,加載VLAN-Translation.tcl測試腳本運行后生成的Test Results如圖4所示為telent到DUT進行配置的界面,。
通過腳本telnet到DUT進行寫配置是本平臺最大特點之一,,它為實現全自動化測試打了堅實的基礎,特別是在進行功能測試(由于功能測試配置的命令相對于性能測試少)時完全可以通過腳本telnet到DUT進行寫配置代替手動對DUT進行配置,可以節(jié)省大量對DUT寫配置的時間,,大大提高測試效率,。
(2)通過腳本對TestCenter端口進行抓包
由于TestCenter應用程序可以關聯(lián)抓包軟件Wireshark對TestCenter端口抓包,通過對STC_API中的抓包函數進行二次封裝后為fhn::capturestart -tcport [lindex $stcports 0]和fhn::capturestop -tcport [lindex $stcports 0] -filename d:/packets1.pcap,其中[lindex $stcports 0]為TestCenter相應端口的端口號,filename為抓包文件“*.pacp”在本地存放路徑,通過這兩個函數可以在相應的端口進行抓包并把數據包保存到本地硬盤以便進行分析,。在DUT測試的過程中,,需要進行抓包分析的過程很多,以便驗證測試結果,。本文中的VLAN翻譯功能的實現與否就可以通過此功能進行進一步的驗證,。
(3)腳本運行完后可生成詳細文檔
腳本運行完成后可生成三種類型的文本文檔。第一種是運行過程中生成的Test Results文檔(如圖4所示),,通過此文檔可以詳細查看腳本運行的每一步,,可以很容易找出其中的問題;第二種文檔為Test Detail,,是腳本運行完以后生成的測試結果文檔,,同時可以結合抓包得到“*.pacp”進行測試結果的驗證,如圖5所示(以VLAN翻譯的測試為例進行說明),;第三種文檔為debugInfo.txt,詳細記載著腳本運行中所出現的問題,為排查問題提供指導,。這三種類型文檔的生成都是通過代碼實現的,每次測試完后查看結果就是通過查看這三種類型的文檔以及結合Wireshark抓到數據包綜合分析所得到的,。
自動化測試出了問題就必須通過手動測試來查找原因,,而通過手動對TestCenter進行配置和操作,需要花費大量的時間,。Spirent提供的STC_API[5]函數中有一個保存TestCenter配置函數stc::perform SaveAsXml -FileName d:/vlan-translation.xml,,在腳本中加上此函數,腳本運行完后會將腳本中對TestCenter所有配置保存在一個“*.xml”,。當需要手動查找問題時,,就直接通過TestCenter應用程序打開“*.xml”,這樣即節(jié)約時間也提高了測試效率,。
同時本平臺可以一次加載多個(可達數百個)測試用例,,特別適合在非工作時間對DUT進行無人值守測試。一方面可以大大提高測試設備的利用率,,另一方面可以大大提高測試效率節(jié)省大量時間,。
本文中的自動化測試平臺是在Spirent公司的TestCenter測試設備基礎上設計的,獨立于DUT的設計,,已經廣泛應用交換機,、路由器、企業(yè)網關、EPON,、GPON等設備的測試,,能適用于Spirent公司的TestCenter所能測試所有的設備。特別是對設備的二層性能測試(大容量MAC地址學習以及數據包轉發(fā))和三層性能測試(超大容量路由學習及數據包轉發(fā))可以節(jié)省大量時間,,提高了測試效率,,并且可用于各種二層協(xié)議和三層協(xié)議的測試。通過使用本平臺可大大提高測試設備利用率和測試效率,,從而可加快設備的研發(fā)進度,,大大提高設備的穩(wěn)定性和可靠性。但是自動化測試也不是萬能的,,一般出現了問題還是要靠手動測試(可以利用自動化測試生成的.xml文件直接導入TestCenter可以省去大量儀表配置工作),。如果將手動測試和自動化測試結合起來,則能大大提高測試的效率,,使產品更加可靠穩(wěn)定,。
Tcl/Tk語言具有“簡明、高效,、可移植性好”的特點,,具有廣泛的應用前景,已成為事實上自動化測試標準語言,。
參考文獻
[1] WELCH B B, JONES K, HOBBS J. Practical programming in Tcl and Tk, Fourth Edition[M].Prentice Hall PTR,2003.
[2] Spirent Communications, Inc. Sprient Test Center Automation Object Reference. 2011.
[3] 崔凱.Tcl/Tk編程權威指南[M].北京:中國電力出版社, 2002.
[4] 孫惠杰,楊曉紅.軟件測試的自動化[J].哈爾濱師范大學學報(白然科學版),2003,19(5):42-49.
[5] 于秀山.軟件自動化測試效費分析[J].北京:計算機工程與應用,2003,39(17):107-109.