近期在和一些研發(fā)團(tuán)隊溝通時婿屹,發(fā)現(xiàn)許多同學(xué)對于冒煙測試有一些理解的誤區(qū)灭美,CC先生就想來捋一捋這個概念。
誤區(qū)一:開發(fā)不知道冒煙測試是干嘛的昂利。
通常一提到冒煙測試届腐,大家都習(xí)慣性的把關(guān)注點放在后面兩個字:測試 ,開發(fā)的同學(xué)一聽這個活動铁坎,很開心,這不是我們的活兒犁苏,應(yīng)該是測試人員來完成的硬萍。真的是這樣么?
先來看看維基百科上對冒煙測試的解釋:
smoke testing is preliminary testing to reveal simple failures severe enough to, for example, reject a prospective software release. Smoke tests are a subset of [test cases] that cover the most important functionality of a component or system, used to aid assessment if main functions of the software appear to work correctly.[1][2] When used to determine if a computer program should be subjected to further, more fine-grained testing, a smoke test may be called an intake test.[1] Alternately, it is a set of tests run on each new build of a product to verify that the build is testable before the build is released into the hands of the test team.[5] In the DevOps paradigm, use of a BVT step is one hallmark of the continuous integration maturity stage.
冒煙測試這個名稱的來歷围详,最初是從電路板測試得來的朴乖。因為當(dāng)電路板做好以后,首先會加電測試助赞,如果板子沒有冒煙再進(jìn)行其它測試买羞,否則就必須重新來過。
而在軟件研發(fā)中雹食,冒煙測試其實是微軟首先提出來的一個概念畜普,和微軟一直提倡的每日build(構(gòu)建版本)有很密切的聯(lián)系。具體說婉徘,冒煙測試就是在每日build(構(gòu)建版本)建立后漠嵌,對系統(tǒng)的基本功能進(jìn)行簡單的測試。這種測試強(qiáng)調(diào)程序的主要功能進(jìn)行的驗證盖呼,而不會對具體功能進(jìn)行更深入的測試儒鹿。
冒煙只是這類測試活動更形象化一些的叫法,直接叫做BVT(Build Verification Testing)其實CC先生個人覺得更為貼切几晤。
誤區(qū)二:冒煙測試為一個測試階段
有些團(tuán)隊在定制流程時會有一個階段叫冒煙測試约炎,但是就算不通過也會繼續(xù)做后面其它部分的測試。就像平時進(jìn)機(jī)場的時候機(jī)場口都會有個小哥哥或者小姐姐拿一個不知名的物體對你掃一次蟹瘾,大多數(shù)情況下旅客們都是面無表情的走過他們身邊圾浅,掃就掃唄,又不少兩斤肉憾朴。
實際上什么打火機(jī)啊狸捕,充電寶啊會在之后的安檢過程才會被一一挑出來。
我們反過頭來看當(dāng)時微軟提出來的這個概念众雷,它的重點其實在于 daily build 灸拍,也就是說冒煙測試是隨著每一次構(gòu)建而走的,它應(yīng)該是一個開關(guān)而不是一個研發(fā)流程中的測試階段砾省。
過鸡岗,你可以繼續(xù)后面的測試。
不過编兄,直接返工等待下一次的構(gòu)建轩性。
這才是冒煙測試應(yīng)有的態(tài)度。
誤區(qū)三:冒煙測試需要把此次需求的主流程都走一遍
一些團(tuán)隊通常為了督促開發(fā)人員提高研發(fā)質(zhì)量而把冒煙通過率作為一個衡量指標(biāo)狠鸳。CC先生認(rèn)為出發(fā)點是極好的揣苏,實現(xiàn)手段上經(jīng)常會有一點點小偏差悯嗓。
冒煙測試主要是測試系統(tǒng)的主流程是否可用,如果這次的需求不涉及到太多主流程上面的更改舒岸,那真的有必要把這些案例都加入到冒煙測試中么绅作?
最后芦圾,冒煙測試的最佳實踐還是最好被自動化蛾派,在CI中每一個Build都自動的去執(zhí)行主流程的測試,確保其是一個基本可用的版本个少。手工測試這事兒吧洪乍,西部世界都第二季完結(jié)了,你們還沒醒悟么夜焦?