來源:北大青鳥總部 2019年10月17日 09:02
最近,看到一篇名為《對(duì)軟件測(cè)試的十大誤解》的文章,個(gè)人認(rèn)為這篇文章對(duì)軟件測(cè)試總結(jié)的很到位想分享給更多真正從事軟件測(cè)試行業(yè)的業(yè)者。但由于多人發(fā)布,找不到文章來源。因此小編聲明,本文解釋權(quán)歸原作者所有哦,不代表北大青鳥觀點(diǎn),要是您認(rèn)為小編侵權(quán),請(qǐng)?zhí)峁┠牡刂罚缓笪揖蛣h除呦。
在IT行業(yè),特別是那些并不真正從事軟件測(cè)試行業(yè)的業(yè)者,對(duì)軟件測(cè)試往往有一些常見的誤解,對(duì)測(cè)試行業(yè)的發(fā)展和健康都有不利的影響。本文總結(jié)了10大常見誤解,希望能起到一些正本清源的作用。
一、測(cè)試工程師的工作是破壞軟件
“測(cè)試工程師的工作就是破壞軟件”是一個(gè)常見的誤解。作為程序員十大金句之首的“在我機(jī)器上是好的”往往來源于這一誤解。測(cè)試人員好像有什么魔力,能夠把正確運(yùn)行的程序在測(cè)試環(huán)境上搞得不能工作。
但是這不是測(cè)試工程師破壞了軟件,測(cè)試工程師并不能在軟件中創(chuàng)造某些bug。他們只是做了些程序員沒有考慮到的某些操作,比如在測(cè)試環(huán)境上,沒有執(zhí)行相關(guān)的依賴操作。程序員在自測(cè)時(shí)很多情況下會(huì)默認(rèn)某些場(chǎng)景,或者是開發(fā)的新功能而沒有考慮到對(duì)原有功能的影響。這也是為什么我們不推薦完全由開發(fā)者本人完成功能的測(cè)試。
真相
軟件bug只會(huì)來源于產(chǎn)生它們的代碼,測(cè)試工程師不實(shí)現(xiàn)代碼,所以他們并不能破壞軟件,他們只是發(fā)現(xiàn)了軟件不工作的觸發(fā)條件并且報(bào)告了出來。
“測(cè)試工程師對(duì)軟件進(jìn)行破壞”往往會(huì)導(dǎo)致團(tuán)隊(duì)開發(fā)和測(cè)試的對(duì)立情緒,甚至將軟件沒有滿足客戶要求和大量因解決問題的額外工作量歸咎于測(cè)試工程師的勞動(dòng)。這是非常不利于團(tuán)隊(duì)和產(chǎn)品成功的。
二、測(cè)試工作不需要什么專業(yè)技能
很多人認(rèn)為軟件測(cè)試是個(gè)簡(jiǎn)單的工作,不需要會(huì)編寫程序,也不需要很深厚的專業(yè)技術(shù)能力。這也是一個(gè)很常見的誤解。誠然,很多優(yōu)秀的測(cè)試工程師都不會(huì)編寫專業(yè)的程序,也不具備軟件開發(fā)領(lǐng)域的一些專業(yè)技能如架構(gòu)、抽象等。但是這并不是說測(cè)試就是一個(gè)簡(jiǎn)單的工作。JamesBach在《測(cè)試與檢查》一文中對(duì)測(cè)試和檢查的區(qū)別進(jìn)行了詳細(xì)的闡述。測(cè)試是一系列創(chuàng)造性活動(dòng)的集合,包括提問、研究、建模、觀察、推理、試驗(yàn)等多方面的技巧。
開發(fā)和測(cè)試是兩個(gè)不同的技術(shù)領(lǐng)域,我們不能以同樣的技術(shù)標(biāo)準(zhǔn)來衡量?jī)煞N不同的工作 。
真相
測(cè)試工作不同于開發(fā)工作,兩者會(huì)有一些技能重疊,但是也存在很大的區(qū)別。開發(fā)工作的重點(diǎn)是高效、高質(zhì)量地實(shí)現(xiàn)功能,而測(cè)試工作的重點(diǎn)是盡可能多地將軟件失效在交付用戶前暴露出來。測(cè)試工程師擅長(zhǎng)開發(fā)技能可以幫助測(cè)試工程師更加深入地理解軟件或幫助自己提供輔助手段來測(cè)試軟件,但是這不能作為測(cè)試工作是否專業(yè)的評(píng)判標(biāo)準(zhǔn)。
三、測(cè)試就是寫測(cè)試用例,然后執(zhí)行
測(cè)試就是把需求轉(zhuǎn)換成測(cè)試用例,然后在軟件中執(zhí)行這些用例。這是一個(gè)在瀑布研發(fā)模式時(shí)代非常廣泛的一個(gè)錯(cuò)誤看法,然而在如今敏捷研發(fā)模式時(shí)代,也換了個(gè)模樣,但是依然存在類似的認(rèn)知。
在瀑布研發(fā)模式下,很多測(cè)試工作被嚴(yán)格地要求有非常完備的測(cè)試設(shè)計(jì)文檔,然后依照這些文檔進(jìn)行覆蓋式地執(zhí)行驗(yàn)證。可能高級(jí)測(cè)試工程師負(fù)責(zé)編寫,然后初級(jí)工程師來執(zhí)行。這更多是工廠式的質(zhì)量管理經(jīng)驗(yàn)在軟件行業(yè)的錯(cuò)誤應(yīng)用。
即使在敏捷研發(fā)模式得到大量應(yīng)用的今天,我們還是可以看到類似認(rèn)知的變種,比如測(cè)試由開發(fā)人員做好單元測(cè)試的充分覆蓋就可以了。這其實(shí)依然是把測(cè)試工作文檔化,只是這個(gè)文檔變成了單元測(cè)試代碼,執(zhí)行變成了計(jì)算機(jī)。本質(zhì)依然是測(cè)試=測(cè)試設(shè)計(jì)+執(zhí)行 。
真相
輸出測(cè)試設(shè)計(jì)文檔,并不是真的那么重要。測(cè)試中,更重要的永遠(yuǎn)是那些創(chuàng)造性的東西。提問、研究、建模、觀察、推理、試驗(yàn)等。文檔是這些活動(dòng)的一個(gè)輸出形式,我們不應(yīng)該把測(cè)試簡(jiǎn)單看作是這些文檔的機(jī)械生成和執(zhí)行 。
四、產(chǎn)品出現(xiàn)問題,說明沒有很好地進(jìn)行測(cè)試
軟件發(fā)布后,如果出現(xiàn)問題,很多人會(huì)首先歸咎于測(cè)試的失職。認(rèn)為測(cè)試沒有做好份內(nèi)的工作。軟件測(cè)試的七大原則中,重要的一條就是窮盡測(cè)試是不可能的,何況測(cè)試并沒有直接編寫產(chǎn)生bug的代碼。所以產(chǎn)品出現(xiàn)bug,是整個(gè)研發(fā)過程中整體流程的作用后果,不能也不應(yīng)該據(jù)此作為評(píng)判測(cè)試工作好壞的標(biāo)準(zhǔn)。
真相
任何軟件都不可能被詳盡地完全測(cè)試。測(cè)試工作和開發(fā)工作、需求分析工作密不可分,產(chǎn)品的總體質(zhì)量是整個(gè)研發(fā)團(tuán)隊(duì)共同作用的結(jié)果。軟件發(fā)布后的bug產(chǎn)生是評(píng)估產(chǎn)品研發(fā)整體質(zhì)量的一個(gè)重要標(biāo)準(zhǔn),但僅以此來評(píng)判測(cè)試工作好壞有失偏頗。
五、通過測(cè)試可以發(fā)現(xiàn)所有的bug
這個(gè)誤解和上一條原因比較類似,都是因?yàn)檎J(rèn)為測(cè)試應(yīng)該保證產(chǎn)品發(fā)布的質(zhì)量并提前發(fā)現(xiàn)所有未知的問題。這是不可能辦到的。產(chǎn)品是否能有效工作和很多因素有關(guān)。不同的測(cè)試環(huán)境、測(cè)試場(chǎng)景,不同用戶操作使用軟件的操作習(xí)慣、使用路徑都有可能引起軟件不同的表現(xiàn)。測(cè)試人員會(huì)盡量站在用戶角度來考慮軟件的使用場(chǎng)景,但是他并不能預(yù)測(cè)所有的用戶行為,也不可能提前預(yù)知所有的運(yùn)行環(huán)境和場(chǎng)景。所以在測(cè)試工作中,限定測(cè)試范圍并告知用戶經(jīng)過驗(yàn)證的場(chǎng)景是相對(duì)嚴(yán)謹(jǐn)?shù)淖龇ā?/span>
真相
測(cè)試人員不可能估計(jì)到所有的可能性,也不可能預(yù)測(cè)到所有的用戶行為。而軟件會(huì)因?yàn)椴煌挠脩粜袨楹筒煌倪\(yùn)行場(chǎng)景產(chǎn)生超出預(yù)期的問題或bug。所以不可能要求測(cè)試人員提前發(fā)現(xiàn)所有的潛在bug。一個(gè)優(yōu)秀的團(tuán)隊(duì),會(huì)盡可能多地考慮到不同的用戶場(chǎng)景,并根據(jù)發(fā)布目標(biāo)調(diào)整覆蓋場(chǎng)景的優(yōu)先級(jí)。簡(jiǎn)單要求所有bug都能提前檢測(cè)是不可能辦到的任務(wù)。
六、自動(dòng)化測(cè)試可以代替測(cè)試
這個(gè)誤解在現(xiàn)如今幾乎已經(jīng)成為信條了。確實(shí),理論上,所有的測(cè)試用例都可以通過技術(shù)手段來實(shí)現(xiàn)并自動(dòng)執(zhí)行,但是正如我們?cè)谇懊嫣徇^的,測(cè)試并不是測(cè)試用例+測(cè)試執(zhí)行的疊加。測(cè)試還包括大量的創(chuàng)造性的活動(dòng)。所以自動(dòng)化測(cè)試代替測(cè)試是個(gè)偽命題(除非有朝一日,人工智能發(fā)展到能夠打敗人類的創(chuàng)造性。那時(shí)可能整個(gè)IT行業(yè)都不需要人力勞動(dòng)了)
除此之外,即使自動(dòng)化測(cè)試能把所有的測(cè)試用例都實(shí)現(xiàn)通過機(jī)器執(zhí)行,也不意味著應(yīng)該這么做。因?yàn)樽詣?dòng)化測(cè)試本身也是一項(xiàng)投資,有大量的投入在其中。很多測(cè)試場(chǎng)景通過自動(dòng)化測(cè)試可以產(chǎn)生很大的價(jià)值,比如大量重復(fù)性的驗(yàn)證。但是也有很多場(chǎng)景,不需要通過自動(dòng)化的投入來實(shí)現(xiàn),比如很多一次性的功能驗(yàn)證,還有依賴人進(jìn)行主觀判斷的功能等。
真相
測(cè)試中的檢查工作,很大一部分可以通過自動(dòng)化測(cè)試代替,但是測(cè)試工作不會(huì)被自動(dòng)化測(cè)試代替。即使可以實(shí)現(xiàn)自動(dòng)化測(cè)試的場(chǎng)景,我們也要通過ROI的衡量(如測(cè)試金字塔)來確定實(shí)施自動(dòng)化測(cè)試的必要性 。
七、測(cè)試應(yīng)放在開發(fā)環(huán)境后期進(jìn)行
傳統(tǒng)的瀑布研發(fā)模式中,在研發(fā)后期會(huì)有專門的測(cè)試階段,包括集成測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試等。所以長(zhǎng)期形成一個(gè)誤解,測(cè)試是在開發(fā)階段后發(fā)生的。
可是這是一個(gè)錯(cuò)誤的認(rèn)識(shí),這依然是傳統(tǒng)工廠流水線思想的產(chǎn)物,并不適用于軟件研發(fā)。即使在瀑布研發(fā)模式下,前期的開發(fā)階段和需求設(shè)計(jì)階段也都明確了測(cè)試人員參與的必要性。在現(xiàn)代敏捷研發(fā)模式下,更加強(qiáng)調(diào)測(cè)試工作的遷移,測(cè)試在需求澄清、系統(tǒng)設(shè)計(jì)、代碼走查、結(jié)對(duì)編程等等階段都扮演著重要的角色。
真相
測(cè)試是貫穿在研發(fā)生命周期全流程的一項(xiàng)活動(dòng),并不是某一個(gè)割裂開的獨(dú)立階段。測(cè)試越早介入對(duì)產(chǎn)品最終質(zhì)量就更能產(chǎn)生積極的效果。
八、任何人都可以做好測(cè)試
這句話就好像《21天精通X語言》,《你也能做CEO》,《XXX三天速成》等故事一樣,任何事情,懂得些雞毛蒜皮都很容易,并不一定是測(cè)試,任何行當(dāng)其實(shí)都是這樣。10000小時(shí)定律對(duì)任何行業(yè)都適用。
真相
做一個(gè)好的測(cè)試工程師,一定是需要專業(yè)的技能訓(xùn)練以及經(jīng)驗(yàn)積累。測(cè)試是一個(gè)廣泛的范疇,各種各樣不同的測(cè)試概念以及對(duì)應(yīng)的測(cè)試方法、測(cè)試工具都需要大量的實(shí)踐和學(xué)習(xí)才能在需要的時(shí)候應(yīng)對(duì)自如。
九、測(cè)試工程師是質(zhì)量守門員
這個(gè)誤解幾乎在所有IT企業(yè)都存在。測(cè)試工程師被當(dāng)做質(zhì)量守門員(背鍋俠),測(cè)試人員需要為所測(cè)試的軟件質(zhì)量背書。測(cè)試人員被當(dāng)做產(chǎn)品質(zhì)量的最后一道防線,測(cè)試結(jié)果似乎決定了軟件產(chǎn)品最終的交付質(zhì)量。
真相
實(shí)際情況下,測(cè)試無法決定產(chǎn)品質(zhì)量,只能將產(chǎn)品中當(dāng)前發(fā)現(xiàn)的問題暴露出來,并據(jù)此進(jìn)行質(zhì)量評(píng)估。而且無論是因?yàn)檠邪l(fā)周期還是問題修復(fù)成本等問題,測(cè)試人員并不能左右產(chǎn)品是否能夠交付給用戶。測(cè)試人員針對(duì)測(cè)試過程的總結(jié)和報(bào)告,更多是體現(xiàn)當(dāng)前測(cè)試場(chǎng)景和測(cè)試范圍下,軟件產(chǎn)品的質(zhì)量評(píng)估情況,測(cè)試工程師其實(shí)無法充當(dāng)守門員角色。
十、測(cè)試即QA(質(zhì)量保證)
在很多企業(yè),往往會(huì)混淆QA和Testing兩種角色,認(rèn)為Testing就是QA(QualityAssurence)。應(yīng)該說兩者有相關(guān)性,或者說QA>testing。
前面說過,質(zhì)量不會(huì)由測(cè)試來決定,質(zhì)量更多是從需求、設(shè)計(jì)、開發(fā)環(huán)節(jié)就確定的。所以QA工作除了包含測(cè)試外,更主要的是流程改進(jìn),通過流程關(guān)鍵節(jié)點(diǎn)的管控來保證質(zhì)量水準(zhǔn)。
真相
QA涵蓋的范圍比測(cè)試更大,二者側(cè)重點(diǎn)也不同。QA更關(guān)注軟件研發(fā)全流程的質(zhì)量管控,測(cè)試則更關(guān)注將當(dāng)前軟件中的缺陷暴露出來。二者的關(guān)注點(diǎn)不同,所需要的技能也不相同。不能簡(jiǎn)單地把測(cè)試和QA工作劃等號(hào)。
總結(jié)
測(cè)試是一門涵蓋范圍廣泛的專業(yè),但是業(yè)界對(duì)測(cè)試工作卻普遍存在或多或少的誤解。
版權(quán)說明:文章來源網(wǎng)絡(luò),著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。