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