IP網絡的測試方法
隨着IP附應用時及和深入,IP網絡的建設、維護和故障診斷面臨着巨大的挑戰:網絡的規模越來越大、組成網絡的設備越來越複雜、在網絡中運行的軟件系統越來越龐大、網絡承載的業務越來越多.
網絡測試是保證網絡高性能、高可靠性和高可用率的基本手段,它在IP網絡建設和發展中的重要意義正得到日益廣泛的認可。
網絡測試
網絡是一個很複雜的系統,通常人們把網絡分爲不同的層次予以簡化。在網絡測試中,我們可以把網絡分爲3個不同的層次:設備層、系統層和應用層,因此網絡測試正是軒對這3個層次來進行的。
網絡設備測試主要包括功能測試、性能測試、一致性和互通性測試等幾個方面。網絡系統測試包括物理連通性、基本功能和一致性的測試、網絡系統的規劃驗證測試、性能測試、流量測試和模型化等。網絡應用測試是測試網絡系統支持各種應用的能力。完整的網絡測試包含完成上述3個層次的所有測試。
網絡測試主要包括測試方法、測試工具和測試經驗等3個方面的內容。無論是測試方法的設計、測試工具的發明和運用還是測試經驗的積累,都有很高的技術要求,其中測試方法是核心。網絡測試的方法和手段因測試的目的而有所不同。典型的網絡設備測試的方法有2種:第一種方法是使用網絡測試設備單獨對產品進行測試;第二種方法是將設備放在具體的網絡環境中,通過分析該產品在網絡中的行爲對其進行測試,這種網絡環境多數是用仿真的方式實現的。測試工具主要有線纜測試儀、協議分析儀和網絡智能分析儀等。實際的網絡在設備、拓撲、管理維護等各方面千差萬別,可能出現的問題也是五花八門的,測試人員除了要掌握必須的網絡知識外,還需要有豐富的系統集成和現場測試的經驗。
網絡系統的建設一般經歷規劃、設計、部署、運行和升級五個階段。網絡測試應貫穿其中的每個階段。由於技術或者經濟的原因,實際網絡測試的應用和理論上還有較大的差距。無論從經濟的角度還是從時間的角度來看,用戶都很難自己來完成所有的測試。用戶在選購設備時可以參照由設備提供商提供的第三方測試機構對其設備的測試報告,依據測試報告和自身的需求選擇設備。在網絡設計施工完成之後,應該由施工單位以外的測試機構對網絡進行網絡系統測試,以檢驗工程質量。最後在試運行階段對網絡承載業務和應用的能力進行測試,即進行網絡的應用測試。但是, 我國網絡測試起點較低,雖然已經成立,了多家開展網絡測試的機構,但至今還沒有形成相對比較權威的網絡測試機構,我國的網絡測試技術和市場都有待發展。
IP網絡的測試技術
IP網絡測試和上述所有的網絡測試一樣,包括對網絡設備層、系統層和應用層的測試。與其它網絡測試不同的是:(1)IP網絡中的設備與電信網中的設備在性能、安全性和穩定性方面有較大的區別,它們原先更多的是用於計算機互聯的設備;(2)IP網絡是IP網絡測試的目標,它的網絡層協議採用IP協議,IP 協議並不保證網絡數據的可靠性,它採用“盡力而爲”的方式轉發數據包;(3)IP網絡以傳輸數據業務爲主,業務高很高的突發性,IP網絡幾乎可以承載任何業務,因此網絡應用層的測試比較複雜。
IP網絡設備測試
我們就以太網交換機的測試爲例說明具體的網絡設備測試。
首先要分析交換機的物理特性,即對諸如外觀(包括顏色、重量、尺寸和包裝等)、端口配置、擴展能力等用戶可以直接瞭解的設備信息的測試,主要的測試方法是目測。這些參數和交換機本身的功能和性能沒有關係,但是對用戶來說則很重要,將直接影響用戶對設備的評價。一款顏色:搭配不和諧、尺寸很大的交換機,顯然不會成爲用戶優先選擇的目標。
進一步的測試需要一臺帶有收發端口的測試儀。測試儀與被測交換機有兩種連接方法。
在第二種連接方式下,如果測試儀(發送)和測試儀(接收)之間沒有計算機的控制,則無法完成部分精度要求較高的測試項和在發送與接收之間有時間或邏輯關係要求的測試頂,如流量測試等。
在測試儀與被測設備連接完成以後,在開始測試之前,還要首先配置被測的交換機,包括對軟件和硬件的配置,特別是配置交換機支持的協議並予以激活。
首先是對交換機進行功能測試,目的是檢測設備是否能夠完成交換機這類設備所應具備的功能,如幀的轉發、過濾、流量控制、VLAN、生成樹協議等。
接着進行性能測試,目的是瞭解交換機完成各項功能時的性能情況。交換機性能測試的參數包括吞吐量、時延、幀丟失率、處理背靠背數據幀的能力、地址緩衝容量、地址學習速率等。RFC1242和RFC2285分別定義了網絡互聯設備和LAN交換設備測試的基準術語,RFC2544和RFC2889則分別定義了網絡互聯設備和LAN交換設備測試的基準方法。這幾個RFC是測試網絡設備時參考的標準。
完成上述測試之後,需要進行一致性和互通性測試,以驗證交換機是否符合各項規範的要求,包括協議的一致性,確保交換機和其他的網絡設備進行互聯時不會出現問題。
對交換機設備的測試最終應提供一份完整的測試報告,測試報告對在這次測試中的測試對象、測試工具、測試環境、測試內容、測試結果等進行詳細論述。測試報告中包括對各測試項目的測試結果,應以數字、圖形、列表等方式記錄下來。完整、客觀的設備測試報告是購買設備的重要參考。
IP網絡系統測試
IP網絡系統測試的第一步是瞭解所測網絡的狀況,包括網絡所屬單位的情況、網絡設備情況、網絡主要應用、使用該網絡的人員情況、網絡中存在的問題等等。對網絡狀況的調查可以明確測試的對象、目的、要求等,爲制定詳細的測試方案做好準備,對網絡設備的調查可以爲所測網絡建立詳細的網絡文檔。網絡文檔的內容包括網絡拓撲結構圖,路由器和交換機的生產廠家、型號、內部參數配置,服務器和工作陸的生產廠家、型號、內存、硬盤、網卡的序列號和MAC地址等,IP地址、防火牆和操作系統參數配置等。
瞭解了網絡基本狀況後,就可以根據測試要求擬定詳細的測試方案。
物理連通性、基本功能和一致性的測試是最基本的網絡系統測試內容,其中主要是線纜測試,用以查明所測線纜及佈線是否符合設計要求和國際標準。如果線纜的安裝不符合各類標準,就應該繪出具體的各種類型電纜管腳的連接圖。
模擬和仿真是規劃驗證測試的兩個基本手段。模擬即用軟件的方法建立虛擬的網絡系統及其運行模型,通過設置配置參數模擬實際環境下的網絡運行,並給出對該網絡的評價。仿真則是建立真實的試驗環境來模擬實際的網絡運行。模擬和仿真對大型網絡的規劃設計很有意義,它可以在網絡實際建設之前瞭解網絡的特性,或者發現規劃設計中的缺陷,大大降低網絡建設的風險。但是模擬和仿真本身需要許多資金和時間,因此在網絡建設中各單位會參照具體情況來決定是否要做這項測試。
性能測試可以分爲被動測試和主動測試。被動測試就是用儀表監測網絡中的數據,通過分析採集到的數據判斷網絡性能狀況。被動測試在不影響網絡正常工作的情況下測試。主動測試通過向網絡中發送特定的數據包來分析網絡系統的性能。不論是被動測試還是主動測試,都需從網絡中採集數據。一個IP網絡系統可以分爲物理層、數據鏈路層、網絡層和應用層。IP網絡系統的性能測試應該分別針對物理層、數據鏈路層和網絡層進行。如以太網,物理層的測試包括碰撞分析、錯誤統計和是否有隨機能量、無格式的幀和信號回波等,數據鏈路層的測試包括流量分析、錯誤幀(FCS錯誤幀、長幀、短幀和延遲碰撞)統計等,網絡層的測試包括響應時間測試、網絡層協議分析、IP路由分析等。
流量測試和模型化的工作有利於提高整個網絡的運行效率,其中涉及到運用一些很深的數學工具和豐富的網絡經驗,許多關鍵技術還有待研究。
IP網絡應用測試
完成IP網絡設備測試和系統測試之後就可以在網絡上加載各種應用,各種網絡應用的性能水平與網絡的類型、網絡本身的性能有直接關係。IP網絡應用測試是 IP網絡測試中最高層次的測試內容,主要測試IP網絡對應用的支持水平,如網絡應用的性能和服務質量的測試等。另外,IP網絡應用測試和網絡應用本身直接相關,對於不同的網絡應用,有不同的測試內容和測試方法。在部署VoIP時,需要測試網絡中的交換機和路由器設備能否有效地支持語音流量和語音QoS等, 在測試用於視頻傳輸的網絡時,需要測試視頻傳輸在IP網絡中的性能以及網絡用戶是否能夠得到滿意的視頻質量等
提高測試覆蓋度
測試覆蓋度評估是衡量階段性軟件測試執行狀態的重要手段之一,來確定測試是否達到事先設定的測試任務完成的標準。測試覆蓋率則是測試覆蓋度評估中一種量化的表示方法,一般通過被測試的軟件產品需求、功能點、測試用例數或程序代碼行等來進行計算。
軟件測試覆蓋率常用的計算公式:
功能覆蓋率= 至少被執行一次的測試功能點數/ 測試功能點總數 (功能點)
需求覆蓋率= 被驗證到的需求數量 /總的需求數量 (需求)
覆蓋率= 至少被執行一次的測試用例數/ 應執行的測試用例總數 (測試用例)
語句覆蓋率= 至少被執行一次的語句數量/ 有效的程序代碼行數
判定覆蓋率= 判定結果被評價的次數 / 判定結果總數
條件覆蓋率= 條件操作數值至少被評價一次的數量 / 條件操作數值的總數
判定條件覆蓋率= 條件操作數值或判定結果至少被評價一次的數量/(條件操作數值總數+判定結果總數)
上下文判定覆蓋率= 上下文內已執行的判定分支數和/(上下文數*上下文內的判定分支總數)
基於狀態的上下文入口覆蓋率= 累加每個狀態內執行到的方法數/(狀態數*類內方法總數)
分支條件組合覆蓋率= 被評測到的分支條件組合數/分支條件組合數
路徑覆蓋率= 至少被執行一次的路徑數/程序總路徑數
除此之外,覆蓋率還包括類覆蓋率、函數覆蓋率、代碼塊覆蓋率等,如EMMA中
測試評估可以說貫穿整個軟件測試過程,可以在測試每個階段結束前進行,也可以在測試過程中某一個時間進行,目的只有一個,提高測試覆蓋度,保證測試的質量。通過不斷的測試覆蓋度評估或測試覆蓋率計算,及時掌握測試的實際狀況與測試覆蓋度目標的差距,及時採取措施,就可以提高測試的覆蓋度。
測試覆蓋度的評估依賴於不同的測試階段或不同的測試方法。如在單元測試中,測試覆蓋率是建立在被測試的代碼行、程序分支和程序路徑等的度量之上,從軟件質量保證的要求出發,單元測試的覆蓋率要達到80%之上。白盒測試方法主要以程序語句、判定-條件、條件組合和(基本)路徑等覆蓋率來衡量,和單元測試是吻合的。而在系統功能測試中,則以功能點、測試用例、需求數等覆蓋率來衡量。
要獲得、提高測試覆蓋率,常常需要藉助測試工具。下面就以兩個測試工具爲例。
1. EMMA
EMMA 是一個用於檢測和報告 JAVA 代碼覆蓋率的開源工具,支持許多種級別的覆蓋率指標:包,類,方法,語句塊(basic block)和行,特別是能測出某一行是否只是被部分覆蓋,如條件語句短路的情況。EMMA能生成 text、xml、html 等形式的報告,以滿足不同的需求,其 html 報告提供逐層細化查詢功能,能夠從 package 開始一步步鏈接到我們所關注的某個方法。EMMA 能和 Makefile 和 Ant 集成,效率很高,便於應用於大型項目。
EMMA 是通過向 .class 文件中插入字節碼的方式來跟蹤記錄被運行代碼信息的。EMMA 支持兩種模式:On the fly 和 Offline 模式。On the fly 模式往加載的類中加入字節碼,相當於用 EMMA 實現的 application class loader 替代原來的 application class loader。On the fly 模式比較方便,缺點也比較明顯,如不能爲被 boot class loader 加載的類生成覆蓋率報告,也不能爲像 J2EE 容器那種自己有獨特 class loader 的類生成覆蓋率報告。這時,必須求助於 Offline 模式,Offline 模式是在類被加載前,加入字節碼。EMMA 也支持兩種運行方式:Command line 和 Ant。
2. Rational PureCoverage
PureCoverage 是一個面向VC, VB 或者Java 開發的測試覆蓋程度檢測工具,可以自動檢測測試完整性和未被測試的範圍,在每一個測試階段生產詳盡的測試覆蓋程度報告。PureCoverage 將在一個對話框中列出所有應用程序模塊,開發人員只需針對每個應用程序構件,就可以簡單地設置基於代碼行或函數的代碼覆蓋級別。不僅可以查看每次程序運行的圖形化覆蓋數據,還可以直接地、實時地控制覆蓋數據的記錄。對於最關心或最重要的功能模塊,可以詳細地收集覆蓋數據;而對於不太重要的模塊,只收集較常規的覆蓋數據,幫助開發人員進行有效地測試。
系統的測試活動,依據測試目標,建立在至少一個測試覆蓋策略基礎上,而覆蓋策略幫助進行測試覆蓋度的有效評估。覆蓋策略有
- 基於需求的測試覆蓋評估,依賴於對已執行/運行的測試用例的核實和分析,所以基於需求的測試覆蓋評測就轉化爲評估測試用例覆蓋率:測試的目標是確保100%的測試用例全部成功地執行。
- 基於代碼的測試覆蓋評估,是對被測試的程序代碼語句、路徑或條件的覆蓋率分析。如果應用基於代碼的覆蓋,則測試策略是根據測試已經執行的源代碼的多少來表示的。這種測試覆蓋策略類型對於安全至上的系統來說非常重要。
如果測試需求已經完全分類,則基於需求的覆蓋策略可能足以生成測試完全程度評測的量化指標。例如,如果已經確定了所有性能測試需求,則可以引用測試結果來得到評測,如已經覈實了90%的性能測試需求。除此之外,如果測試軟件的數量較大,還要考慮數據量。