Smoke Test or Build Check

近來看到和聽到幾個關於 Smoke Testing 的說法,也曾幾次被顧問客戶問及 Smoke Testing,感覺大家似乎對 Smoke Testing 的概念都相當模糊。據說軟件測試中的 Smoke Testing 最早源於微軟,而在實踐中,我曾就此詢問過美國微軟的幾個開發人員,他們的說法也莫衷一是。根據我搜集的一些資料,結合微軟的實際測試工作,現將  Smoke Testing 綜合介紹一下。

【誤區】

先說說大家對 Smoke Testing 理解中的問題。查了一下網上有關 Smoke Testing 的資料,發現所有關於這方面的信息不外乎來源於兩個:

翻譯過來的定義——關於 Smoke Testing 的定義能查到不少,內容基本是一致的,但是定義很表觀且陳舊,和當前國際上大軟件企業中的 Smoke Testing 實踐並不十分相符。

以訛傳訛的理解——比如:

  • 完全沿用 Smoke Testing 的原始意義——這是在理解一些外來專用語上常犯的一種錯誤。
  • 想當然地理解爲“用抽菸的功夫就能完成的測試”——這貌似有道理,但卻是最荒謬的,因爲 Smoke Testing 並
    不見得比常規的測試花費更少的時間,而且在正式的軟件測試工作環境裏是沒有人抽菸的。
  • 籠統地把所有粗淺的測試都作爲 Smoke Testing——這顯然是因爲對 Smoke Testing 定義中的“簡單測試”或者
    “初級測試”等等單詞斷章取義的理解。
  • 認爲 Smoke Testing 就是 BVT——這是因爲 Smoke Testing 定義的模糊與過時。

等等。

那麼真正的 Smoke Testing 是什麼意思呢?

【Smoke Testing 釋義】

Smoke Testing 的概念最早源於製造業,用於測試管道。測試時,用鼓風機往管道里灌煙,看管壁外面是否有煙冒出來,以便檢驗管道是否有縫隙。這一測試顯然比較初級,更深層一點的測試至少要進行滲油測試、帶壓測試等等。Smoke Testing 只是一種初級、直觀的測試。

軟件測試中的 Smoke Testing 實際上用的是其引申含義,而且是引申了不止一道的含義,在這裏,Smoke Testing 其實是個俚語——就跟很多其他源於美國軟件行業的名詞一樣。

以前我並不知道 Smoke Testing 有適當的中文翻譯,最早聽到“冒煙測試”這個詞還是在我的顧問客戶那裏。據我的理解,這個翻譯只是字面翻譯,顯然並不能代表 Smoke Testing 的真實含義,換句話說“冒煙測試”只是 Smoke Testing 的字譯而非意譯。

Smoke Testing 在軟件測試中的意義,應該說取的是其原始概念中的目的而非手段。通過 Smoke Testing,在軟件代碼正式編譯並交付測試之前,先儘量消除其“表面的”錯誤,減少後期測試的負擔。因此可以說,Smoke Testing 是預測試

【Smoke Testing 的執行】

按照現有定義的說法,Smoke Testing 的執行似乎是在每日構建(daily build)完成時進行的,從這一點來看似乎說的就是 BVT。因此國內有人更加引申一步理解,把研發後期所做的一些不全面的集成測試也認爲是 Smoke Testing。

實際上 Smoke Testing 的執行是在代碼評審(code review)之後、每日構建(daily build)之前完成的工作——關於這一點,如果大家認真查閱國外同行關於 Smoke Testing 的介紹是不難找到敘述的。

【軟件研發不同階段的 Smoke Testing】

在實際的軟件測試工作中,Smoke Testing 在軟件研發的不同階段有所不同。大體可以分爲三類:

  1. 形成集成測試版本以前——Smoke Testing 是隨着代碼的不斷開發必做的一項工作,目的是驗證各個單元能夠成功執行,並保證測試版本能夠順利集成。
  2. 形成集成測試版本以後——在代碼 check in 到 daily build 之前執行 Smoke Testing,以保證新的或者更改過的代碼不破壞集成版本的完成性和穩定性。
  3. 後期預測試 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 完全獨立的一個概念,這是基於以下幾個方面:

  • Smoke Testing 與 BVT 的執行階段不一樣。
  • Smoke Testing 與 BVT 的內容不一樣。
  • Smoke Testing 與 BVT 結果對後續工作的影響不一樣。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章