軟件可靠性測試
發表于:2007-04-22來源:作者:點擊數:
標簽:可靠性測試軟件
一、對軟件可靠性測試的認識 1.有關術語 (1)軟件可靠性在規定條件下,在規定時間內,軟件不引起系統失效的概率。該概率是系 統輸入和系統使用的函數,也是軟件中存在故障的函數,系統輸入將確定是否會遇到存在的故 障。 (2)軟件可靠性估計應用統計技術處理在 系
一、對軟件可靠性
測試的認識
1.有關術語
(1)軟件可靠性 在規定條件下,在規定時間內,軟件不引起系統失效的概率。該概率是系
統輸入和系統使用的函數,也是軟件中存在故障的函數,系統輸入將確定是否會遇到存在的故
障。
(2)軟件可靠性估計 應用統計技術處理在
系統測試和運行期間采集、觀察到的失效數據
,以評估該軟件的可靠性。
(3)軟件可靠性測試 在有使用代表性的環境中,為進行軟件可靠性估計對該軟件進行的
功能測試。
需要說明的是,"使用代表性"指的是在統計意義下該環境能反映出軟件的使用環境特性
。
2.軟件可靠性測試的目的
軟件可靠性測試的主要目的有:
(1)通過在有使用代表性的環境中執行軟件,以證實軟件
需求是否正確實現。
(2)為進行軟件可靠性估計采集準確的數據。估計軟件可靠性一般可分為四個步驟,即數
據采集、模型選擇、模型擬合以及軟件可靠性評估??梢哉J為,數據采集是整個軟件可靠性
估計工作的基礎,數據的準確與否關系到軟件可靠性評估的準確度。
(3)通過軟件可靠性測試找出所有對軟件可靠性影響較大的錯誤。
3.軟件可靠性測試的特點
軟件可靠性測試不同于硬件可靠性測試,這主要是因為二者失效的原因不同。硬件失效
一般是由于元器件的老化引起的,因此硬件可靠性測試強調隨機選取多個相同的產品,統計它
們的正常運行時間。正常運行的平均時間越長,則硬件就越可靠。軟件失效是由設計
缺陷造
成的,軟件的輸入決定是否會遇到軟件內部存在的故障。因此,使用同樣一組輸入反復測試軟
件并記錄其失效數據是沒有意義的。在軟件沒有改動的情況下,這種數據只是首次記錄的不
斷重復,不能用來估計軟件可靠性。軟件可靠性測試強調按實際使用的概率分布隨機選擇輸
入,并強調測試需求的覆蓋面。
軟件可靠性測試也不同于一般的
軟件功能測試。相比之下,軟件可靠性測試更強調測試
輸入與典型使用環境輸入統計特性的一致,強調對功能、輸入、數據域及其相關概率的先期
識別。測試實例的采樣策略也不同,軟件可靠性測試必須按照使用的概率分布隨機地選擇測
試實例,這樣才能得到比較準確的可靠性估計,也有利于找出對軟件可靠性影響較大的故障。
此外,軟件可靠性
測試過程中還要求比較準確地記錄軟件的運行時間,它的輸入覆蓋一般也要
大于普通軟件功能測試的要求。
對一些特殊的軟件,如容錯軟件、實時
嵌入式軟件等,進行軟件可靠性測試時需要有多種
測試環境。這是因為在使用環境下常常很難在軟件中植入錯誤,以進行針對性的測試。
4.軟件可靠性測試的效果
軟件可靠性測試是軟件可靠性保證過程中非常關鍵的一步。經過軟件可靠性測試的軟件
并不能保證該軟件中殘存的錯誤數最小,但可以保證該軟件的可靠性達到較高的要求。從工
程的角度來看,一個軟件的可靠性高不僅意味著該軟件的失效率低,而且意味著一旦該軟件失
效,由此所造成的危害也小。一個大型的工程軟件沒有錯誤是不可能的,至少理論上還不能證
明一個大型的工程軟件能沒有錯誤。因此,保證軟件可靠性的關鍵不是確保軟件沒有錯誤,而
是要確保軟件的關鍵部分沒有錯誤。更確切地說,是要確保軟件中沒有對可靠性影響較大的
錯誤。這正是軟件可靠性測試的目的之一。
軟件可靠性測試的側重點不同于一般的軟件功能測試,其測試實例設計的出發點是尋找
對可靠性影響較大的故障。因此,要達到同樣的可靠性要求,可靠性測試比一般的功能測試更
有效,所花的時間也更少。
另外,軟件可靠性測試的環境是具有使用代表性的環境,這樣,所獲得的測試數據與軟件
的實際運行數據比較接近,可用于軟件可靠性估計。
總之,軟件可靠性測試比一般的功能測試更加經濟和有效,它可以代替一般的功能測試,
而一般的軟件功能測試卻不能代替軟件可靠性測試,而且一般功能測試所得到的測試數據也
不宜用于軟件可靠性估計。
二、軟件可靠性測試中需注意的問題
軟件可靠性測試一般可分為四個階段:制定測試方案,制定
測試計劃,進行測試并記錄測
試結果,編寫測試報告。
制定測試方案時需要特別注意被測功能的識別和失效等級的定義。制定測試計劃時需設
計測試實例,決定測試時要確定輸入順序,并確定程序輸出的預期結果,這時也需注意測試覆
蓋問題。
1.功能識別
軟件可靠性測試的第一步就是進行功能識別,確定使用剖面。功能識別的目標是:識別所
有被測功能以及執行這些功能所需的相關輸入,識別每一個使用需求及其相關輸入的概率分
布。
為達到第一個目標,需要分析軟件功能的所有集合,這些功能之間全部的約束條件,功能
之間的獨立性、相互關系和相互影響,還需分析系統的不同運行模式、失效發生時系統重構
策略等對軟件運行方式有較大影響的因素。
第一個目標也是一般軟件功能測試需要達到的目標,但第二個目標則是軟件可靠性測試
特別強調的。為了得到能夠反映軟件使用的有代表性的概率分布,
測試人員必須和系統工程
師、系統運行分析員和顧客共同合作。需要指出的是,由于可靠性的要求,輸入數據的概率分
布應包括合法數據的概率分布和非法數據的概率分布兩部分。有時為了更好地反映實際使用
狀況,還需給出那些影響程序運行方式的條件,如硬件配置、負荷等的概率分布。
2.定義換效等級
定義失效等級主要是為了解決下面兩個問題:
·對發生概率小但失效后危害嚴重的功能需求的識別。
·對可不查找失效原因、并不做統計的功能需求的識別。
在制定測試計劃時,失效及其等級的定義應由
測試人員、設計人員和用戶共同商定,達成
協議。一般的等級定義如表所示。
@@16115000.GIF;表1 失效等級定義@@
如果存在1級和2級失效可能性,那么就應該進行故障樹分析,標識出所有可能造成嚴重失
效的功能需求和其相關的輸入域、外部條件和發生的可能性。
對引起1級和2級失效的功能需求及其相關的輸入域必須進行嚴格的強化測試。對引起3
級失效的功能可按其發生概率選擇測試實例。第4級失效可不查找原因,可在以后的版本中處
理。
3.可靠性測試覆蓋
可靠性測試必須保證輸入覆蓋和環境覆蓋,這是準確估計軟件可靠性的基礎。
輸入覆蓋包括下面幾個內容:
·輸入域覆蓋,即所有被測輸入值域的發生概率之和必須大于軟件可靠度的要求。
·重要輸入變量值的覆蓋。
·相關輸入變量可能組合的覆蓋,以確保相關輸入變量的相互影響不會導致軟件失效。
·設計輸入空間與實際輸入空間之間區域的覆蓋,即不合法輸入域的覆蓋。
·各種使用功能的覆蓋。
環境覆蓋是指測試時必須覆蓋所有可能影響程序運行方式的條件。
三、軟件可靠性測試的步驟
軟件可靠性測試分為四個階段:
1.制訂測試方案
本階段的目標是識別軟件功能需求,觸發該功能的輸入和對應的數據域,確定相關的概率
分布及需強化測試的功能。
以下是我們推薦的步驟。在一些特定的應用中,有的步驟并不是必須的。
(1)分析功能需求 分析各種功能需求,識別觸發該功能的輸入及相關的數據域(包括合法
與不合法的兩部分)。分析時要注意下述問題:
·該軟件是否存在不同的運行模式?如果存在,那么應列出所有的系統運行模式。
·是否存在影響程序運行方式的外部條件?如果存在,那么有多少?它們的影響程度如何
·各種功能需求之間是相互獨立的還是相關的?如果相關,是密切相關還是部分相關?如
果兩種功能密切相關,那么可將兩種功能合并為一種功能。如果功能之間為部分相關,則需列
出相應輸入變量的合法組合。
(2)定義失效等級 判斷是否存在出現危害度較大的1級和2級失效的可能性。如果這種可
能性存在,則應進行故障樹分析,標識出所有可能造成嚴重失效的功能需求和其相關的輸入域
。
(3)確定概率分布
·確定各種不同運行方式的發生概率,判斷是否需要對不同的運行方式進行分別測試。
如果需要,則應給出各種運行方式下各數據域的概率分布;否則,給出各數據域的概率分布。
·判斷是否需要強化測試某些功能。
(4)整理概率分布的信息 將這些信息編碼送入
數據庫。
2.制訂測試計劃
本階段的目標是:
(1)根據前一階段整理的概率分布信息生成相對應的測試實例集,并計算出每一測試實例
預期的軟件輸出結果。
本階段需要注意:在按概率分布隨機選擇生成測試實例的同時,要保證測試的覆蓋面。
(2)編寫測試計劃,確定測試順序,分配測試資源。由于本階段前一部分的工作需要考慮
大量的信息和數據,因此需要一個軟件支持工具,建立
數據庫,并產生測試實例。另外,有時預
測軟件輸出結果也需要大量的計算,有些復雜的軟件甚至要用到仿真器模擬輸出結果。
總之,具體實施與被測應用軟件的實際功能類型有關。
3.測試
本階段進行
軟件測試。需注意的是被測軟件的測試環境(包括硬件配置和軟件支撐環境
)應和預期的實際使用環境盡可能一致,對某些環境要求比較嚴格的軟件(如嵌入式軟件)則應
完全一致。
測試時按測試計劃和順序對每一個測試實例進行測試,判斷軟件輸出是否符合預期結果
。測試時應記錄測試結果、運行時間和判斷結果。如果軟件失效,那么還應記錄失效現象和
時間,以備以后核對。
4.編寫測試報告
按軟件可靠性估計的要求整理測試記錄,并將結果寫成報告。
筆者認為,軟件可靠性測試的關鍵在于:
·對需求、輸入、數據域的識別及相關概率分布的確定。
·按照概率分布隨機生成測試實例,并確定測試順序。
據國外有關文獻報導,這種
測試方法已成功應用于大量應用軟件的可靠性測試,包括一些
商用軟件和航空、航天電子設備中嵌入式軟件的測試,其效果很好。因此,我們有必要投入一
定的人力、物力,針對我們的實際需要,有目的地對各類應用軟件進行軟件可靠性測試,從實
踐中逐步積累經驗。同時需要軟件
開發方和使用方共同合作,進行軟件可靠性
測試方法的研
究和有關支持工具的
開發,促進我國軟件可靠性水平的提高。
原文轉自:http://www.anti-gravitydesign.com
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97