《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種多維度的軟件系統可靠性測試方法研究
一種多維度的軟件系統可靠性測試方法研究
2014年微型機與應用第19期
覃文闖, 鄭麗娜, 胡一鳴, 馬文斌
國家應用軟件產品質量監督檢驗中心,北京 100193
摘要: 傳統的軟件可靠性測試更多偏重于軟件的功能方面。針對于這個不足之處,提出了結合操作剖面和性能測試的一種相對完善、全面的軟件可靠性測試方法。歸納總結軟件內部可靠性設計、外部高可用技術以及容災恢復規范等諸多影響軟件系統可靠性的因素,設計可靠性操作剖面要全面考慮這些因素。此方法是對傳統方法的有用補充。最后通過一個案例簡要介紹了該方法。
Abstract:
Key words :

  摘 要: 傳統的軟件可靠性測試更多偏重于軟件的功能方面。針對于這個不足之處,提出了結合操作剖面和性能測試的一種相對完善、全面的軟件可靠性測試方法。歸納總結軟件內部可靠性設計、外部高可用技術以及容災恢復規范等諸多影響軟件系統可靠性的因素,設計可靠性操作剖面要全面考慮這些因素。此方法是對傳統方法的有用補充。最后通過一個案例簡要介紹了該方法。

  關鍵詞: 可靠性測試;可靠性設計;高可用技術;容災恢復;性能測試

0 引言

  對于軟件可靠性不同的標準有著不同的定義,從國內標準和國外標準兩個方面看:

  IEEE對軟件可靠性做出了如下的定義[1]:

  (1)規定的條件下,在規定的時間內,軟件不引起系統失效的概率;

  (2)在規定的時間周期內,在所述條件下軟件執行所要求功能的能力。

  我國GB/T 16260.1-2006 《軟件工程產品質量第1部分:質量模型》對可靠性的定義[2]:在指定的使用條件下,軟件產品維持規定的性能級別的能力。該標準并解釋軟件不會損耗和老化。軟件可靠性取決于軟件產品的使用方式和所選擇的程序選項,與時間無關,可靠性的定義已經被擴展為“維持所規定的性能級別的能力”,而不是“完成所需功能”。

  上述兩種說法的側重點略有不同,IEEE強調的是概論和能力,偏重功能,而國標強調的是能力,偏向于性能。雖然側重點不一樣,但是可以看出計算機軟件系統是指由系統軟件、支撐軟件、應用軟件以及相關硬件組成的計算機軟件系統。作為一個綜合的整體系統,其可靠性依賴因素不僅僅是其軟件本身,還涉及多方面的因素,包括人員、技術、管理等。可靠性的評價不局限于功能性,應該擴展到性能方面。

  本文立足于分析影響軟件系統特定使用環境下的可靠性的脆弱點,提出從軟件本身和外部使用環境所涉及的高可用技術和管理制度等多方面設計軟件可靠性測試操作剖面,并結合性能測試進行可靠性的驗證測試。

