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