測試領域,冒煙測試(smoke test)、可用性測試(sanity test)和回歸測試(regression test)彼此之間很相似,范圍也有重疊,所以比較容易混淆:都是在需求變更或問題修改后對系統全面測試之前的一種預測試,都是為了發現是否在界面和代碼層面引入了問題。
我們可以用一個和河流相關的類比來更好的理解它們之間的差別,在類比之前,我們先了解下這幾個測試的簡單定義:
Smoke Testing:測試新特性有關的所有方面 (廣度) ,但不深入,用以判斷我們是否需要執行進一步的測試。
Sanity Testing:測試新特性的有限正常功能,深入測試。
Regression testing:回歸新特性所有相關功能,避免引入代碼變更存在問題以及引入新問題,深入全面。
如果我們拿一條河流來比喻,比如1000英尺寬,在水里含有雜質(可以比作軟件中的bug),那么這三種類型的測試可以被看作如下:
對於Smoke Testing:為了找到河面所有的雜質,但不包括水面以下的。
對於Sanity Testing:為了找到某個特定范圍內所有的雜質(比如200英尺半徑內),這不包含所有表面的雜質,但包含了那個范圍內水面下直到水底的雜質。
對於Regression Testing:為了這片水域所有的雜質,表面的以及水面以下的 。