《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > 基于Tcl/Tk語言的自動化測試平臺的實現(xiàn)
基于Tcl/Tk語言的自動化測試平臺的實現(xiàn)
來源:電子技術(shù)應(yīng)用2013年第1期
李志報1,2, 袁 亮1,2
1. 光纖通信技術(shù)和網(wǎng)絡(luò)國家重點實驗室,湖北 武漢430074; 2. 武漢郵電科學(xué)研究院, 湖北 武漢430074
摘要: 要提高三層交換機的可靠性,需要進行大量的測試。為了提高測試的效率,提出基于Tcl/Tk語言的自動化測試平臺。主要通過Tk實現(xiàn)GUI、Tcl實現(xiàn)測試腳本,已經(jīng)廣泛應(yīng)用于測試Sprient公司的TestCenter所能測試的設(shè)備測試,替代手動操作測試儀表和手動配置被測設(shè)備,大大提高了測試效率。
中圖分類號: TP31
文獻標識碼: A
文章編號: 0258-7998(2013)01-0059-03
The realization of automation test platform based on Tcl/Tk language
Li Zhibao1,2, Yuan Liang1,2
1.State Key Laboratory of Optical Communication Technologies and Networks,Wuhan 430074,China; 2. Wuhan Research Institute of Posts and Telecommunications, Wuhan 430074,China
Abstract: In order to improve Layer 3 switch reliability, it needs to do a lot of test. In order to improve the efficiency of the test,so it put forwards automation test platform based on Tcl/Tk Language. This paper implements GUI by Tk and implements Script by Tcl,the platform has been widely applied in which Sprient company’s TestCenter can test equipment,instead of manual operation about test instrument and DUT,and it greatly improves the efficiency of the test.
Key words : automation test platform; tool command language; toolkit; script

    隨著電信級以太網(wǎng)的快速發(fā)展,對數(shù)據(jù)通信設(shè)備(如三層交換機、路由器等)的需要越來越大。特別是三層交換機的出現(xiàn)使IP網(wǎng)絡(luò)成為更加經(jīng)濟實用的網(wǎng)絡(luò)連接方式,在具備路由功能的同時,也具有更快的交換速度、更低的成本、更靈活的組網(wǎng)方式。隨著IP網(wǎng)絡(luò)的快速發(fā)展,對三層交換機的功能和性能提出了更高的要求,為了提供更加可靠的產(chǎn)品,三層交換機有很多功能以及性能需要測試,為了提高測試的效率,提出了基于Tcl/Tk語言的自動化測試平臺。本平臺是由Tcl/Tk語言實現(xiàn)的GUI和測試用例腳本兩大部分組成,并已經(jīng)在二層交換機、三層交換機、路由器、企業(yè)網(wǎng)關(guān)等設(shè)備測試中廣泛應(yīng)用。

1 Tcl/Tk語言簡介
    工具命令語言Tcl(Tool Command Language)是一種解釋執(zhí)行的腳本語言,工具集Tk(Toolkit)指的是X Window的工具包、基于Tcl圖形化開發(fā)工具。Tcl擁有一個固有的核心命令集,同時還具有和C/C++語言類似的控制結(jié)構(gòu):if控制、循環(huán)控制和switch控制等,并支持過程的定義和調(diào)用,對數(shù)組和字符串等簡單數(shù)據(jù)結(jié)構(gòu)也提供了支持。由于Tcl解釋器是用一個C/C++語言的過程庫實現(xiàn),這個庫中有豐富的用于擴展Tcl命令的C/C++過程和函數(shù),所以比較容易在C/C++應(yīng)用嵌入Tcl。
    Tcl良好的可擴展性使得它能很好地適應(yīng)產(chǎn)品測試的需要。測試任務(wù)常常會由于設(shè)計和需求的改變而迅速改變,利用Tcl的可擴展性,測試人員就可以迅速繼承多種新技術(shù),并針對產(chǎn)品新特點迅速推出擴展Tcl命令集(比如本文對Spirent提供的STC_API進行二次封裝),以用于產(chǎn)品的測試中,可以較容易跟上設(shè)計需求的變化。
    同時Tcl也具有很好的可移植性,它將程序設(shè)計概念高度抽象,真正地把程序設(shè)計與操作系統(tǒng)底層結(jié)構(gòu)隔開,因此不依賴于任何平臺,具有良好的可移植性,可運行在Unix、Windows、Macintosh等各種平臺上。由于Tcl程序設(shè)計與操作系統(tǒng)底層結(jié)構(gòu)隔開,它屏蔽掉了編寫C/C++程序時必須涉及到的一些較為煩瑣的細節(jié),可以大大地提高開發(fā)測試例的速度。而且,使用Tcl語言寫的測試例腳本,即使作了修改,也無須重新編譯即可調(diào)用Tcl解釋器執(zhí)行,從而省去不少時間,很大程度上提高測試的效率。
