軟件單元測試由誰來做最合適? 單元測試方法
單元測試保證局部代碼的質量
單元測試在隔離的前提下,分別對各個代碼單元進行測試,能夠達到其他測試不可能達到的測試完整性,從而保證了局部代碼的質量。只有局部代碼的質量得到了保證,軟件產品的質量才可能得到保證。
單元測試改良項目代碼的整體結構
要對代碼進行單元測試,最起碼的前提是代碼能夠隔離,也就是說,要具有一定的可測性,因此,單元測試是一種有效的約束機制,這種機制將有效地改良代碼的整體結構。例如,如果把業務代碼直接寫在界面類中,將很難進行單元測試,隨意的不合理的緊耦合也會造成難于測試,單元測試使這些不好的特性得于及時發現,從而很容易進行修正?蓽y性是高質量代碼的首要特性,不具有可測性,也就無法衡量代碼的正確性,有了可測性,也就基本上保證了代碼的可擴展性、可復用性。
單元測試降低測試、維護升級的成本
錯誤越早發現,修復的代價越小,另一方面,如果代碼經過了充分的單元測試,集成測試和系統測試就只需要關注設計方面的問題。自動回歸測試也大量降低升級維護成本。
使開發過程適應頻繁變化的需求
單元測試自然地使開發流程變得“敏捷”,這是因為,整體結構良好的代碼具有較好的可擴展性,自動回歸測試又能保證修改不會引入新的錯誤,因此可以適應頻繁變動的需求,降低系統分析、架構設計和后期測試的壓力。
單元測試有助于提升程序員的能力
對程序員來說,單元測試有利于養成縝密的思維習慣,及提高設計能力。
由誰進行測試?開發部門還是測試部門?
應該由開發部門進行單元測試!
由測試部門進行單元測試的問題
代價高:反復的重新理解代碼需要大量的時間,反復的溝通也需要大量的成本。
人手不足:進行單元測試的人員需要具備編碼能力,很多軟件企業的測試部門都沒有足夠的人手。
耽誤了測試部門對其他測試的準備工作:編碼階段,測試部門要為集成測試、系統測試等做好準備,如果測試部門陷在單元測試的“泥潭”里,很可能影響這些準備工作。
由開發部門進行單元測試的問題
擔心影響開發進度:這是現實問題,但自動化的單元測試工具可以解決這個問題。
程序員不習慣做單元測試:這種習慣是可以理解的,但并不難改變,實際上,程序員寫程序時都是要進行測試調試的,只不過通常比較零散和隨意而已。
測試自己編寫的代碼,難于保證測試的效果:測試自己寫的代碼,通常會只測試正常的輸入,因此難于保證測試的完整性,但自動化的單元測試工具,可以統計白盒覆蓋,甚至提供用于找出遺漏的測試用例的工具,達到很高的測試完整性。只要達到了足夠的測試完整性,那么,無論誰測試,效果都是一樣的。
無論由哪個部門做單元測試,都要面對一些問題,但開發部門所面對的問題可以借助工具來解決,而由測試部門進行單元測試,要么無法真正實施,要么代價昂貴。
文章來源于領測軟件測試網 http://www.kjueaiud.com/