耿宏超
(曲阜師范大學 計算機科學學院,山東 日照 276826)
1.1 軟件測試概念
軟件測試的概念是,在規定條件下對程序進行操作,以發現程序錯誤,衡量軟件質量,并對其是否能滿足設計要求進行評估的過程。軟件測試對軟件正確性、完整性、安全性進行檢測和糾錯,使用人工手動檢測或自動檢測方法對某段程序進行運行和測試。
1.2 軟件測試活動的五個過程
(1)標志測試條件和測試優先級。測試條件是對被測環境的具體描述,可以采用表格、語言、圖標等方式進行描述。(2)設計測試用例。測試用例的設計包括測試過程中能夠用到的輸入值、期望值,以及運行過程中涉及的相關信息。(3)開發測試用例。開發是設計方案的具體實施,包括測試腳本、測試輸入、測試數據及期望輸出。(4)執行測試用例。手動測試:將事先設計開發好的數據輸入,并觀察結果、記錄問題。自動測試:啟動測試工具,選擇測試用例,獲取測試結果。(5)將測試結果與預期輸出進行比較。對每個測試用例的輸出和預期值進行比較分析,判斷軟件程序運行是否符合要求。
2.1 BVT(Build Verification Test)。BVT 是在檢入代碼并編譯生成版本之后進行的測試類型,主要用于檢測新版本功能是否完整、特性是否正確。
2.2 Scenario Tests(基于用戶實際應用場景的測試)。在進行BVT 功能測試的同時輔助模仿用戶操作的真實環境,提供完整的用戶操作流程。
2.3 Smoke Test。當發現一個程序錯誤并由開發人員進行修改之后,需要重新測試問題是否解決,這種專門測試某個修改過的錯誤的測試就是Smoke Test。
2.4 Application Compatibility Test(兼容性測試)。軟件設計不僅要能在測試機上使用,還要能在不同平臺和系統中使用,兼容性測試完成才能確保新軟件能在不同環境下正常運行。
2.5 除了上述四種主要測試類型,還有Functional Test(功能測試)、Security Test (安全性測試)、Stress Test (壓力測試)、Performance Test(性能測試)、Regression Test(回歸測試)、Setup/Upgrade Test(安裝升級測試)等類型測試,此處不做贅述。
軟件測試方法多種多樣,根據是否需要執行被測軟件分為靜態測試和動態測試; 根據測試針對角度不同分為白盒測試和黑盒測試。下面詳細介紹這幾種測試方法。
3.1 靜態測試和動態測試
3.1.1 靜態測試。靜態測試只檢查程序代碼、界面或文檔中可能存在的Bug,不運行被檢測軟件。它包括代碼測試、界面測試、 文檔測試三部分。代碼測試只檢測代碼邏輯是否符合標準;界面測試主要測試軟件界面與用戶需求界面是否一致;文檔測試根據用戶要求檢測用戶手冊、需求說明文檔。
3.1.2 動態測試。與靜態測試相對,動態測試是通過運行軟件來檢測軟件的功能、結果是否正確,應用范圍及頻率遠高于靜態測試。動態測試在測試軟件過程中分為幾個階段: 單元測試:測試軟件中的基本組成單元,檢測軟件最基礎的正確性;集成測試: 首先進行組裝測試,對單元相互聯系模塊接口進行檢測,然后確認檢測,對組裝測試結果進行進一步檢測和確認;系統測試: 對集成測試完成之后的軟件進行軟件系統正確性和功能性檢測,確保軟件系統運行正常;驗收測試:軟件發布使用之前的最后一道檢測,也可以看做是用戶的試用階段測試;回歸測試:在軟件試用之后,對試用階段的問題進行修改和再檢測。
3.2 白盒測試和黑盒測試
3.2.1 白盒測試
白盒測試是在了解程序內部結構和實現代碼結果的基礎上設計測試用例進行檢測的方法。它針對軟件結構或邏輯驅動進行測試,僅檢測每天程序是否按規定執行,并不對其產生的功能進行檢測。
白盒測試的主要測試方法有邏輯驅動測試和基本路經測試兩種。其中邏輯驅動測試以程序內部邏輯結構為基礎,針對覆蓋率進行測試,包括語句覆蓋、分支覆蓋、條件覆蓋、路徑覆蓋四部分。基本路經測試是根據程序運行流程圖設計測試用例進行測試的方法,它的測試步驟包括畫控制流程圖、計算程序圈復雜度、導出測試用例、準備測試用例,期間涉及的測試工具主要是圖形矩陣。
白盒測試雖然增大了檢測代碼覆蓋率、發現代碼中隱藏問題、提高了代碼的正確性,但是它仍具有很多缺陷,測試路徑復雜、不能檢測軟件設計的正確性、增大了系統開銷等。
3.2.2 黑盒測試
黑盒測試將軟件系統看做一個封閉的空間,利用測試用例輸入和輸出檢測軟件功能是否正確。黑盒檢測的目的是檢測結果正確性、需求是否滿足、邊界條件、性能穩定性、壓力承受力、錯誤恢復、安全性、兼容性。相比于白盒測試,黑盒測試具有簡單易行、不涉及內部結構、關注用戶角度、測試方便等優點,但是同時它的代碼覆蓋率低、 自動化測試復用性低等缺點也限制了它的檢測全面性。
軟件測試在軟件設計開發過程中占有很大的比重,任何軟件的成功推行都必須有完整的測試體系來確保軟件的運行正確性和功能完整性,是軟件系統的強有力的保障。
[1]陳汶斌.軟件測試技術基礎[M].北京:清華大學出版社,2008.