沒有發現 bug 的測試是否有價值

CKL的思考發表於2024-12-06

之前有人問過我一個問題:如果開發的質量比較高了,測試沒有發現缺陷,那是不是就可以減少測試?看著好像是這樣子的,但總感覺哪裡不對。最近又看到有人在討論沒有發現缺陷的測試是否有價值。結合自己的經歷,嘗試系統地思考下這個問題。先說結論:肯定是有價值的。

01 兩種不同的情況。

測試沒有發現缺陷,存在兩種情況:1. 沒有深入的測試 2. 研發交付的質量高。

針對沒有深入的測試這種場景,在《迭代測試發現不了問題,怎麼辦》一文中做過探討,有幾點針對性的措施,這裡不再展開。

本文重點討論第二種情況,業務需求明確,研發個人能力強,做過充分的自測,交付質量很好,經過幾個迭代的測試,發現的缺陷較少或者沒有,那這個人提交的程式碼還要不要測試?測試人員的投入是否還有價值。

02 從測試人員的角度看

結合個人的經歷和思考,我覺得第二種情況的測試投入還是必要的。測試的價值不僅僅是發現缺陷,至少還有以下幾點直觀的價值:

a. 建立測試資產:測試設計、測試用例等測試過程資產的沉澱還是非常有必要的。如果不投入測試資源,對應的需求分析和用例都將缺失,後續如果其他人想要介入,就缺少對應的 IT 資產。

b. 評估風險:經過系統的測試,哪怕沒有發現缺陷,那也是經過經驗,可以有效地評估風險。如果沒有測試,僅憑過去的經驗,對於這部分的上線風險評估是缺失的。

c. 檢查需求理解:測試人員的測試範圍不僅僅是程式碼是否正確,還需要驗證研發對需求的理解是否準確,是否符合業務場景,是否有場景遺漏等內容,這部分研發考慮的會比較少。

03 從研發的角度看

在思考這個問題的過程中,也調研了部分開發人員的意見,包含那邊程式碼能力優秀的人,普遍給的反饋是:還是需要經過測試驗證的。原因有以下幾點:

a. 充分驗證:不論是單元測試還是 TDD,成本都比較高,現在更落地的做法是測試人員提供自測用例,開發人員進行更充分的自測,效率更高。

b. 需求對齊:雖然經過多輪的需求澄清,但大家對於需求的理解和影響範圍考慮總有不全面的時候,需要有測試人員進行進一步確認和補齊。

c. 個人波動:個體不是機器,也會波動。不能保證自己的產出每次都經過那麼嚴格的測試,如果不測試而引發生產事故,後果比較嚴重。

04 從團隊管理的角度看

從團隊管理的角度上看,我們更希望構建一套完整的質量保障體系,這個體系需要減少對個體能力的依賴,保障交付質量的下限。透過標準規範化的操作,做好每一步的過程監控,以期望達到一個比較好的交付質量。如果因為部分人員的個人能力,繞開了這個體系(不需要測試),那麼,最終的結果就是會有越來越多的人走這條捷徑(破窗效應?)

很多團隊都有設定緊急需求處理通道,結果就是多數情況下,需求都是緊急的。

05 不要輕視測試

這話其實很沒說服力,當下的多數情況,測試還是總被輕視。但作為測試人,我還是要想多說些。測試這個行業經過這麼多年的發展(參考下圖),很多人的行動都還是停留在測試是為了 “確保程式解決了它該解決的問題” 上,而不是以預防為主的質量內建上(雖然都這麼說,但並沒有真實地意識到,畢竟質量是昂貴的,質量是可以用非技術的手段去解決的)。

測試人員還需努力,做好向上管理,給老闆畫好質量的 “餅”。

共勉。

相關文章