簡介
冒煙測試(smoketest)在測試中發現問題,找到了一個Bug,然後開發人員會來修復這個Bug。這時想知道這次修復是否真的解決了程式的Bug,或者是否會對其它模組造成影響,就需要針對此問題進行專門測試,這個過程就被稱為SmokeTest。在很多情況下,做SmokeTest是開發人員在試圖解決一個問題的時候,造成了其它功能模組一系列的連鎖反應,原因可能是只集中考慮了一開始的那個問題,而忽略其它的問題,這就可能引起了新的Bug。SmokeTest優點是節省測試時間,防止build失敗。缺點是復蓋率比較低。
冒煙測試是自由測試中的一種。
介紹
冒煙測試的對象是每一個新編譯的需要正式測試的軟體版本,目的是確認軟體基本功能正常,可以進行後續的正式測試工作。冒煙測試的執行者是版本編譯人員。
冒煙測試一般用於每日構建(Nightly build),構建伺服器首先從CVS伺服器上,下載最新的原始碼,然後編譯單元測試,運行單元測試通過後,編譯執行檔,執行檔若可運行,並能執 行最基本的功能,則認為通過了冒煙測試,這時,構建伺服器會把程式打包成安裝檔案,然後上傳到內部網站,第二天一早,測試人員來了以後,會收到構建伺服器發來的郵件提示昨晚是否構建成功。若構建成功,則測試人員進行相關的功能測試。
現狀
新版本的基本功能確認的測試,有的公司稱為版本健康檢查(Build Sanity Check)。
對於編譯的本地化軟體新版本,除了進行上面提到的各種檢查,還要檢查是否在新的本地化版本中正確包含了全部應該本地化的檔案。可以採用檔案和目錄結構比較工具,首先比較源語言版本和本地化版本的檔案和目錄中的檔案數目、檔案名稱稱和檔案日期等,這個過程稱為版本鏡像檢查(Build Image Check);其次,分別安裝源語言版本和本地化版本,比較安裝後的檔案和目錄結構中的檔案數目、檔案名稱稱和檔案日期等,這個過程稱為版本安裝檢查(Build Installing Check)。
準則
與開發人員協同工作
由於冒煙測試特別關注更改過的代碼,因此必須與編寫代碼的開發人員協同工作。必須了解以下內容:
1、代碼中進行了什麼更改。若要理解該更改,必須理解使用的技術;開發人員可以提供相關說明。
2、更改對功能有何影響。
3、更改對各組件的依存關係有何影響。
在進行冒煙測試前檢查代碼
在運行冒煙測試前,進行側重於代碼中的所有更改的代碼檢查。代碼檢查是驗證代碼質量並確保代碼無缺陷和錯誤的最有效、最經濟的方法。冒煙測試確保通過代碼檢查或風險評估標識的主要的關鍵區域或薄弱區域已通過驗證,因為如果失敗,測試就無法繼續。
在乾淨的調試版本中安裝私有二進制檔案
由於冒煙測試必須側重於僅對更新後的二進制檔案中的功能更改進行驗證,所以必須通過使用被測試檔案的調試二進制檔案來使測試在乾淨的測試環境中運行。
注意:在冒煙測試中,使用不匹配的二進制檔案進行測試是一個常見錯誤。為了避免此錯誤,當兩個或多個更新後的二進制檔案之間存在依賴項時,請在測試版本中包括所有更新後的二進制檔案。否則,測試的結果可能無效。
創建每日構建 (Daily Build)
每日構建要求團隊成員協同工作,並鼓勵開發人員彼此保持同步。如果新版本的疊代被延遲,則該延遲很容易導致具有多個依賴項的產品不同步。遵循每日構建和冒煙測試的過程,任何更改過的或新的二進制檔案都可確保實現高質量。
注意:將高質量的每日構建作為團隊最重要的任務。如果由於簽入代碼未進行冒煙測試而導致版本中斷,則需要開發人員和測試人員停止所有其他工作,直到問題被解決為止。對導致中斷版本的人員的處罰不應該很重,但這個處罰一定要能強調這樣一個道理:正確日構建是團隊最重要的任務。
不需要執行窮舉測試。冒煙測試的目的不是確保二進制檔案100%沒有錯誤。這樣需要花費太多的時間。執行冒煙測試是為了在高級別驗證版本。要確保二進制檔案中的更改不會破壞常規版本的穩定性,也不會導致功能中出現嚴重錯誤。
Web測試和負載測試
生成Web測試和負載測試時,在運行任何時間長、工作量大的測試之前運行冒煙測試是一種很好的做法。在Web測試和負載測試中,冒煙測試時間短,工作量也小。使用冒煙測試是為了在運行性能測試或壓力測試之前,確保一切都已正確配置並可按預期運行。