3.3單元測試工具
單元測試是軟件測試過程中一個重要的測試階段。與集成測試、確認測試相比,在編碼完成后對程序進行有效的單元測試,能更直接、更有效的改善代碼質量。
進行單元測試不是一件輕松的事。一般來講,進行一個完整的單元測試所需的時間,與編碼階段所花費的時間相當。進行單元測試時,根據被測單元(可能是一個函數,或是一個類)的規格說明,設計測試用例,然后通過執行測試用例,驗證被測單元的功能是否正常實現。除此之外,在單元測試階段,我們還需要找出那些短時間不會馬上表現出來的問題(比如C++代碼中的內存泄露),還需要查找代碼中的性能瓶頸,并且為了驗證單元測試的全面性,我們還想了解單元測試結束后,我們的測試所達到的覆蓋率。
針對這些在單元測試階段需要做的工作,各種用于單元測試的工具就產生了。典型的單元測試工具有以下幾類:動態錯誤檢測工具、性能分析工具、覆蓋率統計工具。
動態錯誤檢測工具,用來檢查代碼中類似于內存泄露、數組訪問越界這樣的程序錯誤。程序功能上的錯誤比較容易發現,因為它們很容易表現出來。但類似于內存泄露這樣的問題,因為在程序短時間運行時不會表現出來,所以不易發現。遺留有這樣問題的單元被集成到系統后,會使系統表現的極不穩定。
性能分析工具,記錄被測程序的執行時間。小到一行代碼、一個函數的運行時間,大到一個exe或dll文件的運行時間,性能分析工具都能清晰的記錄下來。通過分析這些數據,能夠幫助我們定位代碼中的性能瓶頸。
覆蓋率統計工具,統計出我們當前執行的測試用例對代碼的覆蓋率。覆蓋率統計工具提供的信息,可以幫助我們根據代碼的覆蓋情況,進一步完善測試用例,使所有的代碼都被測試到,保證單元測試的全面性。
動態錯誤檢測工具、性能分析工具、覆蓋率統計工具的運行機理是:用測試工具對被測程序進行編譯、連接,生成可執行程序。在這個過程中,工具會向被測代碼中插入檢測代碼。然后運行生成的可執行程序,執行測試用例,在程序運行的過程中,工具會在后臺通過插入被測程序的檢測代碼收集程序中的動態錯誤、代碼執行時間、覆蓋率信息。在退出程序后,工具將收集到的各種數據顯示出來,供我們分析。
目前被普遍使用的單元測試工具中有Compuware公司的NuMega DevPartner Studio,Rational公司的Rational Suite Enterprise。這些軟件產品都是一個工具套件,其中包含了我們前面所討論的動態錯誤檢測工具、性能分析工具、覆蓋率統計工具等。
3.4功能測試工具
在軟件產品的各個測試階段,通過測試發現了問題,開發人員就要對問題進行修正,修正后的軟件版本需要再次進行測試,以驗證問題是否得到解決,是否引發了新的問題,這個再次進行測試的過程,稱為回歸測試。