《電子技術應用》
您所在的位置:首頁 > 通信与网络 > 业界动态 > 基于TCL的DHCP协议冒烟测试

基于TCL的DHCP协议冒烟测试

2008-12-17
作者:方 毅, 赵保华

  摘 要: 介紹了基于TCL的協議冒煙測試" title="冒煙測試">冒煙測試系統,對DHCP協議進行形式化分析,生成EFSM圖,采用UIO方法生成一致性測試序列,并在該系統上針對提供DHCP服務的各網絡設備進行了DHCP協議的冒煙測試,在實際應用中取得了較好的測試效率,縮短了產品研發周期,降低了風險,提高了產品的可靠性。
  關鍵詞: 協議測試" title="協議測試">協議測試; 冒煙測試; 一致性測試

?

  每日構建和冒煙測試是個優秀軟件產品的實踐過程,在這個過程中,軟件產品每天被完全創建并通過一系列的測試以檢驗它的基本運行情況。冒煙測試可以極大地降低經常遇到的項目進度不清、不成功的整合、質量低劣等風險[1]
  網絡協議對確保網絡的正常運行起著至關重要的作用。協議測試是檢驗網絡協議實現與協議標準是否一致的重要手段。DHCP是一個草案標準協議,廣泛應用于TCP/IP網絡上的主機信息自動配置。協議的冒煙測試是網絡產品設計過程中的重要環節,可降低系統集成風險,縮短產品開發周期,是保證協議一致性的重要手段。它為依照國際標準化組織所制定的“協議一致性測試的方法和框架”[2]進行一致性的測試做準備。
  本文介紹了基于TCL的協議冒煙測試系統" title="測試系統">測試系統平臺、對DHCP協議進行形式化描述、生成EFSM圖和UIO測試序列、引出DHCP協議冒煙測試的功能點、結合TCL的高擴展能力,給出基于TCL的DHCP協議冒煙測試系統的具體實現。
1 協議冒煙測試系統
1.1 冒煙測試
  冒煙測試是微軟公司[3]首先提出的一個概念,與微軟公司一直提倡的每日構建有很密切的聯系。冒煙測試指的是開發人員在個人版本的軟件上進行一個簡單的功能需求測試,確定基本功能都已經被實現,可以進行后續測試工作。其嚴格定義為:冒煙測試是從抽象層次驗證軟件的基本功能是否已經實現來確定是否需要更多的測試。若測試失效,軟件不再進行其他測試,直接返回給開發人員。具體地說,冒煙測試就是在每日構建建立后對系統的基本功能進行簡單的測試,這種測試強調功能的覆蓋率,而不對功能的正確性進行驗證。從這一點看,與所謂的“接受性(驗收)測試(Acceptance Test)”非常相似。不同之處在于冒煙測試所執行的頻率和被測的版本不同。
  協議的冒煙測試是對協議實現的基本功能進行測試,確保協議能夠正常運行。冒煙測試隨著系統的擴充而擴充,最初的冒煙測試可能非常簡單,隨著開發的進展,系統功能的擴充,冒煙測試也越來越充分[1]。所以冒煙測試本質上屬于協議一致性測試,因此,協議一致性測試的方法適用于冒煙測試。冒煙測試作為一個優秀有益的實踐過程,有別于通常的協議一致性測試的地方在于測試的頻率和范圍。
  由于協議軟件比一般軟件更加復雜,完整測試的代價也更高,因此更加需要進行冒煙測試。當冒煙測試成為軟件開發生命周期的一部分時,產品的質量將得到很大的提升。冒煙測試首先要開發一系列的測試例,這些測試例將在每次編譯構建后運行,用來測試系統的主要功能完成情況。將這些測試例腳本串行自動化執行,向用戶返回一個哪些協議功能已經基本實現(通過冒煙測試)的列表,這個自動化的冒煙測試過程是針對被測實現IUT(Implement Under Test)在路由器開發過程中被定期執行。目前常用的腳本語言有TCL、Perl、Python、Windows Scripting及批處理等。其中,TCL腳本已逐漸成為業界普遍采用的實用工具。
1.2 系統實現
  本測試利用TCL的可擴展性,通過將C++實現的協議測試基本庫封裝在動態鏈接庫,無縫集成到TCL平臺,同時對TCL命令集進行擴展,實現了一個基于TCL的DHCP協議冒煙測試系統。圖1是該系統的系統架構。DHCP協議冒煙測試即是在該系統架構下實現的。

?


  該系統由底層支持模塊、測試套編輯模塊、測試套執行和管理模塊、GUI界面模塊構成。
