自動化測試在測試內存泄露中的應用研究
摘要:分析了內存泄露的發生原因和特點,研究了傳統測試方法在測試內存泄露方面的缺陷;提出了自動化測試方法在測試內存泄露中的應用。用自動化測試技術代替繁重的手工測試;利用自動化測試具有可重復性、一致性、可重用性的特點,進行更多更頻繁的測試;利用自動化測試技術可以解決一般工具無法檢測的問題.最后,列舉了兩個實際例子。形象地說明了自動化測試技術在軟件測試中的優勢。所介紹的方法對于結構復雜的大型應用軟件具有非常好的效果。
關鍵詞:內存泄露;自動化測試;用例設計;結果分析;
1、引言
隨著電信技術的快速發展,網絡管理系統(網管)功能不斷增強,使得網管界面變得非常復雜。網管用戶界面的一級菜單有上百個,二級和三級菜單有上千個。面對如此復雜的界面系統,傳統的手工測試已經很難保證軟件的質量。為了提高軟件的測試覆蓋率,對軟件進行充分測試,需要建立更加有效的測試環境。
在網管軟件開發中,軟件運行的穩定性是衡量軟件質量的重要指標。影響軟件穩定性的因素有很多,其中內存泄露問題是最嚴重的。存在內存泄露的軟件所帶來的后果是不可想象的,因此,作為一個測試人員,如何測試內存泄露是整個測試任務中的重要環節。本文針對網管GUI(圖形用戶界面)進行內存測試,當測試用例達到幾百上千個之后,如果仍然是手工測試,測試效率將異常低下。本文提出自動化測試方法,用自動化測試工具Robot 對軟件進行測試,較好的解決了以上這些問題。
2、計算機內存以及自動化測試原理
2.1 內存泄露的測試方法
在內存泄露測試方面,目前比較流行的測試工具是Purify。如果一個軟件的代碼比較簡單,用Purify 測試內存泄露的效果會比較好;Purify 可以對申請內存的地方作標記,以此作為內存是否釋放的標準。但是Purify 對于大型復雜的軟件并不適用;因為這時候簡單的作標記已經無法真正的描述內存的使用情況,必須用其他更好的方法來測試。測試中經常存在這種情況:用Purify檢測表明沒有內存泄露,但是在實際應用中,用戶卻發現內存泄露很嚴重。
一個軟件只有經過長時間的使用檢驗沒有問題之后才能證明是可用的,但是測試不可能無限期地進行,為了節省時間,只能采取模擬長時間的測試,即在很短的時間內進行大量的操作,等效于長時間的操作。
針對這種情況,測試人員必須真實的模擬用戶操作,通過大量的疲勞操作,才能更好的檢測是否存在內存泄露。這種復雜的長時間的操作屬于系統測試的范圍,系統測試是將通過確認測試的軟件,作為整個基于系統的一個元素,與硬件、某些支持軟件和人員等其它系統元素結合在一起,在實際運行環境下,對系統進行一系列的組裝測試和確認測試。
2.2 自動化測試技術
最近幾年,自動化測試技術悄然升溫。自動化測試一般用來進行回歸測試,也可以對軟件進行壓力測試;本文討論的就是壓力測試,或者稱為極限測試。壓力測試,也成為極限測試。大多數測試技術,主要是面向正常的程序功能和性能的測試,而壓力測試的目的主要是為非正常情況。進行壓力測試的思想是“如何能夠把系統折騰到什么程度而又不會出錯”。測試者站在破壞者的角度來看問題。
自動化測試可以將繁瑣的任務自動化,如重復輸入相同的測試輸入,可以提高準確性和測試人員的積極性,將測試人員解脫出來轉而投入更多精力設計更好的測試用例。并且自動化測試可以達到連續不斷的無人值守測試,有效地利用了計算機資源。
3、測試用例的設計以及測試結果的保存
3.1 測試用例的設計
測試用例是進行軟件測試的主要手段。一個好的測試用例就是要盡量多的發現軟件中隱藏的故障,具體而言就是要盡可能的申請釋放內存,以測試內存的增長情況。
要實現測試自動化,首先是測試數據的自動輸入;測試數據的自動輸入是相對比較容易實現的環節。在腳本中可以設置所要輸入的數據組合,從而可以控制腳本運行過程;一般自動化測試工具(比如Robot)都可以記錄測試人員的所有手工操作,并把這些操作以測試工具可以認識的腳本的形式保存下來;商用測試工具Robot 所用的腳本語言是SQABasic 語言。因為腳本就是命令的集合,所以測試工具可以執行腳本命令,重復執行測試人員的操作。
測試人員可以修改腳本,以完成指定任務;甚至可以手工編寫腳本,以程序的形式編制腳本,這樣可以讓腳本完成更多的功能。