一、對軟件可靠性測試的認識
1.有關術語
(1)軟件可靠性 在規定條件下,在規定時間內,軟件不引起系統失效的概率。該概率是系統輸入和系統使用的函數,也是軟件中存在故障的函數,系統輸入將確定是否會遇到存在的故障。
(2)軟件可靠性估計 應用統計技術處理在系統測試和運行期間采集、觀察到的失效數據,以評估該軟件的可靠性。
(3)軟件可靠性測試 在有使用代表性的環境中,為進行軟件可靠性估計對該軟件進行的功能測試。需要說明的是,"使用代表性"指的是在統計意義下該環境能反映出軟件的使用環境特性。
2.軟件可靠性測試的目的
軟件可靠性測試的主要目的有:
(1)通過在有使用代表性的環境中執行軟件,以證實軟件需求是否正確實現。
(2)為進行軟件可靠性估計采集準確的數據。估計軟件可靠性一般可分為四個步驟,即數據采集、模型選擇、模型擬合以及軟件可靠性評估??梢哉J為,數據采集是整個軟件可靠性估計工作的基礎,數據的準確與否關系到軟件可靠性評估的準確度。
(3)通過軟件可靠性測試找出所有對軟件可靠性影響較大的錯誤。
3.軟件可靠性測試的特點
軟件可靠性測試不同于硬件可靠性測試,這主要是因為二者失效的原因不同。硬件失效一般是由于元器件的老化引起的,因此硬件可靠性測試強調隨機選取多個相同的產品,統計它們的正常運行時間。正常運行的平均時間越長,則硬件就越可靠。軟件失效是由設計缺陷造成的,軟件的輸入決定是否會遇到軟件內部存在的故障。因此,使用同樣一組輸入反復測試軟件并記錄其失效數據是沒有意義的。在軟件沒有改動的情況下,這種數據只是首次記錄的不斷重復,不能用來估計軟件可靠性。軟件可靠性測試強調按實際使用的概率分布隨機選擇輸入,并強調測試需求的覆蓋面。軟件可靠性測試也不同于一般的軟件功能測試。相比之下,軟件可靠性測試更強調測試輸入與典型使用環境輸入統計特性的一致,強調對功能、輸入、數據域及其相關概率的先期識別。測試實例的采樣策略也不同,軟件可靠性測試必須按照使用的概率分布隨機地選擇測試實例,這樣才能得到比較準確的可靠性估計,也有利于找出對軟件可靠性影響較大的故障此外,軟件可靠性測試過程中還要求比較準確地記錄軟件的運行時間,它的輸入覆蓋一般也要大于普通軟件功能測試的要求。對一些特殊的軟件,如容錯軟件、實時嵌入式軟件等,進行軟件可靠性測試時需要有多種測試環境。這是因為在使用環境下常常很難在軟件中植入錯誤,以進行針對性的測試。
4.軟件可靠性測試的效果軟件可靠性測試是軟件可靠性保證過程中非常關鍵的一步。
經過軟件可靠性測試的軟件并不能保證該軟件中殘存的錯誤數最小,但可以保證該軟件的可靠性達到較高的要求。從工程的角度來看,一個軟件的可靠性高不僅意味著該軟件的失效率低,而且意味著一旦該軟件失效,由此所造成的危害也小。一個大型的工程軟件沒有錯誤是不可能的,至少理論上還不能證明一個大型的工程軟件能沒有錯誤。因此,保證軟件可靠性的關鍵不是確保軟件沒有錯誤,而是要確保軟件的關鍵部分沒有錯誤。更確切地說,是要確保軟件中沒有對可靠性影響較大的錯誤。這正是軟件可靠性測試的目的之一。軟件可靠性測試的側重點不同于一般的軟件功能測試,其測試實例設計的出發點是尋找對可靠性影響較大的故障。因此,要達到同樣的可靠性要求,可靠性測試比一般的功能測試更有效,所花的時間也更少。另外,軟件可靠性測試的環境是具有使用代表性的環境,這樣,所獲得的測試數據與軟件的實際運行數據比較接近,可用于軟件可靠性估計??傊?軟件可靠性測試比一般的功能測試更加經濟和有效,它可以代替一般的功能測試,而一般的軟件功能測試卻不能代替軟件可靠性測試,而且一般功能測試所得到的測試數據也不宜用于軟件可靠性估計。
二、軟件可靠性測試中需注意的問題
軟件可靠性測試一般可分為四個階段:制定測試方案,制定測試計劃,進行測試并記錄測試結果,編寫測試報告。制定測試方案時需要特別注意被測功能的識別和失效等級的定義。制定測試計劃時需設計測試實例,決定測試時要確定輸入順序,并確定程序輸出的預期結果,這時也需注意測試覆蓋問題。
1.功能識別
原文轉自:http://www.uml.org.cn/Test/200903243.asp