它的成本效率不高
一個特定的開發組織或軟件應用系統的測試水平取決于對那些未發現的Bug的潛在后果的重視程度。這種后果的嚴重程度可以從一個Bug引起的小小的不便到發生多次的死機的情況。這種后果可能常常會被軟件的開發人員所忽視(但是用戶可不會這樣),這種情況會長期的損害這些向用戶提交帶有Bug的軟件的開發組織的信譽,并且會導致對未來的市場產生負面的影響。相反地,一個可靠的軟件系統的良好的聲譽將有助于一個開發組織獲取未來的市場。
很多研究成果表明,無論什么時候作出修改都要進行完整的回歸測試,在生命周期中盡早地對軟件產品進行測試將使效率和質量得到最好的保證。Bug發現的越晚,修改它所需的費用就越高,因此從經濟角度來看, 應該盡可能早的查找和修改Bug。在修改費用變的過高之前,單元測試是一個在早期抓住Bug的機會。
相比后階段的測試,單元測試的創建更簡單,維護更容易,并且可以更方便的進行重復。從全程的費用來考慮, 相比起那些復雜且曠日持久的集成測試,或是不穩定的軟件系統來說,單元測試所需的費用是很低的。
一些圖表
這些圖表摘自<<實用軟件度量>>(Capers Jones,McGraw-Hill 1991),它列出了準備測試,執行測試,和修改缺陷所花費的時間(以一個功能點為基準),這些數據顯示單元測試的成本效率大約是集成測試的兩倍 系統測試的三倍(參見條形圖)。
(術語域測試(Field test)意思是在軟件投入使用以后,針對某個領域所作的所有測試活動)
這個圖表并不表示開發人員不應該進行后階段的測試活動,這次測試活動仍然是必須的。它的真正意思是盡可能早的排除盡可能多的Bug可以減少后階段測試的費用。
其他的一些圖表顯示高達50%的維護工作量被花在那些總是會有的Bug的修改上面。如果這些Bug在開發階段被排除掉的話,這些工作量就可以節省下來。當考慮到軟件維護費用可能會比最初的開發費用高出數倍的時候,這種潛在的對50%軟件維護費用的節省將對整個軟件生命周期費用產生重大的影響。
結論
經驗表明一個盡責的單元測試方法將會在軟件開發的某個階段發現很多的Bug,并且修改它們的成本也很低。在軟件開發的后期階段,Bug的發現并修改將會變得更加困難,并要消耗大量的時間和開發費用。無論什么時候作出修改都要進行完整的回歸測試,在生命周期中盡早地對軟件產品進行測試將使效率和質量得到最好的保證。 在提供了經過測試的單元的情況下,系統集成過程將會大大地簡化。開發人員可以將精力集中在單元之間的交互作用和全局的功能實現上,而不是陷入充滿很多Bug的單元之中不能自拔。
使測試工作的效力發揮到最大化的關鍵在于選擇正確的測試策略,這其中包含了完全的單元測試的概念,以及對測試過程的良好的管理,還有適當地使用象AdaTEST和Cantata這樣的工具來支持測試過程。這些活動可以產生這樣的結果:在花費更低的開發費用的情況下得到更穩定的軟件。更進一步的好處是簡化了維護過程并降低了生命周期的費用。有效的單元測試是推行全局質量文化的一部分,而這種質量文化將會為軟件開發者帶來無限的商機。
文章來源于領測軟件測試網 http://www.kjueaiud.com/