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