設(shè)備軟件可靠性測(cè)試
檢驗(yàn)設(shè)備軟件在各種條件下可實(shí)現(xiàn)持續(xù)運(yùn)行狀態(tài),以及評(píng)估設(shè)備從故障中恢復(fù)正常服務(wù)所需要的時(shí)間和其他影響,就是軟件可靠性測(cè)試主要涉及的課題。
本文引用地址:http://www.ex-cimer.com/article/193815.htm設(shè)備為達(dá)到連續(xù)可運(yùn)行目標(biāo),除了在硬件設(shè)計(jì)中考慮器件可連續(xù)無(wú)故障運(yùn)行外,很重要的方面是軟件在各種條件下可經(jīng)受考驗(yàn),持續(xù)工作。這需要在實(shí)現(xiàn)基本功能前提下,在軟件中設(shè)計(jì)一系列容錯(cuò)性邏輯去保證。
為全面評(píng)估軟件容錯(cuò)性和故障恢復(fù)能力,測(cè)試需要制造或模擬一系列條件,包括內(nèi)部硬件故障條件、外部惡意攻擊條件、偶發(fā)過載條件、軟件資源耗盡條件、周邊環(huán)境故障條件以及長(zhǎng)時(shí)間正常負(fù)荷持續(xù)運(yùn)行模擬。為了在產(chǎn)品開發(fā)的不同階段組織針對(duì)性測(cè)試,這些測(cè)試行為又被明確定義并歸類。
測(cè)試分類
1、協(xié)議健壯性測(cè)試
協(xié)議健壯性測(cè)試是為了找出特定協(xié)議的具體實(shí)現(xiàn)代碼的弱點(diǎn)。是一種以破壞性手段去嘗試運(yùn)行軟件的行為,通過用戶接口的異常輸入,使用異常協(xié)議消息交互引導(dǎo)軟件進(jìn)入未定義或未保護(hù)的狀態(tài)。
對(duì)軟件系統(tǒng)而言,合法輸入組合以外的輸入往往超出正常輸入的組合,軟件運(yùn)行中總會(huì)遇到一些預(yù)期之外的輸入。因此,軟件需要有嚴(yán)格的合法性檢查才能避免進(jìn)入未知狀態(tài)。協(xié)議健壯行測(cè)試的目標(biāo)就是盡可能找出軟件保護(hù)不周的問題。
在軟件測(cè)試的早期階段進(jìn)行的參數(shù)邊界值測(cè)試就屬于健壯性測(cè)試的一部分。比如一個(gè)用戶接口接受1-100的整數(shù)輸入,那么1和100就是合法邊界,大于100和小于1的輸入都是非法輸入。其他非整數(shù)型的輸入也屬于非法值,包括故意破壞檢查輸入條件的代碼的一些組合(如超長(zhǎng)輸入值,空輸入,格式化字符等)。軟件面對(duì)的接口除了最終用戶可見的部分之外,還有大量的軟件組件之間的不可見部分,以及設(shè)備之間的通信協(xié)議接口。
除了單一輸入的簡(jiǎn)單合法性判斷,軟件在組合輸入和特定狀態(tài)下可接受輸入的定義更為復(fù)雜。為確認(rèn)軟件在各種條件下的運(yùn)行正常,測(cè)試需要嘗試盡可能多的組合。復(fù)雜的通信協(xié)議除了定義有邏輯化結(jié)構(gòu)的報(bào)文格式,還有一系列的內(nèi)部狀態(tài),要測(cè)試人員完全手工方式遍歷這些狀態(tài),并且構(gòu)造所有可能的異常組合輸入條件是無(wú)法想象的,因此需要專用的測(cè)試工具和儀器專門檢測(cè)軟件對(duì)各種協(xié)議變異報(bào)文的處理。目前,商用化的測(cè)試工具已經(jīng)很多,比如IxDefend協(xié)議健壯性測(cè)試套件和Mu Dynamics的fuzzing測(cè)試套件是比較強(qiáng)大的。為了達(dá)成在特定狀態(tài)下注入錯(cuò)誤,測(cè)試套件需要先完成一些合法的交互過程,使被測(cè)目標(biāo)達(dá)到預(yù)設(shè)狀態(tài),然后再注入異常。復(fù)雜的協(xié)議需要事先配置很多參數(shù)去達(dá)成這種交互,而變異輸入的變化和組合數(shù)量非常龐大,一個(gè)復(fù)雜協(xié)議經(jīng)常達(dá)到幾十萬(wàn)甚至上百萬(wàn)的測(cè)試用例,盡管有自動(dòng)化測(cè)試工具,這種測(cè)試運(yùn)行也要耗費(fèi)大量的時(shí)間。因此,對(duì)參數(shù)的調(diào)整是測(cè)試需要關(guān)注的一個(gè)重要方面。
從系統(tǒng)測(cè)試的角度,觀測(cè)協(xié)議健壯性的測(cè)試結(jié)果是比較困難的,一般是從系統(tǒng)外部觀察整機(jī)是否存在異常,正在被測(cè)試的協(xié)議功能有沒有停止響應(yīng),正常用戶請(qǐng)求是否得到及時(shí)處理,設(shè)備的性能有沒有下降。最容易被觀測(cè)到現(xiàn)象是系統(tǒng)死鎖或重啟,系統(tǒng)性能變化或主要功能異常也能被及時(shí)發(fā)現(xiàn)。而一些細(xì)微的功能異?;蛸Y源耗費(fèi),很容易被測(cè)試人員忽視,在這里,測(cè)試工具也無(wú)能為力。
以IxDefend測(cè)試TLS-Server舉例。
完成測(cè)試儀器與被測(cè)試設(shè)備的物理連接,并且將端口配置IP地址,開啟TLS-Server服務(wù)。
通過測(cè)試儀器的GUI控制界面裝入TLS Server測(cè)試套件,如圖1所示。
配置TLS Server測(cè)試所需要的參數(shù),包括被測(cè)試設(shè)備IP、TLS服務(wù)端口、超時(shí)時(shí)間等,如圖2所示。
點(diǎn)擊開始按鈕啟動(dòng)測(cè)試運(yùn)行。
測(cè)試運(yùn)行期間,儀器會(huì)發(fā)送事先定義好的各種異常組合,并檢查設(shè)備對(duì)這些報(bào)文的響應(yīng)。一旦被測(cè)試設(shè)備失去任何響應(yīng),就記錄為一次失敗,并持續(xù)嘗試下面的測(cè)試用例。如圖3所示的是一個(gè)真實(shí)的運(yùn)行記錄,設(shè)備在某項(xiàng)測(cè)試運(yùn)行后發(fā)生異常,該項(xiàng)目被標(biāo)記為紅色。測(cè)試人員可以根據(jù)該記錄重現(xiàn)問題,并將設(shè)備異常信息一并提交給開發(fā)定位具體原因。
圖1 IxDefend選擇測(cè)試套件
圖2 IxDefend配置TLS-Server套件運(yùn)行參數(shù)
圖3 IxDefend運(yùn)行結(jié)果統(tǒng)計(jì)
2、硬件故障模擬測(cè)試
通常,判斷軟件行為是否正常的先決條件之一是其是否運(yùn)行在正確的硬件環(huán)境之下,因?yàn)橛布收蠈?duì)軟件產(chǎn)生的影響往往是致命的和不可預(yù)測(cè)的。在實(shí)際情況中,越是造價(jià)昂貴且承擔(dān)重要任務(wù)的硬件系統(tǒng),其硬件的復(fù)雜度越高,故障率也更高。為了提高系統(tǒng)的可靠性,硬件在設(shè)計(jì)上會(huì)使用冗余器件的方式(比如多個(gè)電源、多個(gè)風(fēng)扇、多個(gè)交換網(wǎng)板、多個(gè)主控板),但在很多情況下,硬件替換做不到對(duì)軟件透明,需要依賴軟件檢測(cè)并采取一系列措施。此外,軟件還需要設(shè)計(jì)足夠的容錯(cuò)性去隔離硬件錯(cuò)誤的影響范圍。在非關(guān)鍵器件停止工作之前,軟件需要盡可能保證系統(tǒng)其它功能不受影響。
對(duì)測(cè)試人員而言,了解軟件對(duì)硬件的依賴,通過制造或模擬硬件器件故障檢驗(yàn)軟件行為的合理性,是可靠性測(cè)試的一個(gè)重要環(huán)節(jié)。硬件故障測(cè)試的目標(biāo)就是觀測(cè)和評(píng)估軟件在硬件失效時(shí)的反映,找出預(yù)期與實(shí)際結(jié)果之間的差距。在測(cè)試有備份硬件系統(tǒng)的產(chǎn)品時(shí),測(cè)試人員往往使用硬件拔出槽位,命令重啟等方式驗(yàn)證備份機(jī)制的有效性。然而,這還遠(yuǎn)遠(yuǎn)不夠。設(shè)備在實(shí)際運(yùn)行條件下器件被拔出只是一種維護(hù)行為,很多情況下是在連續(xù)運(yùn)行過程中,器件突然失效。測(cè)試人員需要驗(yàn)證這些情況,以確認(rèn)軟件設(shè)計(jì)的故障檢測(cè)機(jī)制和容錯(cuò)機(jī)制的真實(shí)有效性。
由于硬件系統(tǒng)的具體情況不同,每個(gè)器件的故障形式和直接影響不同,是否有規(guī)避方案需要具體分析。軟件對(duì)硬件可用性的依存度往往很高,因此硬件故障測(cè)試的結(jié)果經(jīng)常具有很大的爭(zhēng)議性。對(duì)測(cè)試結(jié)果的分析和判斷比測(cè)試設(shè)計(jì)和執(zhí)行更為重要。
評(píng)論