底層支持模塊:在TCL自身命令的基礎上,增加C++實現的協議測試基本庫及TCL擴展命令,提供從鏈路層及以上各層協議的收發和編解碼等命令。
  測試套編輯模塊:采用TCL為測試套的編寫語言,包括測試例描述、測試腳本、測試配置文件。
  測試套執行和管理模塊:由于底層支撐命令采用的是已編譯過的二進制代碼,故雖然測試套采用TCL編寫,但是測試執行是簡單高效的。測試套執行后,自動生成測試結果報告。
  GUI界面模塊:目前采用VC實現,以后將考慮用TK實現,以提高系統的可移值性。
2 基于TCL的DHCP協議冒煙測試的測試套實現
2.1 DHCP協議及其形式化

  DHCP是一個草案標準協議。動態主機配置協議DHCP(Dynamic Host Configuration Protocol)RFC2131、DHCP RFC2132選項和BOOTP軟件商擴展(DHCP Options and BOOTP Vendor Extensions),系統地描述了當前DHCP規范。
  DHCP提供了一個把配置信息傳遞到TCP/IP網絡上的主機的框架[4]。DHCP基于BOOTP協議[5],增加了自動分配可重用網絡地址的能力和額外的配置選項[6]。有關BOOTP的規范可參考文獻[7]。
  DHCP消息使用UDP的67端口(BOOTP服務器公用)和68端口(BOOTP客戶公用端口)。DHCP參與者可以與BOOTP參與者互操作[8]
  DHCP采用客戶/服務器模式,由兩部分組成:
  (1)把特定主機的配置參數從一個DHCP服務器發送到主機的協議。
  (2) 把網絡地址(臨時或永久)分配給主機的機制。
  DHCP消息分為DHCPDISCOVER、DHCPOFFER、DHCP-
  REQUEST、DHCPACK、DHCPNACK、DHCPDECLINE、DHC-
  PRELEASE、DHCPINFORM等八種類型。圖2為DHCP客戶/服務器交互過程時序圖,顯示了其典型客戶/服務器交互的時序關系及各消息類型間的關系。

?


  DHCP服務器端接收來自DHCP客戶端" title="客戶端">客戶端的DHCPDISCOVER、DHCPREQUEST、DHCPDECLINE、DHCPRELEASE、DHCPINFORM等DHCP消息,而DHCP客戶端則接收來自DHCP服務器端的DHCPOFFER、DHCPACK、DHCPNAK等DHCP消息。通過DHCP客戶/服務器交互過程完成整個DHCP機制,其DHCP消息類型是DHCP機制成功實施的基礎和關鍵。
  DHCP冒煙測試的功能點包括:客戶端初始化并通過DHCP Relay Agent向DHCP Server獲取網絡地址(DHCP Relay)、客戶端初始化向DHCP Server獲取網絡地址;客戶端初始化向DHCP Server申請重新使用以前分配的網絡地址;外部賦予客戶端配置參數,客戶端與DHCP Server通信進行初始化(DHCP Server)。
  本文以DHCP Server功能為例,首先將DHCP的非形式化描述轉化成用EFSM[9]協議形式化描述技術來進行描述,然后基于EFSM的測試序列生成方法UIO(Unique Input/Ouput Sequence)[10]生成DHCP協議的測試序列,最后實現測試序列的腳本,即完成其冒煙測試。
  DHCP Server功能主要實現動態IP地址分配,其EFSM圖如圖3所示。

?

  圖3中,a表示DHCPDiscover,b表示DHCPRequest, c表示DHCPInform,d表示DHCPDecline,x表示DHCPOffer,y表示DHCPAck, z表示DHCPNak。
  在圖3所示的EFSM圖的基礎上,采用UIO方法生成一致性測試序列:
  (1)為每個狀態確定一個不同的輸入輸出序列:
  UIO(S1)={a/x},UIO(S2)={b/y},UIO(S3)={c/y},是滿足上述要求的三個輸入輸出序列。
  (2)測試EFSM 中的每個狀態Si。測試序列由三部分組成:①引導序列。②狀態Si的UIO 序列(帶下劃線標記)。③同步序列ri/null。
  

  (3)測試EFSM 中的每個狀態轉換(Si, Sj,i/o)。輸入序列由四部分組成:(a)引導序列。(b)待測轉換i/o(帶下劃線標記)。(c)狀態sj 的UIO 序列。(d)同步序列ri/null。
  

2.2? 測試例實現
  測試套是測試例的集合,測試例由測試例描述、測試腳本、測試例配置文件三部分構成,而測試例配置文件又分測試前配置文件、去配置文件,以保持干凈的測試環境" title="測試環境">測試環境,各測試例在測試套自動執行時,前一測試例不影響后面的測試例。同時,測試例的描述與測試環境密切相關,測試例在編寫時將測試腳本和測試配置分開,以適應不同的測試環境。
  圖4為DHCP Server功能點的冒煙測試環境。利用TCL的可擴展性,實現了基于數據鏈路層的數據收發及編解碼支撐命令、PCO(Point of Control and Observation)支持命令、DHCP協議的接口支持函數和編解碼函數。部分命令如表1所示。