2 GUI的實現(xiàn)
    利用Tk語言實現(xiàn)本平臺的GUI,Tk是Tcl的擴展功能,它擴充了Tcl寫X Window程序的能力,即是說Tk是在一個X Window下編寫的GUI程序套件,通過Tk語言可以很容易地寫成窗口式的程序,按如圖1所示流程實現(xiàn)。

     一個應(yīng)用程序有且只能有一個根窗口,它是子窗口或者按鈕、文本等所有對象的“父親”,在Tk中根窗口用“.”,在創(chuàng)建子窗口或者按鈕、文本等對象時均以“.”加標識符構(gòu)成對象名。
    在Tk中包含很多構(gòu)件(Widget)[1-2],如Scrollbar、Menu、Button、Message、Listbox等,都可以用于GUI的設(shè)計;Tk應(yīng)用程序是由事件驅(qū)動的,而事件是由相應(yīng)的操作系統(tǒng)管理(文本所用的操作系統(tǒng)為Windows XP),然后操作系統(tǒng)將用戶的動作通知應(yīng)用程序,應(yīng)用程序執(zhí)行相應(yīng)的回調(diào)過程。Tk的應(yīng)用程序由兩個Tcl腳本控制初始化腳本和事件句柄。當應(yīng)用啟動時,執(zhí)行初始化腳本,進行創(chuàng)建應(yīng)用的用戶界面、裝載應(yīng)用的數(shù)據(jù)結(jié)構(gòu)及其初始化工作。一旦初始化完成,進入事件循環(huán)中等待用戶的交互動作,觸發(fā)相應(yīng)的Tcl腳本執(zhí)行。
    Tcl屬于直譯式的程序語言,就如早期的Basic語言,寫好的Tcl腳本通過Tcl直譯器tclsh執(zhí)行程序,通過tclsh執(zhí)行用Tk寫的Tcl腳本文件后出現(xiàn)如圖2的GUI界面,已在烽火網(wǎng)絡(luò)公司使用,給各系列交換機的測試工作節(jié)省大量時間,提高測試的效率。運行GUI的.tcl文件出現(xiàn)如圖2所示界面,通過此界面可以telnet到TestCenter上占用相應(yīng)端口、設(shè)置被測交換機帶外地址和交換機被測端口、加載相應(yīng)被測腳本,然后運行(Run)完成自動化測試。

3 測試腳本的實現(xiàn)
    圖2中的GUI必須配合腳本才能使用,而腳本是通過Tcl語言和Spirent提供的STC_API函數(shù)以及對STC_API函數(shù)進行二次封裝的函數(shù)實現(xiàn),本平臺的三大特點都是通過對STC_API函數(shù)進行二次封裝后實現(xiàn)的。通過Tcl語言實現(xiàn)代碼的編寫,最終保存為“*.tcl”文件即可,而且“*.tcl”文件不需要編譯,然后直接調(diào)用tclsh環(huán)境執(zhí)行相應(yīng)的腳本程序。本平臺是通過GUI加載“*.tcl”腳本文件,然后通過按鈕Run調(diào)用tclsh執(zhí)行腳本程序。
    腳本主要作用是通過代碼和相應(yīng)的函數(shù)對測試儀表設(shè)備TestCenter進行操作和配置、對DUT進行寫配置,來取代大量的手動操作。不僅可以節(jié)省大量的時間提高測試的效率,而且可以節(jié)省大量的人力,如圖3所示為本平臺GUI加載測試腳本界面。

