試論軟件的可靠性及其保證(四)
日期:2024-12-15 06:35
瀏覽次數:1013
摘要:
測試前要確定測試標準、規范,測試過程中要建立完整的測試文檔,把軟件置于配置控制下,用形式化的步驟去改變它,保證任何錯誤及對錯誤的動作都能及時歸檔。
測試規范包括以下三類文檔:砂塵試驗箱
(1)測試設計規范:詳細描述測試方法,規定該設計及其有關測試所包括的特性。還應規定完成測試所需的測試用例和測試規程,規定特性的通過/失敗判定準則。
(2)測試用例規范:列出用于輸入的具體值及預期輸出結果。規定在使用具體測試用例時對測試規程的各種限制。
(3)測試規程規范:規定對于運行該系統和執行指定的測試用例來實現有關測試所要求的所有步驟。
測試的方法多種多樣:
(1)走查(Walk-through),即手工執行,由不同的程序員(非該模塊設計者)讀代碼,并進行評論。
(2)機器測試,對給定的輸入不會產生不合邏輯的輸出。
(3)程序證明或交替程序表示。
(4)模擬測試,模擬硬件、I/O設備等。
(5)設計審查,關于設計的所有各方面的小組討論會,砂塵試驗箱利用所獲得的信息,找出缺陷及違反標準的地方等。
以上可以交替并行循環執行,在實際測試過程中要使用測試工具提高效率。
除正常的測試之外,還要對軟件進行可靠性測試,確保軟件中沒有對可靠性影響較大的故障。制定測試計劃方案,按實際使用的概率分布隨機選擇輸入,準確記錄運行時間和結果,并對結果進行評價。
沒有錯誤的程序同永動機一樣是不可能達到的。一般常用排錯方法有試探法、追溯法、歸納法、演繹法。還要使用適當的排錯工具,如UNIX提供的sdb和dbx編碼排錯工具,這些排錯工具只有瀏覽功能,沒有修改功能,是實際的找錯工具。
6.容錯設計
提高可靠性的技術一般可以分為兩類,一類是避免故障,砂塵試驗箱在開發過程中,盡可能不讓差錯和缺陷潛入軟件,這類常用的技術有:
算法模型化,把可以保證正確實現需求規格的算法模型化。
模擬模型化,為了保證在確定的資源條件下的預測性能的發揮,使軟件運行時間、內存使用量及控制執行模型化。
可靠性模型,使用可靠性模型,從差錯發生頻度出發,預測可靠性。
正確性證明,使用形式符號及數學歸納法等證明算法的正確性。
軟件危險分析與故障樹分析:從設計或編碼的結構出發,追蹤軟件開發過程中潛入系統缺陷的原因。
分布接口需求規格說明:在設計的各階段使用形式的接口需求規格說明,以便驗證需求的分布接口實現可能性與完備性。
這些技術一般都需要比較深厚的數學理論知識和模型化技術。
另一類就是采用冗余思想的容錯技術。
容錯技術的基本思想是使軟件內潛在的差錯對可靠性的影響縮小控制到*低程度。
軟件的容錯從原理上可分為錯誤分析、破壞程度斷定、砂塵試驗箱錯誤恢復、錯誤處理四個階段。
常用的軟件容錯技術有N-版本技術、恢復塊技術、多備份技術等。
N-版本程序設計是依據相同規范要求獨立設計N個功能相等的程序(即版本)。獨立是指使用不同的算法,不同的設計語言,不同的測試技術,甚至不同的指令系統等。
恢復塊技術是使用自動前向錯誤恢復的故障處理技術。
以上這些技術可參考有關文獻,這里要說的是防錯性程序設計,在程序中進行錯誤檢查。被動的防錯性技術是當到達檢查點時,檢查一個計算機程序的適當點的信息。主動的防錯性技術是周期性地搜查整個程序或數據,或在空閑時間尋找不尋常的條件。采用防錯性程序設計,是建立在程序員相信自己設計的軟件中肯定有錯誤這一基礎上的,有的程序員可能對此不大習慣,砂塵試驗箱因為他可能太相信自己,相信自己的程序只有很少錯誤,甚至沒有錯誤,作為一個項目管理員應該能說服他或者強制他采用這種技術,雖然在設計時要花費一定的時間,但這對提高可靠性很有用。?
測試規范包括以下三類文檔:砂塵試驗箱
(1)測試設計規范:詳細描述測試方法,規定該設計及其有關測試所包括的特性。還應規定完成測試所需的測試用例和測試規程,規定特性的通過/失敗判定準則。
(2)測試用例規范:列出用于輸入的具體值及預期輸出結果。規定在使用具體測試用例時對測試規程的各種限制。
(3)測試規程規范:規定對于運行該系統和執行指定的測試用例來實現有關測試所要求的所有步驟。
測試的方法多種多樣:
(1)走查(Walk-through),即手工執行,由不同的程序員(非該模塊設計者)讀代碼,并進行評論。
(2)機器測試,對給定的輸入不會產生不合邏輯的輸出。
(3)程序證明或交替程序表示。
(4)模擬測試,模擬硬件、I/O設備等。
(5)設計審查,關于設計的所有各方面的小組討論會,砂塵試驗箱利用所獲得的信息,找出缺陷及違反標準的地方等。
以上可以交替并行循環執行,在實際測試過程中要使用測試工具提高效率。
除正常的測試之外,還要對軟件進行可靠性測試,確保軟件中沒有對可靠性影響較大的故障。制定測試計劃方案,按實際使用的概率分布隨機選擇輸入,準確記錄運行時間和結果,并對結果進行評價。
沒有錯誤的程序同永動機一樣是不可能達到的。一般常用排錯方法有試探法、追溯法、歸納法、演繹法。還要使用適當的排錯工具,如UNIX提供的sdb和dbx編碼排錯工具,這些排錯工具只有瀏覽功能,沒有修改功能,是實際的找錯工具。
6.容錯設計
提高可靠性的技術一般可以分為兩類,一類是避免故障,砂塵試驗箱在開發過程中,盡可能不讓差錯和缺陷潛入軟件,這類常用的技術有:
算法模型化,把可以保證正確實現需求規格的算法模型化。
模擬模型化,為了保證在確定的資源條件下的預測性能的發揮,使軟件運行時間、內存使用量及控制執行模型化。
可靠性模型,使用可靠性模型,從差錯發生頻度出發,預測可靠性。
正確性證明,使用形式符號及數學歸納法等證明算法的正確性。
軟件危險分析與故障樹分析:從設計或編碼的結構出發,追蹤軟件開發過程中潛入系統缺陷的原因。
分布接口需求規格說明:在設計的各階段使用形式的接口需求規格說明,以便驗證需求的分布接口實現可能性與完備性。
這些技術一般都需要比較深厚的數學理論知識和模型化技術。
另一類就是采用冗余思想的容錯技術。
容錯技術的基本思想是使軟件內潛在的差錯對可靠性的影響縮小控制到*低程度。
軟件的容錯從原理上可分為錯誤分析、破壞程度斷定、砂塵試驗箱錯誤恢復、錯誤處理四個階段。
常用的軟件容錯技術有N-版本技術、恢復塊技術、多備份技術等。
N-版本程序設計是依據相同規范要求獨立設計N個功能相等的程序(即版本)。獨立是指使用不同的算法,不同的設計語言,不同的測試技術,甚至不同的指令系統等。
恢復塊技術是使用自動前向錯誤恢復的故障處理技術。
以上這些技術可參考有關文獻,這里要說的是防錯性程序設計,在程序中進行錯誤檢查。被動的防錯性技術是當到達檢查點時,檢查一個計算機程序的適當點的信息。主動的防錯性技術是周期性地搜查整個程序或數據,或在空閑時間尋找不尋常的條件。采用防錯性程序設計,是建立在程序員相信自己設計的軟件中肯定有錯誤這一基礎上的,有的程序員可能對此不大習慣,砂塵試驗箱因為他可能太相信自己,相信自己的程序只有很少錯誤,甚至沒有錯誤,作為一個項目管理員應該能說服他或者強制他采用這種技術,雖然在設計時要花費一定的時間,但這對提高可靠性很有用。?