專利名稱::一種圖形界面程序的資源泄漏測試及問題定位方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于軟件測試領(lǐng)域,尤其涉及一種圖形界面程序的資源泄漏測試和問題定位方法。
背景技術(shù):
:目前穩(wěn)定性測試的方法主要是人工長期操作界面,結(jié)合觀察資源監(jiān)控工具來判斷是否存在影響軟件運行長期穩(wěn)定性的資源泄漏問題。資源(Resource):指軟件賴以發(fā)揮效用的內(nèi)外部栽體,這兒指內(nèi)存資源,GDI資源和USER資源,系統(tǒng)句柄等,這些資源通過操作系統(tǒng)的任務(wù)管理器或者相關(guān)工具即可觀察到。如在Windows操作系統(tǒng),可通過Windows的任務(wù)管理器可觀察到(如附圖2所示)。GDI(GraphicsDeviceInterface):圖形界面接口資源,Windows窗口中繪制圖形、文本和圖像所需要的系統(tǒng)資源,以"個",為單位。USER資源Windows的USER模塊提供的窗口、菜單等資源,以"個",為單位。內(nèi)存資源是指程序運行所需要的全部內(nèi)存,以"字節(jié)",為單位。現(xiàn)有的方法局限性在于1)很多軟件含有大量的圖形界面,和經(jīng)常性的回歸測試(特別是處于開發(fā)中或經(jīng)常需要升級的程序),這時就需要測試人員對大量的界面進行大量和重復性的操作觀察,這當然會占用大量的寶貴人力。2)不能精確確定資源泄漏量。3)不能精確確定引起資源泄漏的操作。
發(fā)明內(nèi)容資源泄漏測試是保障軟件運行穩(wěn)定性的重要組成部分。針對目前手工或半自動軟件穩(wěn)定性測試的成本較大且不易精確測量資源泄漏量情況,本發(fā)明的目的就是為了解決手工穩(wěn)定性測試不能精確定位資源泄漏進而使測試本身效果和意義降低的問題,從而提高穩(wěn)定性測試所產(chǎn)生的效果,節(jié)省人力成本,加快測試執(zhí)行周期。本發(fā)明提供了一種確定資源泄漏的方法,包括如下步驟(1)在軟件運行后,連續(xù)N次執(zhí)行同一組可循環(huán)的界面操作;(2)監(jiān)控每次的界面操作的資源占用數(shù)目;(3)如果所述資源占用數(shù)目持續(xù)地上升,則進行如下步驟判定該操作產(chǎn)生資源泄露,以及計算該界面操作資源泄漏數(shù)等于第2次到第N-l次操作所產(chǎn)生資源泄漏量的平均值X。此外,其中N是大于或等于3的正整數(shù)。所述資源是GDI、用戶資源、內(nèi)存資源、系統(tǒng)句柄等至少之一。所述軟件可以是windows,linux,unix,java,.net等操作系統(tǒng)之上的軟件。根據(jù)本發(fā)明的另一方面,還包括利用自動化重放工具循環(huán)上述方法的步驟(l)-步驟(3)n次,對于每次迭代,分別算得Xl,X2,…,Xn的資源泄漏數(shù),求其平均資源泄漏數(shù)平均資源泄漏數(shù)=Z(Xl+X2+…+Xn)/n。本申請相對現(xiàn)有技術(shù)而言,具有如下優(yōu)點和效果本方法可以和自動化重放工具(例如回放腳本)的緊密結(jié)合,避免了大量人工界面操作,以節(jié)省大量的寶貴人力資源。本方法精確確定每次操作所引起的資源泄漏量,從而為精確地評估軟件穩(wěn)定性提供了依據(jù)。本方法能夠精確定位引起資源泄漏的操作,從而為快速有效地解決資源泄漏問題,增強軟件產(chǎn)品運行穩(wěn)定性提供了輔助方法。圖1顯示了根據(jù)本發(fā)明的一個實施例的確定資源泄漏方法的流程圖。圖2顯示了根據(jù)本發(fā)明的一個實施例的一種確定資源占用的方法。具體實施例方式圖形界面的程序的資源的使用和釋放情況較為復雜。有時一個操作后,可能增加也可能減少資源的占用,也可能一次的操作增加X數(shù)量資源占用,而同樣的操作下一次卻引起了Y數(shù)量資源占用.這里面有操作系統(tǒng)資源分配回收機制的作用,也有系統(tǒng)內(nèi)部偶然性機制的作用,其們了解系統(tǒng)資源泄漏情況的難度。本發(fā)明基于如下方式來分別消除上迷判斷資源泄漏的千擾因素。1)連續(xù)操作法此方法用于消除資源分配回收機制的作用,這是因為系統(tǒng)在第一次界面操作(界面操作是指用戶和軟件之間的接口,用戶用以對軟件發(fā)布指令,得到處理結(jié)果等)時申請資源,而在以后的界面操作通常只是引用第一次界面操作時申請的資源,所以理論上連續(xù)的第二次重復的界面操作后計算到的資源增長數(shù)即為消除資源分配回收機制后的,但為了保險起見再增加一次連續(xù)操作為平均。本發(fā)明建議的計算資源泄漏的方法在一次軟件運行期中,連續(xù)三次(可擴展到n次,n>=3的正整數(shù))同樣界面操作都會產(chǎn)生資源占用數(shù)目的持續(xù)上升,即表示該操作產(chǎn)生資源泄露;該界面操作資源泄漏量為第二和第三次界面操作所產(chǎn)生資源泄漏量的平均值。2)平均法此外,為了進一步消除系統(tǒng)內(nèi)部偶然性資源增加或減少對資源泄露統(tǒng)計所帶來的影響,可以進一步使用平均法。平均法的具體方法是利用自動化重放工具循環(huán)n個迭代,對于每個迭代,按連續(xù)操作法分別算得Xl,X2,…,Xn的資源泄漏數(shù)。求其平均數(shù),即為平均資源泄漏數(shù)。公式如下平均資源泄漏數(shù)=Z(Xl+X2+…+Xn)/n參考附圖1,顯示了根據(jù)本發(fā)明的一個實施例的確定資源泄漏方法的流程圖。首先錄制可回放的界面操作,并產(chǎn)生回放腳本。界面操作是指用戶和軟件之間的接口,用戶用以對軟件發(fā)布指令,得到處理結(jié)果等。例如,一組可循環(huán)的界面操作是點擊某個按鈕并關(guān)閉隨后出現(xiàn)的對話框。在回放腳本中的每一小段前加入記錄特定資源(例如GDI)監(jiān)控值函數(shù)。然后回放腳本,并產(chǎn)生被監(jiān)控資源泄漏的分析表。最后,基于上述分析表,利用上述的"連續(xù)法"和/或"分析法,,來分析所述特定資源的資源泄漏。下面結(jié)合具體例子來說明本發(fā)明。例子1假設(shè)某即時通信軟件需要檢測GDI資源泄漏情況,該即時通信軟件有三個常用操作,分別是"打開聊天窗口","發(fā)送聊天信息","更改在線狀態(tài)"。在登陸完畢初始狀態(tài)為314個GDI。如附圖2所示,軟件的GDI的資源占用數(shù)可通過Windows操作系統(tǒng)的任務(wù)管理器查看。計算"打開聊天窗口,GDI資源泄漏第一次打開并關(guān)閉聊天窗口后發(fā)現(xiàn)此時GDI為365個,增量為51個GDI,緊接著第二次打開同樣的窗口并關(guān)閉,此時GDI為369個,增量為4個GDI,最后第三次打開同樣的窗口并關(guān)閉,此時GDI為372個,增量為3個GDI。(4+3)/2=3.5,所以"打開聊天窗口,,平均會引起3.5個GDI資源泄漏。計算"發(fā)送聊天信息,,GDI資源泄漏打開聊天窗口,三次發(fā)送聊天信息分別觀察到GDI總數(shù)不變,即GDI資源泄漏為0。計算"更改在線狀態(tài),,GDI資源泄漏6關(guān)閉聊天窗口,選擇不同于現(xiàn)在的其它狀態(tài)。三次觀察到的GDI分別是375(+3),377(+2),379(+2),根據(jù)第二第三次的結(jié)果:(2+2)/2=2,可知"更改在線狀態(tài),,產(chǎn)生了2個GDI資源泄漏。錄制一個腳本,在腳本的一個迭代中用連續(xù)操作法順序操作"打開聊天窗口","發(fā)送聊天信息,,,"更改在線狀態(tài)"三個操作并逐一算出GDI泄漏數(shù),迭代4次得到以下表格表1<table><row><column></column><column>第1次迭代</column><column>第2次迭代</column><column>第3次迭代</column><column>第4次迭代</column></row><row><column>打開聊天窗口</column><column>3.5</column><column>4</column><column>4</column><column>4</column></row><row><column>發(fā)送聊天信息</column><column>0</column><column>0</column><column>0</column><column>0</column></row><row><column>更改在線狀態(tài)</column><column>2</column><column>2</column><column>2.5</column><column>1.5</column></row><table>從該表可知:平均"打開聊天窗口"GDI資源泄漏數(shù)=∑(3.5+4+4+4)/4=3.875個~4個。平均"發(fā)送聊天信息"GDI資源泄漏數(shù)=∑(0+0+0+0)/4=0個。平均"更改在線狀態(tài)"GDI資源泄漏數(shù)=∑(2+2+2.5+1.5)/4=2個。注意在實際的應(yīng)用中,要較為準確地反映出被測程序存在的問題,需要大量的迭代數(shù)據(jù),遠不只4次迭代,這些工作就需要自動化測試工具自動控制界面操作和自動計算。本發(fā)明提供了一種界面操作引起的資源泄漏量確定方法,其利用自動重放工具精確評估測試界面程序的穩(wěn)定性。本方法和自動化重放工具的緊密結(jié)合,避免了大量人工界面操作,可以節(jié)省大量的寶貴人力資源;本方法精確確定每次操作所引起的資源泄漏量,從而為精確地評估軟件穩(wěn)定性提供了依據(jù)。本方法能夠精確定位引起資源泄漏的操作,從而為快速有效地解決資源泄漏問題,增強軟件產(chǎn)品運行穩(wěn)定性提供了輔助方法。權(quán)利要求1.一種確定資源泄漏的方法,包括如下步驟(1)在軟件運行后,連續(xù)N次執(zhí)行同一組可循環(huán)的界面操作,(2)監(jiān)控每次的界面操作的資源占用數(shù)目,(3)如果所述資源占用數(shù)目持續(xù)地上升,則進行如下步驟判定該操作產(chǎn)生資源泄露;以及計算該界面操作資源泄漏數(shù)等于第2次到第N-1次操作所產(chǎn)生資源泄漏量的平均值X。2.根據(jù)權(quán)利要求1所述的確定資源泄漏的方法,其中N是大于或等于3的正整數(shù)。3.根據(jù)權(quán)利要求1所述的確定資源泄漏的方法,其中所述資源是GDI、用戶資源、內(nèi)存資源、系統(tǒng)句柄等至少之一。4.根據(jù)權(quán)利要求1所述的確定資源泄漏的方法,其中所述軟件可以是windows,linux,unix,java,.net等操作系統(tǒng)之上的軟件。5.根據(jù)權(quán)利要求1所述的確定資源泄漏的方法,其中所述資源是通過WINDOWS的任務(wù)管理器來監(jiān)控的。6.根據(jù)權(quán)利要求1所述的確定資源泄漏的方法,其中還包括利用自動化重放工具循環(huán)權(quán)利要求1的步驟(1)-步驟(3)n次,對于每次迭代,分別算得Xl,X2,…,Xn的資源泄漏數(shù),求其平均資源泄漏數(shù)平均資源泄漏數(shù)=2XXl+X2+…+Xn)/n。全文摘要本發(fā)明提供了一種確定資源泄漏的方法,包括如下步驟(1)在軟件運行后,連續(xù)N次執(zhí)行同一組可循環(huán)的界面操作;(2)監(jiān)控每次的界面操作的資源占用數(shù)目;(3)如果所述資源占用數(shù)目持續(xù)地上升,則進行如下步驟判定該操作產(chǎn)生資源泄露,以及計算該界面操作資源泄漏數(shù)等于第2次到第N-1次操作所產(chǎn)生資源泄漏量的平均值X。文檔編號G06F11/36GK101206616SQ200610167719公開日2008年6月25日申請日期2006年12月19日優(yōu)先權(quán)日2006年12月19日發(fā)明者宋平波,雄徐,林全疆,胡欣欣,胡穎茂,陳劍波申請人:中國電信股份有限公司