4 本平臺的特點
    以烽火網(wǎng)絡(luò)高端交換機(三層交換機)為例測試了VLAN翻譯功能,以對本平臺進行詳細說明。以下為本平臺三大特點:
    (1) 通過腳本對交換機進行配置
   由Spirent提供的STC_API[3-4]函數(shù)可以telnet到TestCenter上,在此函數(shù)的基礎(chǔ)上對其進行二次封裝為set session [fhn::telnet -dutip $dutip],其中dutip為DUT(被測試設(shè)備)的帶外地址,通過此函數(shù)可以telnet到DUT上。然后再通過二次封裝函數(shù)fhn::sendcmd $session "***" display對DUT進行配置,其中"***"為配置的命令,通過display可以把對DUT的配置過程完整地顯示出來,加載VLAN-Translation.tcl測試腳本運行后生成的Test Results如圖4所示為telent到DUT進行配置的界面。

 

 

    通過腳本telnet到DUT進行寫配置是本平臺最大特點之一,它為實現(xiàn)全自動化測試打了堅實的基礎(chǔ),特別是在進行功能測試(由于功能測試配置的命令相對于性能測試少)時完全可以通過腳本telnet到DUT進行寫配置代替手動對DUT進行配置,可以節(jié)省大量對DUT寫配置的時間,大大提高測試效率。
    (2)通過腳本對TestCenter端口進行抓包
    由于TestCenter應(yīng)用程序可以關(guān)聯(lián)抓包軟件Wireshark對TestCenter端口抓包,通過對STC_API中的抓包函數(shù)進行二次封裝后為fhn::capturestart -tcport [lindex $stcports 0]和fhn::capturestop -tcport [lindex $stcports 0] -filename d:/packets1.pcap,其中[lindex $stcports 0]為TestCenter相應(yīng)端口的端口號,filename為抓包文件“*.pacp”在本地存放路徑,通過這兩個函數(shù)可以在相應(yīng)的端口進行抓包并把數(shù)據(jù)包保存到本地硬盤以便進行分析。在DUT測試的過程中,需要進行抓包分析的過程很多,以便驗證測試結(jié)果。本文中的VLAN翻譯功能的實現(xiàn)與否就可以通過此功能進行進一步的驗證。
    (3)腳本運行完后可生成詳細文檔
    腳本運行完成后可生成三種類型的文本文檔。第一種是運行過程中生成的Test Results文檔(如圖4所示),通過此文檔可以詳細查看腳本運行的每一步,可以很容易找出其中的問題;第二種文檔為Test Detail,是腳本運行完以后生成的測試結(jié)果文檔,同時可以結(jié)合抓包得到“*.pacp”進行測試結(jié)果的驗證,如圖5所示(以VLAN翻譯的測試為例進行說明);第三種文檔為debugInfo.txt,詳細記載著腳本運行中所出現(xiàn)的問題,為排查問題提供指導(dǎo)。這三種類型文檔的生成都是通過代碼實現(xiàn)的,每次測試完后查看結(jié)果就是通過查看這三種類型的文檔以及結(jié)合Wireshark抓到數(shù)據(jù)包綜合分析所得到的。

    自動化測試出了問題就必須通過手動測試來查找原因,而通過手動對TestCenter進行配置和操作,需要花費大量的時間。Spirent提供的STC_API[5]函數(shù)中有一個保存TestCenter配置函數(shù)stc::perform SaveAsXml -FileName d:/vlan-translation.xml,在腳本中加上此函數(shù),腳本運行完后會將腳本中對TestCenter所有配置保存在一個“*.xml”。當需要手動查找問題時,就直接通過TestCenter應(yīng)用程序打開“*.xml”,這樣即節(jié)約時間也提高了測試效率。
    同時本平臺可以一次加載多個(可達數(shù)百個)測試用例,特別適合在非工作時間對DUT進行無人值守測試。一方面可以大大提高測試設(shè)備的利用率,另一方面可以大大提高測試效率節(jié)省大量時間。
    本文中的自動化測試平臺是在Spirent公司的TestCenter測試設(shè)備基礎(chǔ)上設(shè)計的,獨立于DUT的設(shè)計,已經(jīng)廣泛應(yīng)用交換機、路由器、企業(yè)網(wǎng)關(guān)、EPON、GPON等設(shè)備的測試,能適用于Spirent公司的TestCenter所能測試所有的設(shè)備。特別是對設(shè)備的二層性能測試(大容量MAC地址學(xué)習(xí)以及數(shù)據(jù)包轉(zhuǎn)發(fā))和三層性能測試(超大容量路由學(xué)習(xí)及數(shù)據(jù)包轉(zhuǎn)發(fā))可以節(jié)省大量時間,提高了測試效率,并且可用于各種二層協(xié)議和三層協(xié)議的測試。通過使用本平臺可大大提高測試設(shè)備利用率和測試效率,從而可加快設(shè)備的研發(fā)進度,大大提高設(shè)備的穩(wěn)定性和可靠性。但是自動化測試也不是萬能的,一般出現(xiàn)了問題還是要靠手動測試(可以利用自動化測試生成的.xml文件直接導(dǎo)入TestCenter可以省去大量儀表配置工作)。如果將手動測試和自動化測試結(jié)合起來,則能大大提高測試的效率,使產(chǎn)品更加可靠穩(wěn)定。
    Tcl/Tk語言具有“簡明、高效、可移植性好”的特點,具有廣泛的應(yīng)用前景,已成為事實上自動化測試標準語言。
參考文獻
[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編程權(quán)威指南[M].北京:中國電力出版社,   2002.
[4] 孫惠杰,楊曉紅.軟件測試的自動化[J].哈爾濱師范大學(xué)學(xué)報(白然科學(xué)版),2003,19(5):42-49.
[5] 于秀山.軟件自動化測試效費分析[J].北京:計算機工程與應(yīng)用,2003,39(17):107-109.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。