Smoke Testing(冒煙測試)和 BVT(Build Verification Test)的介紹、比較

此篇我引述和比較以下兩篇文章,並提供一些心得。歡迎大家一起指教、討論!

1. 詳細介紹一下 Smoke Testing(冒煙測試):http://www.51testing.com/html/61/89461-213302.html
2. 詳細介紹一下 BVT(Build Verification Test):http://www.51testing.com/html/61/89461-213745.html

此篇作者介紹  Smoke Test 的誤區、釋義及執行,最後提出一個特別的觀點「Smoke Testing 與 BVT 是完全獨立的一個觀念」。雖然這個觀點和最近閱讀有關 Smoke Test 的文章有所出入,但還是有可取之處,我將在以下介紹。

一、Smoke Test 的介紹

Smoke Test 是一種「預測試」,用來在 code 正式編譯&交付測試之前,來消除其「表面的」錯誤,以減少後期測試的負擔。

Smoke Test 在軟體上的執行有分以下階段:

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 中。

二、BVT 的介紹

BVT 只驗證 build 構建的成功與失敗,不深入測試構建好的 build 的功能、性能等等。

BVT 最基礎的任務是進行文件版本的比對。伴隨開發進程,軟件功能越來越固化,BVT 有時會在不影響最基本功能的基礎上加入一些成熟的自動化測試腳本。

(這部分讓我聯想到之前去 COSCUP 2013 裡,Yahoo 的一場關於 Jenkins 的應用。他們的產品也是會在出 Build 前,加入一些自動化測試,跑過這些基礎功能的測試且 Pass 後,才算是 Build 成功。這部分我想也是應用 BVT 的一個例子。)

他提到 BVT 對於後續測試工作(ex. 集成測試)就像是一道門檻,只有通過了 BVT  的 build 才可以進入後面的集成測試過程。

1. BVT 結果成功的 build
表明該 build 構建成功,交付集成測試,但不一定被測試。

2. BVT 結果失敗的 build
表明該 build 構建失敗,不交付集成測試;提交 BVT Bug,並按照 Bug 流程解決此 Bug。

3. 未經 BVT 的 build
不得提交集成測試。

三、Smoke Test v.s. BVT

1. 執行階段
Smoke Test:各個階段都有的測試。
BVT:只在 build 構建完成時進行。

2. 內容
Smoke Test:與 build 的驗證『無』關。驗證 code 可以測試通過的 Bug Fix 才能 check in 到新的 daily build 中,且不會破壞集成版本的完成性和穩定性。
BVT:與 build 的驗證『有』關。可以加入自動測試腳本並執行少量固定的自動化測試。

3. 結果對後續工作的影響
Smoke Test:不影響其他日常測試工作。
BVT:BVT 的結果直接決定新構建的 build 是否交付後續測試。

雖然作者說了那麼多,但我認為 Smoke Test 依然很像 BVT,因為就 Smoke Test – 電路板那個故事(將電路板插上電,看會不會短路造成冒煙,如果會冒煙的話,那後面就不用測試了)來說,驗證這個產品最基本的功能是否有問題,若沒問題才可以繼續往下做,這個性質還是很像 BVT 。

但我也不保證我想的是對的,但此篇帶給我的新觀念是,Smoke Test 不是只存在 Build release 前,還可存在驗證 Bug 的過程。唯有通過 Bug fix,且不造成系統其他功能的破壞,才能放行到 daily build 中。這也是種 Smoke Test。

整體來說,Smoke Test 的定義和執行範圍是比 BVT 來得廣,但目前看其他文章來說,用 Smoke Test 來代表 BVT 似乎也說得通。有其他心得或是發現,我再補充上來。

廣告

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s