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