开发团队里是否需要测试人员?
最近在看“軟件隨想錄”,里面有個非常有名的“喬爾測試”,其中有一個問題是“你的團隊里面是否有測試人員”,如果有的話就加分,表明團隊對產品質量比較重視。
但是在現在的軟件開發團隊中是否真的需要測試人員呢?
如何替代測試人員的工作
我們先來看一下測試人員的工作是什么?測試人員的工作是盡可能的找出bug,然后提交給開發人員進行修復。如果團隊里面沒有測試人員,開發人員要如何找bug呢?
首先我們來看測試人員做的最多的測試——功能測試,對于功能測試我們有什么辦法可以來替代呢?
單元測試
單元測試是開發人員找出代碼中潛在bug的自我救贖行為,相比手工測試功能,開發人員一般更傾向于寫代碼來測試功能代碼,即所謂的單元測試。只要能想到相應的測試案例,就能寫出單元測試,可以測試包括正常,異常,分支,邊界等情況下的問題。
集成測試
單元測試雖然可以找到一些bug,但還不能完全替代測試人員的工作,單元測試只能測試細粒度級別的功能,比如某個方法的功能,如果需要對幾個功能點一起測試的話,單元測試就滿足不了了。但沒有關系,開發同樣可以用代碼來寫測試,這種粒度稍大的測試就是集成測試,比如測試一個后端的api,驗證輸入參數和輸出結果,這個api的真正功能可能是后端調用數據庫等一系列的操作,你一個測試方法就可以把這個api的各個功能點串起來一起驗證。
UI測試
還有粒度更大的測試,一個頁面上的按鈕的點擊可以看成是UI測試,相對于集成測試,這個測試的范圍涉及了前端和后端,測試包括驗證前端的頁面是否正確,到點擊按鈕后觸發的后端功能是否正確。現在市面上有很多端到端的測試框架,涵蓋各種語言和瀏覽器。
性能測試
除了功能測試,測試人員還會做一些性能測試,同樣地,開發可以通過代碼或者腳本來調用性能測試工具來對系統進行性能測試。
持續集成
如果不想像測試人員一樣每天做重復性的勞動,就可以將以上那些測試代碼放到持續集成上面,讓機器幫你運行,想象一下,幾百上千個測試,如果手工跑的話可能要花不止一天的時間,而通過持續集成,可能在一天就能跑完好幾輪所有測試。
不能替代的測試工作
如果我們做到了以上這些,是否就可以完全代替測試人員了呢?其實有些測試是機器無法測試的,比如網頁的樣式,機器只能判斷是否有顯示,但無法判斷顯示的是否好看。還有一些交互效果,也只有通過人工才能識別效果是否正確,還有其他各個領域的測試,目前是不能通過代碼或者機器來替代的。
高級測試工程師
可能有人會說上面提到的用代碼來執行測試的工作,高級測試工程師也能做。其實我覺得軟件開發和軟件測試到了越高的位置,技能重合的領域就越大,兩者都同時會寫代碼,做測試,可能還會部署,會運維,這個時候我覺得不如就叫高級工程師好了,或者全棧工程師。
結論
說了這么多,所以結論是什么呢?
具體情況要具體分析,不能一概而論說完全不需要測試人員,團隊不需要測試人員的條件是:
- 團隊的開發人員可以寫的單元測試,集成測試和UI測試
- 沒有太多需要人工測試的功能,比如團隊開發的是常規的web系統或者純后端應用等
總結
以上是生活随笔為你收集整理的开发团队里是否需要测试人员?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse 配置黑色主题
- 下一篇: 深入理解java虚拟机 精华总结(面试)