Rational Test Suite-Purify

Rational Test Suite-Purify

       大家在測試過程中最頭痛的是什麼問題,我想大概是服務器運行時不知不覺的服務器就出現異常,通過SystemMonitor發現系統的內存隨時間不斷的減少,特別在C++的開發下由於沒有像Java,C#有比較好的GC,所有的內存都是開發員進行控制,很容易出現內存泄漏的情況,那麼如何高效的發現內存問題,成爲高級測試人員與開發人員關注的問題。

       工欲善其事,必先利其器,要快速的在大型的應用中人工的排查內存問題,就有如大海撈針。如何在幾百萬代碼定位問題,人工!顯然是不可能的,那必須要藉助工具,現在有許多比較好的內存檢查工具,比如下面給大家介紹的Purify,PurifyIBM公司出的面象C++VBJava的內存檢查工具。

Purify可檢查的常見錯誤類型如下:

1 堆陣相關錯誤。

2 堆棧相關錯誤。

3 垃圾內存收集-Java 代碼中相關的內存管理問題。

4 COM 相關錯誤。

5 指針錯誤。

6 內存使用錯誤。

7 Windows API 相關錯誤。

8 句柄錯誤。

當然可檢查的錯誤類型還有很多,大家可以參考聯機幫助,但我認爲常見的錯誤大多數都發生上面提到的一些錯誤。

       下面主要給大家以一個例子來說明Purify的使用:

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2004-4-10119310.jpg

1

Purify的使用還是比較簡單的,一般只要把程序寫成.EXE,然後直接運行就行了,當然如果程序比較大時,則需要重新組織一下,分幾個段進行測試,最好的辦法就是用CPPUnit來寫測試框架,直接調用單個的函數進行測試是最好的,我的例子就是用CPPunit來寫的,單獨調用相關的測試函數進行測試,由於這裏不是介紹CppUint,所以只是給大家提一下,單元測試可以這樣寫。Purify的啓動還是比較簡單的,就是運行一個.EXE

       運行完後結果如下圖:

CSDN_Dev_Image_2004-4-10119312.jpg

2

大家可以看到報以下幾個出錯,有位未初始化內存,數組越界讀寫,內存泄露等幾個大家比較頭痛的問題,以前代碼比較多時是無法查到的,現在有了這個工具,就可以很快的查到問題。

       同時Purify不光可以顯示出錯還可以定位是那段代碼出錯,當然你要有代碼,不過它是把相關的模塊全部顯示出來,你要從裏面找出是由你的代碼引起的問題才行,這是一個比較暈的事情,不過多做幾次就行,當然如果程序是你寫的就更好了,就更容易找到問題,對上面的出現問題的點進行展開,跟據一些使用的經驗我一般不會找系統相關的函數,而是先找與自己工程相關的函數,比如下圖中的內存演示 int CMabString::LeakMemory():

CSDN_Dev_Image_2004-4-10119314.jpg

3

就是工程中的代碼,一般問題都是由自己的代碼引起的,但Purify把所有與此相關的模塊都引入,所以你要過濾出什麼是真正問題的所在,同時你們還可以看到如果程序有代碼的話,Purify可以把代碼中的錯誤都標出,從而減小你再去查找代碼的難度,從而快速的定位問題。

當然,Purify還有許多比較好的特性,比如過濾,錯誤顯示設定等等,通過它你可以更快更好的發現問題。

       Purify是一款非常不錯的內存檢查工作,結合PureCoverage,QuantifyRose Test Suite下的工具,就可以對代碼級進行很好的測試,當然如果再結合測試框架,形成自動化測試則能大幅度的節約測試成本,提高工作效率,當然實施單元測試還是要看整個測試團隊的能力,不能強推J。如果你要了解其它兩個工具,可以看我專欄的其它介紹,謝謝大家。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章