?


  測試例的框架如下:
  #首先開發DHCP的TCL擴展命令,封裝其各種報文的收發、編碼和解碼等。
  #加載TCL/Tk擴展命令,以及測試環境配置參數。
  #通過telnet設置IUT測試環境:
  set result [TELNET::TelExecFile $s $cmdfilename]
  #測試過程
  #建立Socket連接并發送報文
  set udp_sock [UDP::Init $s_adpter $s_mac $broadMac??
   $s_addr $s_port $broadIp $d_port]
  set udp_bcast_rsock [UDP::Init $s_adpter $broadMac
  ??$d_mac? $broadIp $s_port $d_addr $d_port]
  UDP::Send $udp_sock $dhcpData
  …
  set dhcp_offer [UDP::ReceiveFrom $udp_bcast_rsock
???? $timeout '' '' '']
  #對收到的報文解碼分析。
2.3 測試結果
  協議冒煙測試實現的是對基本功能的測試,不關注細節,其目的是確保系統穩定運行,能進行進一步的測試。DHCP冒煙測試例在協議冒煙測試系統中以測試套的形式自動執行,向用戶返回測試例的執行結果。本例中,對DHCP的四個功能點實現其測試例,并且每個測試例以UIO測試序列來對協議實現情況進行測試和評判。其測試結果如表2所示。

?


  表2顯示了DHCP Server、 Relay測試例均已通過,說明該協議的冒煙測試已經完成,該IUT支持DHCP。測試環境中的RUT是一臺成熟的路由器產品,該路由器支持DHCP,測試結果與預期的結果是一致的。說明本文提出的基于TCL的協議冒煙測試系統在實際應用中是可行、高效的。
  本文基于TCL/Tk協議測試系統實現了DHCP的冒煙測試,將冒煙測試引入協議產品的開發中,提高了項目的可視性和產品的質量,降低了產品上市時間延遲的風險。本文對提高協議測試的覆蓋率和測試效率,實現測試序列的自動生成,具有一定的參考價值。


參考文獻
[1]?(美)邁克康奈爾(Ma C S)著[M].快速軟件開發——有效控制與完成進度計劃.席相霖,等譯.北京:電子工業出版社,2002.
[2] ?IS29646.ISO. Conformance testing methodology and framework[S]. 1991.
[3] ?CONNELL M C S. Software project survival Guide[M]. ?Microsoft Press, 1998:290-330.
[4] ?RFC2131.Dynamic host configuration protocol[S].?1997.
[5] ?CROFT B, GILMORE J. Bootstrap protocol?(BOOTP). RFC951 Stanford and SUN Microsystems[S], September 1985.
[6]? SCHILLER J, ROSENSTEIN M. A protocol for the?dynamic assignment of IP addresses for use on an ethernet.(Available from the Athena Project, MIT)[Z], 1989.
[7]? ?RFC951. Bootstrap Protocol[S]. 1985.

[8] ?DROMS D. Interoperation between DHCP and BOOTP.? RFC 1534[S], Bucknell University, October 1993.
[9]? DUALE A Y, FECKO M A, UYAR M U. Generating?executable tests for timed and untimed EFSM models.
?Proc. IIS/IEEE World Multiconference on Systemics,Cybernetics and Informatics[J], Orlando, FL, 2001,(2):
?109-113.
[10] 余萍,顧冠群.基于UIO流方法的協議一致性測試及應用[J]. 數據通信,1996,(1):8-15.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 日本一区二区免费高清视频| 日韩一区在线视频| 久久久神马电影| 人妻av无码专区| 久久亚洲高清| 一区二区免费在线视频| 国产亚洲欧美一区二区三区| 久久天天躁狠狠躁夜夜av| 亚洲一区中文字幕| 国产精品自拍小视频| 免费99精品国产自在在线| 欧美亚洲另类制服自拍| 久久天天躁狠狠躁夜夜躁2014 | 日韩美女中文字幕| www.日韩不卡电影av| 久久国产精品精品国产色婷婷| 久久天天狠狠| 欧日韩免费视频| 久久久久久国产精品免费免费| 欧美一区三区二区在线观看| 中文字幕免费在线不卡| 国产精品久久久久av免费| 水蜜桃亚洲精品| 亚洲欧洲精品一区二区| 欧美在线中文字幕| 久久久久国产精品视频| 日本欧美在线视频| 色婷婷综合成人| 一区二区三区四区欧美日韩| 国产精品视频地址| 国产精品久久久一区| 在线观看亚洲视频啊啊啊啊| 日韩欧美国产免费| 国产在线观看精品一区二区三区| 久久精品国产欧美激情| 国产精品美腿一区在线看| 亚洲欧洲日本国产| 欧美 日韩 国产在线观看| 欧美激情精品在线| 国产精品99久久久久久www| 日韩在线视频国产|