鑒於之前跟開發提到提測前需要進行冒煙測試,然后幾個開發一臉迷茫的問我:什么叫冒煙測試?所以我准備跟大家從以下幾個方面簡單的分享一下什么是冒煙測試。
一、軟件測試的分類
二、冒煙測試(Smoke Testing)的概念
Smoke Testing 的概念最早源於制造業,用於測試管道。測試時,用鼓風機往管道里灌煙,看管壁外面是否有煙冒出來,以便檢驗管道是否有縫隙。這一測試顯然比較初級,更深層一點的測試至少要進行滲油測試、帶壓測試等等。Smoke Testing 只是一種初級、直觀的測試。
軟件測試中的 Smoke Testing 實際上用的是其引申含義,而且是引申了不止一道的含義,在這里,Smoke Testing 其實是個俚語就跟很多其他源於美國軟件行業的名詞一樣。
Smoke Testing 在軟件測試中的意義,應該說取的是其原始概念中的目的而非手段。通過 Smoke Testing,在軟件代碼正式編譯並交付測試之前,先盡量消除其表面的錯誤,減少后期測試的負擔。因此可以說,Smoke Testing 是預測試。
冒煙測試是指對提交測試的軟件在進行詳細深入的測試之前而進行的預測試,這種預測試的主要目的是暴露導致軟件需重新發布的基本功能失效等嚴重問題。冒煙測試可以由開發人員執行,也可以由測試人員來執行。即,在版本編譯后正式提交測試之前由開發人員執行;或開發發布版本后,測試人員在接受這個版本作為正式版本進一步測試前執行。
微軟提出在審查了變更的代碼后,冒煙測試是確認修復的缺陷及功能變更是否有效的最經濟有效的方法。冒煙測試能手動執行,也可以在版本編譯后自動化執行,它是對基本功能的確認,非深入測試,但要覆蓋到面,即所有的更改點都要進行確認。采用自動化執行是,可以結合每日構件后進行自動化的每日smoking test,如果測試通過,則把更改后的代碼自動合並到主干代碼倉庫中,作為正式提交測試的版本。
三、冒煙測試可以實施的步驟
對於smoking test在軟件開發過程中的應用,下面提出一種可實施的步驟:
1. 根據軟件的變更,包括新需求的實現、bug修復,設計出更改滿足預期的功能級checklist。
2. 准備好測試環境。如:軟件的運行環境是嵌入式產品,如手機,數碼相機,醫療儀器等,需准備好用戶使用的真實運行環境。如果是windows平台運行環境,請准備干凈的操作系統。
3.執行checklist,確認基本功能有效,足以支持更進一步的詳細、全面測試。
四、冒煙測試的優缺點
冒煙測試就是在每日build建立后,對系統的 基本功能進行簡單的測試。
冒煙測試的對象是每一個新編譯的需要正式測試的軟件版本,目的是確認軟件基本功能正常,可以進行后續的正式測試工作。冒煙測試的執行者是版本編譯人員。
SmokeTest優點是節省測試時間,防止build失敗。缺點是覆蓋率還是比較低。
五、冒煙測試(Smoke Testing)與回歸測試(Regression testing)的區別
冒煙測試就是新版本送測后的測試,以決定是否要繼續測試乃至發布。回歸測試就是解決一個問題后的測試,方向是判斷新的代碼是否引入了新問題。冒煙測試一般用於每日構建(Nightly build),構建服務器首先從CVS服務器上,下載最新的源代碼,然后編譯單元測試,運行單元測試通過后,編譯可執行文件,可執行文件若可運行,並能執行最基本的功能,則認為通過了冒煙測試。而回歸測試,是軟件維護階段對軟件修改后進行的測試。兩種測試用在軟件生命的不同周期。
根據對冒煙測試和回歸測試的理解,總結了二者的一些區別,如下:
|
冒煙測試 |
回歸測試 |
使用階段 |
單元測試之后 |
軟件維護階段 |
測試側重點 |
新版本送測后,對基本功能的粗略測試 |
解決一個問題后,判斷是否引入新的問題 |
消耗時間 |
節省時間 |
消耗時間長 |
覆蓋率 |
低 |
高 |
執行人 |
提測前是開發;版本上線前是測試 |
測試 |