近來看到和聽到幾個關於 Smoke Testing 的說法,也曾幾回被顧問客戶問及 Smoke Testing,感受你們彷佛對 Smoke Testing 的概念都至關模糊。聽說軟件測試中的 Smoke Testing 最先源於微軟,而在實踐中,我曾就此詢問過美國微軟的幾個開發人員,他們的說法也莫衷一是。根據我搜集的一些資料,結合微軟的實際測試工做,現將 Smoke Testing 綜合介紹一下。html
【誤區】測試
先說說你們對 Smoke Testing 理解中的問題。查了一下網上有關 Smoke Testing 的資料,發現全部關於這方面的信息不外乎來源於兩個:ui
那麼真正的 Smoke Testing 是什麼意思呢?spa
【Smoke Testing 釋義】翻譯
Smoke Testing 的概念最先源於製造業,用於測試管道。測試時,用鼓風機往管道里灌煙,看管壁外面是否有煙冒出來,以便檢驗管道是否有縫隙。這一測試顯然比較初級,更深層一點的測試至少要進行滲油測試、帶壓測試等等。Smoke Testing 只是一種初級、直觀的測試。code
軟件測試中的 Smoke Testing 實際上用的是其引伸含義,並且是引伸了不止一道的含義,在這裏,Smoke Testing 實際上是個俚語就跟不少其餘源於美國軟件行業的名詞同樣。htm
之前我並不知道 Smoke Testing 有適當的中文翻譯,最先聽到冒煙測試這個詞仍是在個人顧問客戶那裏。據個人理解,這個翻譯只是字面翻譯,顯然並不能表明 Smoke Testing 的真實含義,換句話說冒煙測試只是 Smoke Testing 的字譯而非意譯。blog
Smoke Testing 在軟件測試中的意義,應該說取的是其原始概念中的目的而非手段。經過 Smoke Testing,在軟件代碼正式編譯並交付測試以前,先儘可能消除其表面的錯誤,減小後期測試的負擔。所以能夠說,Smoke Testing 是預測試。開發
【Smoke Testing 的執行】get
按照現有定義的說法,Smoke Testing 的執行彷佛是在每日構建(daily build)完成時進行的,從這一點來看彷佛說的就是 BVT。所以國內有人更加引伸一步理解,把研發後期所作的一些不全面的集成測試也認爲是 Smoke Testing。
實際上 Smoke Testing 的執行是在代碼評審(code review)以後、每日構建(daily build)以前完成的工做關於這一點,若是你們認真查閱國外同行關於 Smoke Testing 的介紹是不難找到敘述的。
【軟件研發不一樣階段的 Smoke Testing】
在實際的軟件測試工做中,Smoke Testing 在軟件研發的不一樣階段有所不一樣。大致能夠分爲三類:
造成集成測試版本之前Smoke Testing 是隨着代碼的不斷開發必作的一項工做,目的是驗證各個單元可以成功執行,並保證測試版本可以順利集成。
造成集成測試版本之後在代碼 check in 到 daily build 以前執行 Smoke Testing,以保證新的或者更改過的代碼不破壞集成版本的完成性和穩定性。
後期預測試 Bug 的修正後期 daily build 相對穩定時,針對每一個 Bug 所作的 Bug Fix 都要先在乾淨的 build 中進行 Smoke Testing,測試經過的 Bug Fix 才能 check in 到新的 daily build 中。
【Smoke Testing 與 BVT】
從 Smoke Testing 的定義上看,BVT 彷佛能夠看做是 Smoke Testing,但在實際當中 BVT 是與 Smoke Testing 徹底獨立的一個概念,這是基於如下幾個方面:
關於 BVT,我將另具文介紹。