一大早,一個年輕的程式員問大師:
“我準備寫一些單元測試用例。程式碼涵蓋範圍應該達到多少為好?”
大師回答道:
“不要考慮程式碼涵蓋範圍,只要寫出一些好的測試案例即可。”
年輕的程式員很高興,鞠躬,離去。
之後沒多久,第二個程式員問了大師同樣的問題。
大師指著一鍋燒沸的水說:
“我應該往這個鍋裡放多少米?”
這個程式員看起來被難住了,回答道:
“我怎麼會有答案?這取決於要給多少人吃,他們餓不餓,有什麼菜,你有多少米,等等。”
“完全正確,” 大師說。
第二個程式員很高興,鞠躬,離去。
末了,來了第三個程式員問了大師同樣的關於程式碼涵蓋範圍的問題。
“百分之八十,不能少!” 大師一拳錘在桌子上,用嚴厲的口氣回答道。
第三個程式員很高興,鞠躬,離去。
回複完這個之後,一個年輕的實習生走到大師身邊:
“大師,今天我無意中聽到了你對同一個程式碼涵蓋範圍問題給出了三個不同的答案。為什嗎?”
大師從椅子上站起來:
“給我泡點新茶,我們聊聊這個。”
當杯子裡倒滿了冒著熱氣的綠茶後,大師開始說:
“這第一個程式員是個新手,剛剛開始學測試。目前他有大量的程式都沒有測試案例。他有很長的路要走;現在對他要求程式碼涵蓋範圍只會打擊他,沒有什麼用處。最好是讓他慢慢的學會寫一些測試案例,測試一下。他可以以後再考慮程式碼涵蓋範圍。”
“而這第二個程式員,不論對編程還是測試都是十分的有經驗。我以問作答,問她應該往鍋裡放多少米,使她明白決定測試案例多少的因素有很多,她比我更知道這些因素——畢竟是她自己的代碼。對這個問題沒有一個簡單的、直接的答案。以她的聰明完全能明白這個道理,正確的完成任務。”
“我明白了,” 年輕的實習生說, “但是如果沒有一個簡單直接的答案,那你為什麼告訴第三個程式員‘百分之八十,不能少’呢?”
大師笑的前仰後合,綠茶都噴了出來。
“這第三個程式員只想得到一個簡單的答案——即使根本沒有簡單的答案 … 而且即使有答案她也不會按答案做。”
年輕的實習生和頭髮斑白的大師在沉思中喝完茶。
http://blog.csdn.net/metababy