1.4.5軟件測試及其管理
1、軟件測試方法可分為靜態測試和動態測試。
靜態測試是指被測試程序不在機器上運行,而采用人工檢測和計算機輔助靜態分析的手段對程序進行檢測。靜態測試包括對文檔的靜態測試和對代碼的靜態測試。對文檔的靜態測試主要以檢查單的形式進行,而對代碼的靜態測試一般采用桌前檢查、代碼走查和代碼審查。
動態測試是指在計算機上實際運行程序進行軟件測試,一般采用白盒測試和黑盒測試方法。
白盒測試也稱為結構測試,主要用于軟件單元測試中。它的主要思想是,將程序看作是一個透明的白盒,測試人員完全清楚程序的結構和處理算法,按照程序內部邏輯結構設計測試用例。白盒測試方法主要有控制流測試、數據流測試和程序變異測試等。另外,使用靜態測試的方法也可以實現白盒測試。例如,使用人工檢查代碼的方法來檢查代碼的邏輯問題,也屬于白盒測試的范疇。白盒測試方法中,最常用的技術是邏輯覆蓋,即使用測試數據運行被測程序,考察對程序邏輯的覆蓋程度。
主要的覆蓋標準有語句覆蓋、判定覆蓋、條件覆蓋、條件/判定覆蓋、條件組合覆蓋、修正的條件/判定覆蓋和路徑。
黑盒測試也稱為功能測試,主要用于集成測試、確認測試和系統測試中。黑盒測試將程序看作是一個不透明的黑盒,完全不考慮(或不了解)程序的內部結構和處理算法。
一般包括等價類劃分、邊界值分析、判定表、因果圖、狀態圖、隨機測試、猜錯法和正交試驗法等。
測試分類
4、軟件測試可分為單元測試、集成測試、確認測試、系統測試、配置項測試和回歸測試等類別。
(1)單元測試。單元測試也稱為模塊測試。
(2)集成測試。集成測試的目的是檢查模塊之間,以及模塊和已集成的軟件之間的接口關系。
(3)確認測試。確認測試主要用于驗證軟件的功能、性能和其他特性是否與用戶需求一致。根據用戶的參與程度,通常包括以下類型。
內部確認測試
主要由軟件開發組織內部按照SRS進行測試(SRS:軟件需求說明書)。
(1)Alpha測試,對于通用產品型的軟件開發而言,A|pha測試是指由用戶在開發環境下進行測試,通過A|pha測試以后的產品通常稱為A|pha版;
(2)Beta測試,是指由用戶在實際使用環境下進行測試,通過Beta測試的產品通常稱為Beta版。一般在通過Beta測試后,才能把產品發布或交付給用戶。
(3)驗收測試,是指針對SRS,在交付前以用戶為主進行的測試。其測試對象為完整的、集成的計算機系統。
(4)系統測試。系統測試的對象是完整的、集成的計算機系統,系統測試的目的是在真實系統工作環境下,驗證完整的軟件配置項能否和系統正確連接,并滿足系統/子系統設計文檔和軟件開發合同規定的要求。
(5)配置項測試。配置項測試的對象是軟件配置項,配置項測試的目的是檢驗軟件配置項與SRS的一致性。
(6)回歸測試。回歸測試的目的是測試軟件變更之后,變更部分的正確性和對變更需求的符合性,以及軟件原有的、正確的功能、性能和其他規定的要求的不損害性。回歸測試的對象主要包括以下四個方面。
補充
未通過軟件單元測試的軟件,在變更之后,應對其進行單元測試。
未通過配置項測試的軟件,在變更之后,首先應對變更的軟件單元進行測試,然后再進行相關的集成測試和配置項測試。
未通過系統測試的軟件,在變更之后,首先應對變更的軟件單元進行測試,然后再進行相關的集成測試、配置項測試和系統測試。
因其他原因進行變更之后的軟件單元,也首先應對變更的軟件單元進行測試,然后再進行相關的軟件測試。
軟件調試
1、與傳統的結構化系統相比,OO系統具有三個明顯特征,即封裝性、繼承性與多態性。
2、常用的軟件調試策略可以分為蠻力法、回溯法和原因排除法三類。軟件調試與測試的區別主要體現在以下幾個方面:
(1)測試的目的是找出存在的錯誤,而調試的目的是定位錯誤并修改程序以修正錯誤。
(2)調試是測試之后的活動,測試和調試在目標、方法和思路上都有所不同。
(3)測試從一個已知的條件開始,使用預先定義的過程,有預知的結果;調試從一個未知的條件開始,結束的過程不可預計。
(4)測試過程可以事先設計,進度可以事先確定;調試不能描述過程或持續時間。
軟件測試管理
軟件測試的管理包括過程管理、配置管理和評審工作。
(1)過程管理。過程管理包括測試活動管理和測試資源管理。軟件測試應由相對獨立的人員進行。
(2)配置管理。應按照軟件配置管理的要求,將測試過程中產生的各種工作產品納入配置管理。
(3)評審。測試過程中的評審包括測試就緒評審和測試評審。
測試就緒評審是指在測試執行前對測試計劃和測試說明等進行評審,評審測試計劃的合理性和測試用例的正確性、完整性和覆蓋充分性,以及測試組織、測試環境和設備、工具是否齊全并符合技術要求等;
測試評審是指在測試完成后,評審測試過程和測試結果的有效性,確定是否達到測試目的,主要對測試記錄和測試報告進行評審。