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