設(shè)備軟件可靠性測試
現(xiàn)有的測試手段中,最直接的方式是通過改動硬件線路或干預(yù)數(shù)字信號制造故障。此外,可以通過軟件加入調(diào)試命令,對一些關(guān)鍵器件的狀態(tài)進行修改,設(shè)置為非法的狀態(tài)來模擬故障。
3、壓力測試
任何設(shè)備或系統(tǒng)都是在一定的工作負荷下完成其功能。如果外部加入的工作負擔(dān)超過其最大能力,系統(tǒng)效能會下降甚至是停止工作。這是一種與可用性相背離的特性,卻是任何系統(tǒng)的必然屬性。很多重要系統(tǒng)是通過增加硬件成本,人為降低承諾指標來緩解這一問題,然而事實上都存在一個能力極限,除非輸入子系統(tǒng)進行了硬性限制。
為了提高設(shè)備的性價比,一般軟件系統(tǒng)不會設(shè)定承載能力的硬性約束,因此,設(shè)備都會面對超負荷工作的場景。軟件設(shè)計力爭減少超負荷運行的負面效應(yīng),使系統(tǒng)在合理壓力下能夠正常運作是可靠性的一個重要考量。雖然用戶不會要求設(shè)備能在超負荷的工作環(huán)境下連續(xù)穩(wěn)定運行,但在真實網(wǎng)絡(luò)中,負荷波動是無法避免的,短時間的超載運行不應(yīng)該導(dǎo)致災(zāi)難性的后果。
事實上,壓力除了令系統(tǒng)的計算能力經(jīng)受考驗,也會使系統(tǒng)內(nèi)的很多資源被軟件進程占用;如果壓力消除以后,這些資源不能被充分釋放和回收,經(jīng)受過壓力的系統(tǒng)將無法完全恢復(fù)正常的工作能力。
壓力測試就是通過制造設(shè)備的超載負荷,模擬設(shè)備在真實環(huán)境下可能遇到的場景。一臺網(wǎng)絡(luò)設(shè)備會有很多負載指標,驗證各個指標的超載工作能力是一項繁雜的測試工作。除了觀測壓力下設(shè)備的反應(yīng),在負荷恢復(fù)到承諾指標范圍內(nèi)之后,系統(tǒng)完全達到正常工作狀態(tài)的能力和恢復(fù)時間也是用戶關(guān)心的指標。這些高負載的測試一般都要依賴專用的測試儀器來模擬。
一般在設(shè)備規(guī)格會寫明產(chǎn)品支持的IP路由表容量、最大轉(zhuǎn)發(fā)數(shù)據(jù)流量、ARP或MAC地址容量等指標。測試的工作就是把被測試設(shè)備與測試儀器連接,通過儀器構(gòu)造與規(guī)格指標相同或略低的一項負載,再制造一個10%左右的異常波動沖擊被測設(shè)備,并觀察被測設(shè)備在加載超載負荷前、負荷中和恢復(fù)到初始設(shè)定負荷之后的實際表現(xiàn)。
不受壓力影響和能快速恢復(fù)的設(shè)備是可能被制造出來的,但是代價是必然提高硬件和軟件成本。因此一個合理的可接受的壓力反應(yīng)和恢復(fù)時間,往往需要根據(jù)用戶的使用場景和可承受成本綜合考慮。
4、內(nèi)存耗盡測試
與硬件發(fā)生故障類似,軟件所要面對的另一種是情況是資源枯竭。因為軟件要流暢地運行需要依賴很多外部資源,其中包括:內(nèi)存、定時器、隊列、文件句柄、Socket等等。這些資源中最關(guān)鍵的就是內(nèi)存,因為很多資源不足可以等待,內(nèi)存短缺會導(dǎo)致立即的操作失敗。一個復(fù)雜的軟件系統(tǒng)內(nèi)存資源都是動態(tài)申請和釋放的, 在各個處理進程之間動態(tài)流轉(zhuǎn)。在突發(fā)任務(wù)占用大量內(nèi)存的情況下,其他任務(wù)就可能面臨資源枯竭。一個良好設(shè)計的軟件系統(tǒng)需要設(shè)定內(nèi)存門限,一旦內(nèi)存消耗達到門限會強制一些不重要的任務(wù)退出運行而釋放資源。而且所有申請內(nèi)存的任務(wù)需要自身設(shè)計保護代碼,避免沒有申請成功時誤入歧途。
資源耗盡的情況下軟件系統(tǒng)必然會產(chǎn)生一些功能受限的反應(yīng),只要這種情況能在資源充足后得到恢復(fù)就不構(gòu)成嚴重問題。確認系統(tǒng)在資源不足時沒有異常反映,合理屏蔽了次要功能,同時確保高優(yōu)先級進程得到應(yīng)得的資源就是軟件測試所要做的工作。
測試手段通常是啟動一些重要的功能和構(gòu)造動態(tài)的運行負荷,然后用調(diào)試命令占用內(nèi)存或啟動一些消耗型任務(wù)占用內(nèi)存,以構(gòu)造資源耗盡的條件,觀察被測系統(tǒng)在內(nèi)存枯竭后的反應(yīng),并繼續(xù)進行操作。最后再通過釋放占用的內(nèi)存來恢復(fù)正常條件,觀察系統(tǒng)受影響的功能是否自動恢復(fù)。
內(nèi)存耗盡測試的原理非常簡單,但是因為動態(tài)分配內(nèi)存的指令無處不在,測試覆蓋各種流程分支就要設(shè)定各種組合條件,存在很大執(zhí)行的難度。內(nèi)存耗盡測試可能發(fā)現(xiàn)長期隱藏于軟件中的嚴重問題,徹底解決這些問題,對軟件的可靠性有很重要的意義。
5、拷機測試
由于軟件固有的邏輯復(fù)雜性和系統(tǒng)測試手段的限制,有些問題只有在實際環(huán)境下經(jīng)過足夠長時間運行才會出現(xiàn)??綑C測試就是在實驗室模擬設(shè)備運行的真實工作場景,通過規(guī)定負荷及偶發(fā)性過載條件下連續(xù)運行,觀測被測設(shè)備連續(xù)無故障運行時間,俘獲異常錯誤的測試。
測試所構(gòu)造的工作場景能否還原真實應(yīng)用,是能否提早發(fā)現(xiàn)問題的關(guān)鍵。由于用戶的應(yīng)用場景千差萬別,需要用很多設(shè)備搭建組網(wǎng)來還原,而且必須等候足夠長的時間,這是一種高成本的測試方式,卻又不可替代。測試人員一般會采用頻繁觸發(fā)設(shè)備狀態(tài)變化的手段加速問題出現(xiàn),這對某些問題有效,卻可能隱蔽另外一些問題。
H3C的每個產(chǎn)品都要經(jīng)過嚴格測試,其中必須進行的一項就是長時間的拷機環(huán)境測試。設(shè)備被接入一個運行各種拓撲管理協(xié)議和有大量背景流量的模擬環(huán)境,以驗證設(shè)備在典型應(yīng)用環(huán)境下7*24小時的穩(wěn)定運行。即使產(chǎn)品已經(jīng)在市場正式投入使用,這套拷機環(huán)境還會持續(xù)運行,并且經(jīng)常調(diào)整流量和業(yè)務(wù)規(guī)劃,以期覆蓋更多的用戶應(yīng)用環(huán)境。
6、收斂指標測試
對網(wǎng)絡(luò)設(shè)備而言,保證網(wǎng)絡(luò)通暢是其最重要的功能之一。因此,網(wǎng)絡(luò)設(shè)備除保障自身連續(xù)運行外,還專門設(shè)計了很多從環(huán)境故障中恢復(fù)網(wǎng)絡(luò)連通性的協(xié)議。有些則是針對自身發(fā)生異常時實現(xiàn)冗余硬件切換,流量路徑切換或快速故障恢復(fù)的協(xié)議。針對這些情況,有一個通用的度量指標,即網(wǎng)絡(luò)收斂指標,是通過網(wǎng)絡(luò)中斷服務(wù)(或故障恢復(fù))時間來考察設(shè)備或網(wǎng)絡(luò)提供的可靠性。
任何一種網(wǎng)絡(luò)路由協(xié)議或拓撲管理協(xié)議都是為了在動態(tài)變化的網(wǎng)絡(luò)中提供一個可行的流量路徑而設(shè)計的,所以收斂是一個基本屬性。從注入拓撲變化或故障發(fā)生的時間開始,網(wǎng)絡(luò)服務(wù)和數(shù)據(jù)流量受到影響,在拓撲收斂后路徑切換到備份網(wǎng)絡(luò)上,恢復(fù)網(wǎng)絡(luò)服務(wù)和流量所經(jīng)歷的時間就是收斂時間。為加速收斂而提出的一些附加技術(shù)可以使收斂時間縮短到毫秒級甚至在設(shè)備主控發(fā)生重啟等情況下提供不中斷的轉(zhuǎn)發(fā)服務(wù)。
圖4 IGP路由收斂測試組網(wǎng)圖
IGP收斂的測試實例。
如圖4所示,被測試設(shè)備首先從B和C端口學(xué)習(xí)到大量的IGP路由信息,其中B端口的度量值優(yōu)于C端口。測試儀器用穩(wěn)定的流量由A端口發(fā)送,被測設(shè)備轉(zhuǎn)發(fā)到B端口。測試儀器通過在B端口模擬拓撲變化,撤銷一部分路由信息,受影響的流量開始丟失。被測試設(shè)備在完成路由計算后將這些流量重新路由到C端口上。測試儀器通過計算這個過程丟失的數(shù)據(jù)流量和發(fā)送速率折算收斂過程經(jīng)歷的時間。
評論