1 軟件可靠性測試操作用例設計的考慮因素

  1.1 軟件內部可靠性影響因素

  通常軟件內部可靠性問題是軟件本身所固有的,與外部因素無關,只與軟件本身的使用選項有關。例如一個有溢出錯誤的軟件,不論軟件的備份機制如何完備,當溢出錯誤的輸入滿足時,軟件輸出必將溢出。在嚴格遵循軟件工程原理的基礎上,為了保證和提高軟件的可靠性,通常在軟件設計過程中采用避錯設計 、 查錯設計 、 改錯設計和容錯設計等軟件可靠性設計方法,所以從內部可靠性影響因素來說,軟件可靠性測試用例應考慮如下設計以提高有效性和正確性。

  (1)避錯設計

  軟件可靠性設計的首要方法體現在預防為主的思想。軟件產品在設計過程中的避錯設計目的是使軟件不發生錯誤或少發生錯誤。原則是控制和減少程序的復雜性。下列方法可以在避錯程序設計中參考,如參數化、公共數據和變量、非授權存取限制、無意指令跳轉處理、程序檢測點設置、尋址模式選用、數據區隔離、安全關鍵信息要求、信息存儲要求、算法選擇要求。

  下列的結構和技術容易引起系統的缺陷,設計測試用例時優先考慮如下操作和結構類型:浮點數、指針、動態內存分配、并行、遞歸、中斷、繼承、別名、默認輸入的處理。

  (2)查錯設計

  軟件查錯設計是通過賦予程序自校驗功能,使程序在運行中能自動發現錯誤的設計方法。包含被動式錯誤檢測和主動錯誤檢測。前者即在程序的若干部位設置檢測點,等待錯誤出現時觸發告警;后者能自動對程序狀態進行檢查。

  對于查錯設計的驗證,測試用例優先考慮如下操作進行設計:按照已知的數據極限值檢查數據邊界的輸入輸出;按照變量間恒定關系檢驗變量的輸入和結果輸出;檢查所有多值數據的有效性;對冗余的輸入數據進行一致性檢驗;循環等待次數控制。

  (3)改錯設計

  改錯設計通過賦予程序自我改正錯誤的能力,減少錯誤危害程度。故障隔離技術是改錯設計的常用方法。改錯設計的關鍵前提是準確地定位軟件錯誤原因和錯誤的代碼,減少軟件錯誤造成的損害,將損害限制在可以接受的范圍內。

  對于改錯設計的驗證,可靠性測試用例可以參考如下方法:用戶的應用程序或數據訪問受控,其他用戶不能輕易修改;應用程序引用或修改操作系統的編碼或操作系統內部的數據應受控;操作系統的錯誤不應引起應用程序和數據的變更;應用程序不能終止操作系統工作; 應用程序不能觸發操作系統修改其他程序或數據。

  (4)容錯設計

  軟件容錯是程序在錯誤已被觸發的情況下,系統仍然具有正常運行能力。常用的容錯設計有時間冗余、結構冗余和信息冗余。

  時間冗余是以消耗時間開銷為代價獲取軟件系統高可靠性的一種手段,如指令重復執行和程序重復執行。對于重復執行不成功時,通常發出中斷,轉入錯誤處理程序,或對程序重復技術計算、重新組合系統、放棄程序處理。

  結構冗余是針對軟件系統不同版本的并行運行的冗余設計。對相同的初始條件、相同的輸入操作,多版本結構的結果應一致,或者對不同的結果實行表決后決定是否繼續執行(多數決定、一致決定)。

  信息冗余是為檢測或糾正信息在運算或傳輸中的錯誤外加的一部分信息。如奇偶校驗碼或者類似MD5的完整性校驗來確保數據完整和正確;信息之間應保持足夠的安全Hamming 距離;安全關鍵信息的決策判斷不得依賴于全“1”或全“0”的輸入。

  1.2 軟件外部可靠性影響因素

  計算機軟件系統是指由操作系統軟件、數據庫軟件、應用軟件等基礎支撐軟件以及相關硬件組成的計算機軟件系統。軟件作為一個系統使用時,系統不僅僅是軟件本身,還包含軟件系統運行的外圍載體,如操作系統、網絡、服務器等。作為一個綜合的整體系統,其可靠性依賴因素不僅僅是其軟件本身,還涉及多方面的因素,包括人員、技術、管理等。針對軟件可靠性的外部影響因素,本文從兩個方面進行闡述,一是高可用技術保障,一是軟件系統管理制度保障。軟件外部可靠性測試用例設計可以結合上述兩方面的具體情況進行設計。

  (1)高可用技術

  常用高可用技術主要有如下幾種分類,不同的高可用技術對系統可靠性的貢獻是不一樣的。

  ① 高可用技術。高可用是系統高可靠的基礎,主要有如下幾種實現方式:冗余技術、集群技術、遠程集群技術、多路技術和虛擬機技術。

  ② 數據備份技術。數據備份是系統高可靠的必要條件。數據備份從策略上來說有3種:全備份、增量備份和差異備份。基本上都是基于如下技術實現:Host-Based備份、LAN-Based備份、LAN-Free備份和Server-Less備份。

  數據復制技術是確保數據備份的前提。主要的備份技術有如下幾種:基于復制軟件復制、基于存儲陣列復制、基于服務器復制、基于SAN復制和Server-Less備份。

  持續數據保護技術通過捕獲或跟蹤數據的變化,并將變化異地存儲在生產數據之外,保證數據可以恢復到任意時間點。主要有如下幾種類型:基于應用的持續數據保護、基于文件的持續數據保護和基于數據塊的持續數據保護。

  (2)系統服務保證類因素

  對于應用級的保護,為保護系統連續正常的運行,避免系統受到未授權的修改、破壞而導致系統不可用,參考國標GB/T 22239-2008中的相關部分內容,可靠性測試中系統服務保證類的測試用例可以參考表1所列幾個方面。

001.jpg

  (3)系統災難恢復管理體系

  對于更高一級的系統級保護,可以參考GB/T 20988—2007《信息安全技術信息系統災難恢復規范》。做為系統級的可靠性保證,容災系統的建設必不可少。對于不同的容災級別要求,該規范作出了明確的指導。而評估一個容災系統的建設通常可以從表2所示7個方面進行評價。可靠性測試用例設計可以借鑒參考表2。

002.jpg

