對(duì)測試工作目的的認(rèn)識(shí)誤區(qū)
在IT行業(yè),其實(shí)一直對(duì)軟件測試次和,測試這個(gè)工作的目的反肋,一直有著不太準(zhǔn)確的認(rèn)識(shí)。
各種說法都有斯够,比較流行囚玫,被很多IT工作甚至測試從業(yè)者認(rèn)可的有下面兩種:
1.測試是為了發(fā)現(xiàn)Bug
大家一般概念中通常都會(huì)把做測試和找Bug等同起來,也就是說軟件測試的目的是為了發(fā)現(xiàn)產(chǎn)品中的問題读规。
2.測試是為了驗(yàn)證產(chǎn)品滿足需求
也有從測試執(zhí)行的角度來說,測試工作是為了證明軟件產(chǎn)品是符合產(chǎn)品需求定義燃少,是為了驗(yàn)證需求是否實(shí)現(xiàn)的束亏。
那這些說法對(duì)不對(duì)呢? 可以說對(duì)阵具,也可以說不對(duì)
確實(shí)碍遍,測試工作的主要產(chǎn)出就是我們發(fā)現(xiàn)的各種產(chǎn)品bug,而要驗(yàn)證需求則是我們測試工作的主要輸入和評(píng)估標(biāo)準(zhǔn)阳液。
但這些就是我們要進(jìn)行測試工作的目的嗎怕敬?
單純把測試工作的目的從上面幾點(diǎn)來看就狹隘了。
測試是為了找Bug嗎帘皿?
我們做測試工作是為了發(fā)現(xiàn)bug嗎东跪?
bug對(duì)于產(chǎn)品來說,意味著成本鹰溜,bug本身對(duì)產(chǎn)品來說是不會(huì)產(chǎn)生價(jià)值的虽填。被解決掉的Bug才會(huì)帶來產(chǎn)品質(zhì)量的提升,進(jìn)而體現(xiàn)到產(chǎn)品的價(jià)值中去曹动。bug的減少斋日,對(duì)產(chǎn)品才有價(jià)值。
所以墓陈,單純地把發(fā)現(xiàn)更多bug作為測試工作目的是一個(gè)誤區(qū)恶守,這也是很多團(tuán)隊(duì)錯(cuò)誤地把發(fā)現(xiàn)bug的數(shù)量作為測試工作成效依據(jù)的主要原因。如果bug發(fā)現(xiàn)得越多代表測試工作越好贡必,測試人員是不是就不應(yīng)該再早期階段去參與兔港?因?yàn)樵谇捌诰鸵?guī)避掉的問題其實(shí)會(huì)導(dǎo)致到測試階段bug變少,如果測試工作是希望發(fā)現(xiàn)更多bug赊级,是不是就應(yīng)該希望產(chǎn)品提測的時(shí)候包含更多bug呢押框? 這個(gè)導(dǎo)向顯然是不符合產(chǎn)品利益的。
因此把發(fā)現(xiàn)bug作為測試工作的目的是一個(gè)常見的理逊,明顯的對(duì)測試工作的認(rèn)識(shí)誤區(qū)
測試就是為了驗(yàn)證需求嗎橡伞?
第二個(gè)對(duì)測試工作目的的認(rèn)識(shí)誤區(qū)盒揉,就是認(rèn)為測試工作就是為了驗(yàn)證產(chǎn)品的需求。這其實(shí)是另一個(gè)被廣泛接受的錯(cuò)誤認(rèn)識(shí)兑徘。甚至我們當(dāng)今流傳廣泛的很多軟件工程實(shí)踐刚盈,都是建立在這個(gè)錯(cuò)誤認(rèn)識(shí)之上的。
測試大牛James Bach有篇著名的論文挂脑,探討了Testing跟Checking的區(qū)別藕漱。
也就是測試工作遠(yuǎn)遠(yuǎn)不止是checking。而驗(yàn)證需求崭闲,這樣的checking只是測試工作的一部分肋联。測試要深入產(chǎn)品、發(fā)現(xiàn)潛在的深層問題刁俭,還需要除了checking之外的更多其他能力支撐橄仍,包括探索、試驗(yàn)牍戚、設(shè)問侮繁、推理等等
Testing vs Checking
所以,把驗(yàn)證需求如孝,當(dāng)作測試工作的目的宪哩,是不夠的。像工廠質(zhì)檢那樣依據(jù)嚴(yán)格的規(guī)程來確定產(chǎn)品是否合格第晰,和軟件產(chǎn)品這種偏創(chuàng)造性的行業(yè)也并不匹配锁孟。這也是我們說自動(dòng)化測試更多是為了提升執(zhí)行效率和快速得到已覆蓋場景的驗(yàn)證結(jié)果反饋,但自動(dòng)化測試本身并不能達(dá)到完成產(chǎn)品測試的目的但荤。
測試除了驗(yàn)證需求中明確的功能外罗岖,還需要針對(duì)交付產(chǎn)品進(jìn)行更深度的探索,才更可能充分發(fā)現(xiàn)產(chǎn)品中的質(zhì)量問題腹躁。這也是近年探索式測試被更多提及的主要緣由桑包。
軟件測試工作的真正目的
好,那既然測試工作的目的既不是為了找Bug纺非,也不是為了驗(yàn)證需求哑了,那目的究竟是什么呢?
軟件測試的真正目的:?準(zhǔn)確烧颖、及時(shí)地評(píng)估出被測對(duì)象的質(zhì)量狀態(tài)
這里的核心是評(píng)估質(zhì)量狀態(tài)弱左。質(zhì)量是產(chǎn)品屬性,只能通過產(chǎn)品本身的變更來調(diào)整炕淮,所以測試工作無法提高質(zhì)量拆火,也無法保證質(zhì)量。但通過測試工作,我們可以通過暴露產(chǎn)品中的問題们镜,反映出產(chǎn)品的質(zhì)量狀態(tài)币叹。我們的主要作用是對(duì)當(dāng)前產(chǎn)品的質(zhì)量進(jìn)行評(píng)估。再由產(chǎn)品或項(xiàng)目針對(duì)這個(gè)狀態(tài)來對(duì)質(zhì)量進(jìn)行改進(jìn)模狭。
所以測試工作對(duì)于質(zhì)量的貢獻(xiàn)更多體現(xiàn)在這個(gè)評(píng)估出的質(zhì)量狀態(tài)是否及時(shí)和準(zhǔn)確兩方面颈抚。
準(zhǔn)確評(píng)估
測試無法窮盡,在有限的時(shí)間內(nèi)發(fā)現(xiàn)產(chǎn)品的所有問題也是不可能的嚼鹉。但測試的職責(zé)是需要在有限的時(shí)間內(nèi)贩汉,盡可能多地將影響產(chǎn)品質(zhì)量的問題暴露出來。這里除了數(shù)量外锚赤,我們還要看問題的影響匹舞,綜合這兩點(diǎn),才是更準(zhǔn)確地反映質(zhì)量宴树。
及時(shí)評(píng)估
產(chǎn)品是無法進(jìn)行無限測試的策菜,而且測試工作其實(shí)本身是成本支出。所以通過測試工作得出產(chǎn)品質(zhì)量狀態(tài)的時(shí)效對(duì)于產(chǎn)品的質(zhì)量改進(jìn)和成本控制也尤為關(guān)鍵酒贬。問題發(fā)現(xiàn)得越早,修復(fù)成本就越低翠霍;得出質(zhì)量狀態(tài)評(píng)估的時(shí)間越短锭吨,產(chǎn)品進(jìn)行針對(duì)性改進(jìn)的空間就越大。所以測試工作的目的寒匙,還包括提高測試效率零如,通過自動(dòng)化、測試左移等手段來盡可能及時(shí)地完成產(chǎn)品質(zhì)量評(píng)估锄弱。
所以這才是我們進(jìn)行軟件測試工作的真正目的考蕾,不是為了發(fā)現(xiàn)更多的bug,也不是僅僅是對(duì)需求實(shí)現(xiàn)的檢查会宪,而是通過我們的專業(yè)能力肖卧,在有限的時(shí)間內(nèi),及時(shí)掸鹅、充分地反映出當(dāng)前產(chǎn)品實(shí)際的質(zhì)量狀態(tài)塞帐。