如果是業外人士,我覺得有這樣的誤解沒什么。畢竟,隔行如隔山,但業內人士這樣理解的話,真的不知道該說什么好了。開發是不是只管敲代碼,這里不談。這里我們要談的,是,測試不是單純的找bug。
現在我們承接第1點,來說說為什么測試不是在產品做出來之后,單純的找bug。
先科普的一個東西,就是測試金字塔。
這是Martin Fowler的一篇博客中提到的《TestPyramid》。
看不懂這個圖沒關系,我來慢慢解釋。
測試是分層的,它真的不是只有在產品做出來后才開始的,并且也不能那個時候才開始。原因在第1點里已經解釋過了。一個工程級別的軟件產品,它的測試大致覆蓋了代碼級別的單元測試,模塊級別的API測試,還有端到端的集成測試。這并不全面,還有很多其他類型,這里我們只是大概分成這3種,便于解釋、理解。
底部那層,就是代碼級別的單元測試。它是發現bug的最前沿陣地,能在這個層級抓住的bug,修復起來的代價,會小很多。而且這部分測試數量很大,驗證的東西也不是最終用戶所能理解的,通常都是自動化運行,有很多種框架可供選擇。只有這層的測試全部通過,才會運行后面更上層的測試。
中間那層,是service級別的測試,大概可以理解成模塊間的API測試。到這一層,基本每個模塊的功能都得到了保障,但是他們彼此的協作不一定正常,所以這層集中要測的就是不同模塊間的協作、通信了。這部分測試數量第二多,也是自動化運行。通過之后,就可以開始最上面那層的測試了。
頂部那層,這部分測試的數量最少,是UI級別的測試。測試的過程大致可以認為是,模擬使用產品的過程,最終用戶也能理解了。比如從注冊用戶開始,到注冊成功,登錄成功,頁面正確加載。這種校驗最基本功能的測試,叫冒煙測試,確保產品可以正確運行,沒有無法啟動之類的重大缺陷。除此之外,還有部分不便自動化的測試,需要手動測試,同時還會校驗一些邊角的情形。
即便上面說的測試全部通過,也不能確保產品萬無一失沒有bug,這是不可能的。只能說,通過了那么多層的測試,產品處在一個穩定狀態了,最終用戶的使用體驗良好,絕大部分需求都可以滿足。
之所以有人會這樣認為,可能是覺得測試只是在使用產品的過程中,發現了功能上、界面上不合理的地方,報告給開發,他們修復,就結束了。
其實不然,測試除了功能性的校驗,還有安全方面的測試、性能方面的測試、兼容性的測試,等等等等。一個負責任的企業,不可能把包含安全漏洞、性能奇差、對運行系統有各種吹毛求疵嚴酷要求的產品發布給普通用戶,就算他們敢發布,用戶也會選擇唾棄他們。所以在發布產品之前,肯定有這方面的測試,而這方面的測試,不是普通用戶所能勝任的。
原文轉自:http://news.hiapk.com/internet/s591fffb7e712.html