論軟件測試的目的與其測試存在意義和價值,眾雲紛紛,教科書式的回答:
1.盡可能發現更多缺陷
2.提高開發效率,降低開發成本
3.提高用戶體驗。
軟件測試最初只是驗證其系統是否可正確運行,發展至今,軟件測試的最終維度已經上升到了產品質量的本身,而不僅僅只局限於是否正常運行、或是否存在缺陷。關於缺陷,我們(項目組各個成員,企業上至老版,技術總監,下至新萌開發)都應該對缺陷有一個正確的認知:測試人員不可能發現系統中所有的缺陷,每個版本發布前也不可能所有已知的缺陷都會得到修復。所以——測試,是為了發現更多缺陷、預防風險。
為什么測試人員無法發現系統中所有的缺陷?
在用例設計環節中,測試人員為了盡可能實現高覆蓋率的測試,測試用例設計涉及多種方法和技術,如:等價划分、正交試驗、判定表、狀態遷移、因果圖等等,有些時候需要方法與方法之間組合進行使用,以保證更多的覆蓋系統的每一行代碼、每一個邏輯判斷的運行,每一個可操作的功能分支都得以覆蓋。聽起來是沒錯的,似乎也應該這樣。但是這樣完全進行下去的結果就是“窮舉測試”。
所以在龐大的工作量面前,老板們是不允許的,所以測試的最終目的,是盡可能在有限的時間內發現更多有效的,容易被用戶認知的,復現幾率較大的缺陷。
那低級別的缺陷我們就不應該去發現么?
從原則上來說,系統的完整性、統一性是很有必要的,倘若缺陷級別較低,解決與否都不影響用戶使用,且缺陷存在本身用戶也不會有感知,需求文檔中也沒有細致到可以證明是否為缺陷時,這時候,就需要我們測試人員從用戶體驗角度去甄別,此是否需要定義為缺陷。所以——測試,是為了提高用戶體驗。
關於提高開發效率,降低開發成本,這個外行人看起來很理解不了的問題,內行人其實一眼就看明白了。測試跟蹤需求、驗證質量;提交缺陷,也促進開發人員技術提升,這個里邊牽扯到項目流程管理的問題,此處不在多言,但需明確一點:軟件的質量不僅只能依靠測試人員,最終的質量如何是是整個團隊的最終結果。