市場部的 Linda:“我們想讓系統在用戶完成一筆交易時做 x 工作。這需要多長時間。我們的用戶需要盡快實現這一功能。”情況似乎有點不妙,不是嗎?盡管如此,Jeff 還是將任務分配給了 Mary,Mary 也認為能夠在兩天內完成工作 —— 確切地說,在看到代碼之前她是這么認為的。
治理人員 Jeff:“讓我看看,這個代碼是 Joe 在幾個月前編寫的,需要對業務層和 UI 做一些變動。Mary 也許可以在兩天內完成這項工作。”
Linda:“Joe?他是誰?”
Jeff:“哦,Joe,因為他不知道自己在干什么,所以被我解雇了。”
Mary:“Joe 寫這些代碼時是不是睡著了?這是我所見過的最差的代碼。我甚至不能確認這是 Java 代碼。除非推倒重來,要不我根本沒法修改。”情況對 “飲水機” 團隊不妙,不是嗎?但是我們假設,假如在這個不幸的事件的當初,Jeff 和 Mary 就擁有一份測試報告,那么情況會如何呢?當 Linda 要求實現新功能時,Jeff 做的第一件事就是檢查以前生成的覆蓋報告。注重到需要改動的軟件包幾乎沒有被覆蓋,然后他就會與 Mary 商量。
Jeff:“Joe 編寫的這個代碼很差,絕大多數沒經過測試。您認為要支持 Linda 所說的功能需要多長時間?”正如他們所說的,知識的力量是強大的。開發人員可以在試圖修改代碼之前 使用覆蓋報告來檢查代碼質量。同樣,治理人員可以使用覆蓋數據更好地估計開發人員實際所需的時間。
Mary:“這個代碼很混亂。我甚至都不想看到它。為什么不讓 Mark 來做呢?”
Jeff:“因為 Mark 不編寫測試,剛被我解雇了。我需要您測試這個代碼并作一些改動。告訴我您需要多長時間。”
Mary:“我至少需要兩天編寫測試,然后我會重構這個代碼,增加新的功能。我想總共需要四天吧。”
Drew 對 Jeff 說:“我們為下一個版本編寫了測試案例,我們注重到很多代碼沒有被覆蓋。那似乎是與股票交易有關的代碼。”知識再次顯示了其強大的力量。與其他軟件生命周期中的風險承擔者(例如 QA)配合,您可以利用覆蓋報告所提供的信息來降低風險。在上面的場景中,也許 Jeff 可以為 Drew 的團隊提供一個早期的不包含 Mary 的所有修改的版本。不過無論如何,Drew 的團隊都應該關注應用程序的股票交易方面,與其他具有相應單元測試的代碼相比,這個地方似乎存在更大的缺陷風險。
Jeff:“哦,我們在這個領域有好些問題。假如我是一個賭徒的話,我會對這個功能區域給予非凡的關注。Mary 正在對這個應用程序做一些其他的修改 —— 她在編寫單元測試方面做得很好,但是這個代碼也太差了點。”
Drew:“是的,我正在確定工作的資源和級別,看上去我沒必要那么擔心了,我估計我們的團隊會對股票交易模塊引起足夠的關注。”
新聞熱點
疑難解答