詳談分布式測試系統
隨著網絡技術的不斷發展,大量分布式系統被部署在網絡中,常見的如Web應用、Web Service等。分布式系統不同于一般軟件系統,它通常由物理分布的多個子系統組成,這些子系統通過相互間的協作完成計算任務,具有物理分布、并發訪問、時序敏感、平臺異構等特點。此外,分布式系統中的諸多子系統在觸發方式、工作方式等方面往往也不屬于同一類型,比如,通過網絡協議傳遞消息的子系統和利用本地接口進行方法調用的子系統等。 因此,對分布式系統的測試也不同于一般軟件系統的測試,需要采用分布式測試。
一、什么是分布式測試
分布式測試是指通過局域網和Internet,把分布于不同地點、獨立完成特定功能的測試計算機連接起來,以達到測試資源共享、分散操作、集中管理、協同工作、負載均衡、測試過程監控等目的的計算機網絡測試。
二、分布式測試系統的特點
分布式測試系統是傳統網絡化測試系統的進一步發展,具有以下主要特點:
(1)網絡化。網絡化的目的是實現多個測試節點間基本的互連、互通功能,實現資源共享,是分布式測試系統的底層支撐結構。
(2)分布性。分布式測試系統不僅在地域上分布,而且在計算上也應是分布的。這對測試系統提出了一些更高的要求,如測試子系統間協同工作、整體視圖、負載均衡、具有可擴展性和高可用性等。同時,分布式測試系統對用戶具有位置透明性,測試信息“唾手可得”。
(3)開放性。開放性包含四個方面的特征,即可移植性、可互操作性、可伸縮性、易獲得性。分布式測試系統能夠采用各種COTS(Commercial-Off-The-Shelf,商業上現成的產品和技術)軟/硬件模塊,給系統的構造帶來諸多便利。
(4)實時性。分布式測試系統本質上是一個實時系統,任務間協同工作處理各種測試信息都必須是實時的,對過程之間的同步、操作的時限有著嚴格要求。
(5)動態性。測試系統可以動態地運行操作,支持測試過程中的所有的管理和測試活動,能靈活地根據測試實施方案,進行測試過程對象和活動的映射。
(6)處理不確定性。分布式測試環境的初始狀態是確定的、已知的,但隨著系統的運行,各種動態實體在環境中變化,同時對環境產生影響,使得環境也發生某些變化,這種動態變化帶來了不確定性,分布式測試系統必須具有處理這種不確定性的能力。
(7)容錯能力強,可靠性高、安全性好。
三、分布式測試系統關鍵技術
(1)分布式環境
對分布式測試而言,測試過程是一種對流程控制要求很高的活動,因此系統需要適時地獲取全局狀態以正確地指導流程;其次,在測試過程中,系統要能夠方便地監視和操縱測試過程。因此,分布式測試系統適合采用集中式的分布式策略,即,由一臺中心計算機控制若干臺受控計算機的執行,整個測試過程和資源管理由中心來完成,它掌握整個分布式測試環境的狀態,從而發出控制命令。
(2)分布式環境下的節點通信
分布式測試環境中的活動均帶有很強的流程性,某一步操作的失敗會導致整個測試流程的中斷和異常,因此需要一個穩定的通信環境。同時,通信主要是在中心節點和執行節點之間進行,兩種節點的主要工作都集中在測試活動并且在邏輯上中心節點和執行節點相互并發,具有一定的獨立性。因此,分布式測試系統相對于提供服務的分布式系統而言,適合用基于消息通信的方式來實現。
(3)測試任務調度
分布式測試的優點是測試人員可以事先定制任務執行的時間表,如在指定時間、指定設備上執行指定的測試任務。但同時也面臨一個問題,在硬件和軟件資源有限的情況下,如何以最有效的方式完成測試任務?其中關鍵的問題就是測試調度。分布式測試調度是指把組成測試任務的一組測試用例,分配到分布式測試系統的不同執行節點上,并按照一定的測試時序調度執行,以滿足事先制定的測試需求。分布式測試調度方法可分為靜態調度、動態調度和混合調度三類。靜態調度是指假設系統的拓撲結構和性能參數固定不變,設計調度算法時只考慮當前系統狀況,并針對當前狀況盡量優化調度性能。動態調度則是指在測試執行過程中,根據系統的運行狀況(如執行節點加入或退出、執行節點資源使用情況等),動態地決定各個用例的執行節點和相應的執行時間。動態調度比靜態調度更加靈活,但也會帶來更多的調度開銷,有可能影響最終的調度性能。混合調度是靜態調度和動態調度二者的組合方法,一般來說,它根據測試用例和系統的特點,對部分用例采取靜態調度策略,對另一部分用例則采取動態調度策略。這三種方法各有利弊,需要測試人員根據具體測試情況來選擇使用哪種調度方法。
以上對分布式測試系統的特點和部分關鍵技術進行了簡單分析。隨著越來越多的領域活動依賴于分布式應用,分布式測試將受到人們更大的關注,測試系統實現技術也將不斷發展成熟,以便快速高效地發現軟件中存在的功能和性能缺陷。
【編輯推薦】