我們來看看一個(gè)測試工程師一天的工作:參加需求評(píng)審钙皮,根據(jù)需求編寫測試計(jì)劃蜂科,設(shè)計(jì)測試用例顽决,準(zhǔn)備測試環(huán)境和測試腳本,開發(fā)提測延期后在被壓縮的測試時(shí)間內(nèi)根據(jù)用例執(zhí)行測試导匣。期間要和產(chǎn)品確認(rèn)需求才菠,跟進(jìn)開發(fā)改問題。還要處理變更的需求贡定,然后修改測試用例赋访,對(duì)于改動(dòng)的已經(jīng)測過的地方又要評(píng)估回歸范圍。有時(shí)甚至因?yàn)轫?xiàng)目上線時(shí)間已定缓待,測試同學(xué)提出了風(fēng)險(xiǎn)都沒用蚓耽,測試用例都沒時(shí)間執(zhí)行完,只能挑主流程回歸執(zhí)行完確保沒有重要問題旋炒,然后就發(fā)測試通過報(bào)告提上線單步悠。這樣測試工作是在證明軟件是正確的(正常場景),而沒有通過探索去發(fā)現(xiàn)更深的場景瘫镇,以及異常場景鼎兽。
測試的目的是盡早發(fā)現(xiàn)缺陷和盡量多地提供測試對(duì)象相關(guān)的信息。是為了證明程序有錯(cuò)铣除,而不是證明程序無錯(cuò)谚咬。如果你只是在證明程序無錯(cuò),那你就是在驗(yàn)證尚粘,就是在checking择卦,而不是在testing。如果只需要驗(yàn)證的話背苦,那么完全不需要測試:產(chǎn)品對(duì)業(yè)務(wù)更熟悉互捌,他們可以直接驗(yàn)收潘明;開發(fā)對(duì)代碼更熟悉行剂,他們可以自己執(zhí)行。測試工程師的價(jià)值在于能高效地發(fā)現(xiàn)需求钳降、設(shè)計(jì)厚宰、流程上有缺陷有風(fēng)險(xiǎn)的地方,不僅要做好質(zhì)量保證遂填,還要做好質(zhì)量控制铲觉。軟件的缺陷是不可能發(fā)現(xiàn)完的,在一定時(shí)間內(nèi)吓坚,測試時(shí)間越長撵幽,遺留的bug數(shù)越少,但是超過了這個(gè)時(shí)間礁击,bug只能無限接近于零盐杂,永遠(yuǎn)不可能等于零逗载。花費(fèi)這么長時(shí)間去測試是無意義的链烈,而且項(xiàng)目也不可能給測試這么長時(shí)間厉斟;把所有bug發(fā)現(xiàn)出來也是無意義的,所以我們測試要做的是基于風(fēng)險(xiǎn)的測試强衡。
要做好這一步擦秽,前提是我們有足夠的時(shí)間做探索性測試,而每次測試中我們不得不花大量的時(shí)間回歸一次原先的主流程漩勤、重要場景用例感挥,這就需要我們的自動(dòng)化測試足夠穩(wěn)定和完善,可以把人力從重復(fù)的勞動(dòng)力中抽離出來锯七。 但是链快,現(xiàn)在談到測試大家就會(huì)想到自動(dòng)化測試,談到功能測試大家就會(huì)覺得很低端眉尸。這是本末倒置的域蜗。其實(shí)低端的不在于功能測試,而是你只會(huì)按照測試用例一條一條地執(zhí)行用例噪猾,你只是在checking霉祸。將你負(fù)責(zé)的業(yè)務(wù)中P0和P1級(jí)的功能和場景用腳本實(shí)現(xiàn),同時(shí)加以有效的斷言袱蜡,能將你從這部分工作中釋放出來丝蹭,測試人員再去做更多的異常測試、非功能性測試等坪蚁。用探索性思維去做測試才是測試人員真正的價(jià)值所在奔穿。只推崇自動(dòng)化測試也是畸形的,衡量一個(gè)測試工程師的標(biāo)準(zhǔn)不只是他掌握多少門開發(fā)語言敏晤,也不只是他能開發(fā)多少框架和工具贱田,更多的是他的測試思維∽炱ⅲ回到前面的:測試的目的是盡早發(fā)現(xiàn)缺陷和盡量多地提供測試對(duì)象相關(guān)的信息男摧,自動(dòng)化測試只是輔助提高測試效率的方式而不是目的。
測試枯燥嗎译打?測試沒有需求調(diào)研耗拓、產(chǎn)品設(shè)計(jì)的趣味,也沒有設(shè)計(jì)架構(gòu)的成就(但是你也需要掌握一些產(chǎn)品和架構(gòu)思維)奏司,測試的魅力在于你通過掌握的信息和不斷摸索的方式找出產(chǎn)品的缺陷乔询、項(xiàng)目的風(fēng)險(xiǎn)并且將這些缺陷和風(fēng)險(xiǎn)一步步降低。如果你只是在一遍又一遍地執(zhí)行測試用例韵洋,或者只是一條又一條地編寫自動(dòng)化測試竿刁,那當(dāng)然枯燥岸夯,而且你不是真正地在測試。測試就是探索们妥,測試思維猜扮,就是一種不斷通過增量信息,對(duì)存量信息進(jìn)行質(zhì)疑和完善的思維监婶。探索是有趣的旅赢。