2 傳統軟件可靠性測試方法

  軟件可靠性測試方法主要有兩種: 基于運行剖面的可靠性測試和基于使用模型的統計測試。前者是AT&T貝爾實驗室的Musa J D在1993年提出的[3],后者是由Mills H D[4]和whittaker J A[5]提出。這兩種方法構造的測試模型從不同的角度來模擬軟件真實的運行環境。

  這兩種方法所用的術語雖有微小的差別,但它們的基本思想都是基于統計學的基本原理,即根據軟件實際使用情況的統計規律的描述對軟件進行隨機測試。統計測試進行的前提條件就是生成如實反映系統使用情況的使用模型。以往使用模型的建立主要是通過預測和估計得出,不能如實地反映系統的真實情況。

  傳統的軟件可靠性測試方法借鑒了硬件的可靠性測試方法,更多是偏重功能實現的角度去測試。而軟件不同于硬件,軟件的可靠性測試除了依賴上述傳統的可靠性測試方法外,應該結合軟件的性能測試進行可靠性測試,這樣的可靠性測試結果更為全面,更具參考性。

3 結合性能測試驗證軟件可靠性

  本文提出了一種可靠性的測試建議作為傳統可靠性測試的補充,即建議在系統性能負載較重的情況下結合傳統的可靠性測試方法進行可靠性測試。

  3.1 測試方法介紹

  同樣以傳統的基于操作剖面可靠性測試為例介紹測試方法:

  (1)構造測試操作剖面。操作剖面的構造要素來自于第1節本文作者從軟件內部和軟件外部兩個方面總結的可靠性影響因素。綜合上述的梳理分析,計算機軟件系統作為一個整體,其可靠性測試剖面應參考內部和外部兩方面的影響因素,涉及到技術、人員和管理多個方面。

  (2)模擬軟件系統真實使用場景下的性能負載,此性能負載作為執行操作剖面的背景數據。

  (3)執行測試剖面操作,結合性能測試評價軟件系統的可靠性。

  3.2 案例介紹


003.jpg

  如圖1所示,在本案例中依次對軟件系統執行了包括“數據RAC故障”、“接入進程失效”、“路由進程失效”、“接入節點失效”、“路由節點故障”、“交易服務器故障”、“額度服務器故障”和“主限號服務器故障”8個可靠性測試操作剖面。結合性能測試的10 000用戶在線測試,可以清晰看出相關測試剖面對軟件可靠性的影響大小。

4 結論

  本文從軟件的內部可靠性設計,結合軟件系統外圍運行載體的高可用技術和容災恢復管理要素多方面,從技術、人員和管理方面提出可靠性測試用例的考慮因素。分析了傳統軟件可靠性測試方法來源硬件可靠性測試模式的局限性。結合實際情況,對傳統測試方法進行補充建議,提出了結合性能測試和多維度測試剖面進行可靠性測試,并舉例簡要闡述了方法和優點。

參考文獻

  [1] 黃錫滋.軟件可靠性、安全性與質量保證[M].北京:電子工業出版社,2002.

  [2] GB-T 16260.1-2006. 軟件工程 產品質量 第1部分:質量模型[S].

  [3] Musa J D.Operational profiles in software—reliability engineering [J].IEEE Software,1993,10(2):14-32.

  [4] Mills H D,Dyer M, Linger R C. Cleanroom software engineering [J].IEEE Software,1987,4(2):19-24.

  [5] Whittaker J A, Poore J H.Statistical testing for clcanroom software engineering [J]. IEEE, 1992(11):31-39.


此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 污视在线看 | 国产高清在线丝袜精品一区 | 中文字幕免费在线观看 | 天天在线欧美精品免费看 | 欧美一级日韩一级 | 手机看片亚洲 | 在线亚洲小视频 | 免费特级黄毛片在线成人观看 | 人人添人人澡人人澡人人人人 | 黄片毛片免费 | 欧美日韩一级视频 | 国产精品天堂avav在线 | 免费观看无遮挡www的小视频 | 性欧美极品 | 狠狠操夜夜爱 | 人人爱国产| 日韩精品免费一区二区三区 | 亚洲黄色一级 | 国产偷国产偷高清视频 | 香蕉视频国产精品人 | 国产欧美国产精品第一区 | 天堂网www中文天堂在线 | 国产一级在线播放 | 中文字幕在线免费视频 | 欧美综合区自拍亚洲综合图区 | 521a成v视频网站在线入口 | 欧美成人激情在线 | 成人一级免费视频 | 天天躁夜夜躁狠狠躁2021西西 | 国产v在线在线观看羞羞答答 | 欧美高清亚洲欧美一区h | 日韩a毛片免费全部播放完整 | 亚洲成a人片77788 | 日韩三级伦理片 | 一个人看的视频免费高清在线 | 国产精品国产三级国产无毒 | 午夜精品aaa国产福利 | 一个人看的www视频免费 | 婷婷久久综合九色综合98 | 我要看黄色一级片 | 欧美在线视频一区在线观看 |