1. 程式人生 > >大師與程式設計師之間關於測試覆蓋率的對話

大師與程式設計師之間關於測試覆蓋率的對話

在《談談測試覆蓋率》文章中說到了測試覆蓋率與程式碼質量的關係,糾正了覆蓋率高就質量好的簡單論斷。
今天我們從另外一個視角來說說測試及覆蓋率。當然,這裡的測試都是指開發者自己做的自動化測試,不是測試人員的驗收測試。

一天早上,程式設計師A走到大師座位上問:

A:“我已經寫好了部分單元測試程式碼,請問我該達到多少測試覆蓋率?”
大師:“不要太在意覆蓋率,把測試用例設計好,測試程式碼寫好就可以了。”
程式設計師A帶著滿足的微笑離開了。

過了幾天,程式設計師B又跑到大師的座位上問同一個問題,大師指著正在沸騰的水說:

“用這個水煮飯,該放多少粒米?”
程式設計師B一臉迷茫,說:
“這個我怎麼能清楚的告訴你?這個問題依賴於有多少人吃飯,他們的飢餓程度,是否有其他的輔助食物,你有多少米等。”
大師:“你說的太對了”。
程式設計師B也帶著滿足的微笑離開了。

又過了幾天,程式設計師C也找到大師的座位上問這個問題。

大師用拳頭捶著桌子堅定地回答:“絕對不能少於80%的覆蓋率”。
程式設計師C也帶著滿足的微笑離開了。

這時候,坐在大師傍邊的一位菜鳥程式設計師D迷茫了,忍不住問大師:

“大師,我聽到你回答三個人同樣一個問題,但是答案卻是完全不一樣,為什麼呢?”
大師從椅子上站起來說:
“走,去喝一杯茶,讓我慢慢講你聽。”

當他們的茶杯中的新茶冒出熱氣後,大師說:
“程式設計師A是新手,且剛開始做測試。當前他有很多沒有經過測試的程式碼,還有很長的路要走;這個時候要求他達到一定的測試覆蓋率目標,會使他的情緒變的很沮喪且毫無意義。他現在要做的就是寫一些測試程式碼並執行,慢慢的他會考慮到覆蓋率的。”

“程式設計師B,很有經驗,寫過不少程式碼,包括測試程式碼。當我反問他要往沸騰的水裡面放多少粒米的時候,我幫助他意識到了測試程式碼的數量依賴很多因素,且他比我更瞭解有哪些因素,因為這畢竟使他的程式碼。這個問題並沒有一個簡單的,唯一的答案。我相信他能夠知道該怎麼做”

菜鳥D說:“我知道了,這個問題沒有簡單的,唯一的答案,。但是我不明白,你為什麼給程式設計師C一個簡單的唯一的答案呢?”
大師開懷大笑,說:
“程式設計師C只想要一個簡單的唯一的答案,雖然不存在簡單的唯一的答案,要是沒有這個明確的答案他就不能繼續工作。”

大師說完後,菜鳥就什麼都沒說,他們靜靜地喝著茶。