6. 軟件測試安全性分析——保證軟件安全性
軟件測試作為驗證軟件功能性和安全性的重要手段,其采用的測試方法和測試技術也完全關系著測試結果的準確性,關系著后續軟件的變更和測試的有效性。
軟件測試安全性分析既包括事前分析,又包括對測試結果的評價,所以一般從不同角度進行按步驟的測試:
a) 分析測試集中的所有測試用例,測試是否通過測試準則。
b) 測試代碼是否按照要求分析,并達到相應的測試覆蓋率。測試覆蓋是指檢查代碼的每一個狀態和路徑。
c) 對測試結果進行分析,以驗證所有的安全性需求是否得到了滿足。
軟件測試已漸漸占據軟件開發40%以上的時間,由此可見軟件測試的重要性。合理的軟件測試手段的應用對于提高軟件安全性是有很大的促進作用的,關于如何運用軟件測試來驗證軟件安全性是否達到目標,我們將在下文詳細探討。
7. 軟件變更安全性分析——應對可能出現的軟件變更
在執行任何軟件變更之前,應建立軟件變更規程。如果必須進行軟件變更,則因該對已經受控的規格說明、需求、設計、編碼、計劃、規程、系統、環境、用戶文檔的任何變更都進行安全性分析。
軟件變更安全性分析一般根據變更的原因、變更影響、變更可能會導致的結果將這項任務安排為三個階段。
需要注意的是,我們的目的是確保軟件的質量在經過變更后達到了預定的目標,而不是有所倒退。
四、 運用軟件測試提高軟件安全性
據美國一家公司的統計表明,在查找出的軟件錯誤當中,屬于需求分析和軟件設計的錯誤約占64%,屬于程序編寫和其他原因的錯誤占36%,由于一部分錯誤很可能因為復審過程中沒有被發現而轉入下一個階段,導致在錯誤的基礎上產生了更多的錯誤,形成錯誤的“放大效應”。事實上,開發工作中的每一個環節都可能出現問題,那些沒發現或已“放大”的錯誤修復成本都是非常高的。所以,測試這種專門針對軟件錯誤的技術漸漸被人們重視,它已成為保證軟件安全性的一項重要手段?,F今,測試投入也在整個開發投入中占了很大比重。但仍有很多測試人員在面對不同的軟件測試對象、眾多軟件測試方法,對自己手中的項目應該采取什么樣的測試手段,才能達到效果明顯的目的不很明了??偟膩碚f,測試經過有計劃的安排才有意義,開始于模塊層的功能驗證,并跟隨軟件的抽象和整體性最終到了系統驗證的階段。當然,就算對一個不算太大的項目而言,要想實現“完全測試”也是不太可能完成的,所以,對每一個層次的測試而言,要做的工作都是做好測試計劃,了解現階段的測試目標,努力提高我們的軟件安全性。
針對軟件安全性的測試方法就是采用各種方法來驗證或發現系統安全方面的問題。對于軟件需求說明書上既定的有關安全的功能需求,我們要一一進行驗證測試。對于沒有在軟件需求書上標明的可能影響系統運行安全的隱性需求我們也要努力的發現。除了被動發現系統已遭受破壞的隱患和原因,在主動發現方面,我們最基本和最主要的是要采取靜態分析技術和功能測試兩種方式攔截系統開發時存在的漏洞。
靜態分析技術:其基本特征是不執行被測試軟件,而對需求分析說明書、軟件設計說明書、源程序作結構檢查、流圖分析等找出軟件錯誤。
這里,需求和設計追溯和確認是驗證測試的前提,我們可以利用一些自動化工具畫出功能需求的相關關系圖,以及一些系統結構的UML圖,能夠使測試人員與開發人員保持一致的設計思路。
原文轉自:http://www.anti-gravitydesign.com