《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 設(shè)計(jì)應(yīng)用 > 基于Tcl/Tk語(yǔ)言的自動(dòng)化測(cè)試平臺(tái)的實(shí)現(xiàn)
基于Tcl/Tk語(yǔ)言的自動(dòng)化測(cè)試平臺(tái)的實(shí)現(xiàn)
來(lái)源:電子技術(shù)應(yīng)用2013年第1期
李志報(bào)1,2, 袁 亮1,2
1. 光纖通信技術(shù)和網(wǎng)絡(luò)國(guó)家重點(diǎn)實(shí)驗(yàn)室,湖北 武漢430074; 2. 武漢郵電科學(xué)研究院, 湖北 武漢430074
摘要: 要提高三層交換機(jī)的可靠性,需要進(jìn)行大量的測(cè)試。為了提高測(cè)試的效率,提出基于Tcl/Tk語(yǔ)言的自動(dòng)化測(cè)試平臺(tái)。主要通過(guò)Tk實(shí)現(xiàn)GUI、Tcl實(shí)現(xiàn)測(cè)試腳本,已經(jīng)廣泛應(yīng)用于測(cè)試Sprient公司的TestCenter所能測(cè)試的設(shè)備測(cè)試,替代手動(dòng)操作測(cè)試儀表和手動(dòng)配置被測(cè)設(shè)備,大大提高了測(cè)試效率。
中圖分類號(hào): TP31
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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

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

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

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

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

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

 

 

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

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

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