午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種基于事件響應(yīng)函數(shù)樹的gui軟件測試用例生成方法

文檔序號:9910937閱讀:589來源:國知局
一種基于事件響應(yīng)函數(shù)樹的gui軟件測試用例生成方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種GUI軟件測試用例生成方法,特別是一種基于事件響應(yīng)函數(shù)樹模型的GUI軟件測試用例生成方法。該方法屬于軟件測試技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]圖形用戶界面(Graphical User Interface,⑶I)的使用在當(dāng)今的軟件系統(tǒng)中變得越來越普遍,通常,在一個軟件系統(tǒng)中,GUI部分占據(jù)一半以上的代碼,因此軟件系統(tǒng)GUI部分的正確性是確保整個系統(tǒng)操作正確的關(guān)鍵。為了確保軟件GUI部分的正確性,一個較為常見的方式就是GUI測試。GUI軟件測試用例的獲取一般都是很耗費(fèi)資源的,涉及到大量的人力參與。盡管一些研究者提出了一些GUI測試用例自動生成方法,但是由于各種原因,在現(xiàn)實(shí)中測試用例的生成使用的依舊是錄制/回放工具。在使用這些工具時(shí),首先測試人員與待測軟件進(jìn)行交互,然后工具的錄制模塊會把用戶的這些交互記錄下來并保存到腳本文件中,最后工具的回放模塊能夠在無人干涉的情況下運(yùn)行這些腳本文件。一般情況下,使用這些錄制回放工具錄制一個具有50個事件的測試用例就需要花費(fèi)20-30分鐘,由于花費(fèi)的時(shí)間比較多,測試人員一般只會為一個應(yīng)用軟件生成100-300個測試用例,因此每一個測試用例都是十分寶貴的。同時(shí),由于后期界面的變動,還會導(dǎo)致測試用例失效,需要進(jìn)行修復(fù),有時(shí)候修復(fù)一個測試用例反而比重新錄制這個測試用例花費(fèi)更多的時(shí)間。
[0003]近年來,GUI測試用例的生成受到了許多學(xué)者的關(guān)注,并提出了各種方法,其中最為出名的是國外的研究者Atif Memon及其團(tuán)隊(duì),他們提出了一種事件流圖(Event FlowGraph,EFG)模型,在EFG中,事件代表節(jié)點(diǎn),事件之間的可達(dá)關(guān)系代表邊。從節(jié)點(diǎn)nx到節(jié)點(diǎn)ny的邊,表示節(jié)點(diǎn)ny所代表的事件可以在節(jié)點(diǎn)nx所代表的事件執(zhí)行之后立即執(zhí)行。
[0004]如圖1所示,是一個微軟記事本軟件,其中E1-E8表示了一些可以進(jìn)行的一些操作,比如E1R表單擊“文件”菜單,E8表示單擊“取消”按鈕。圖2表示了由這些事件所組成的EFG,圖中節(jié)點(diǎn)表示各個事件,邊代表事件之間的先后關(guān)系。當(dāng)然這里為了顯示方便,只選取了其中標(biāo)出的8個事件,事實(shí)上,一個完整的EFG應(yīng)該包括GUI軟件中所有的事件。在這個局部EFG中,事件E8(點(diǎn)擊“取消”按鈕)可以在事件E7(點(diǎn)擊“查找下一個(F)”按鈕)執(zhí)行之后立即執(zhí)行,事件E2(點(diǎn)擊“新建”菜單)、事件E4(點(diǎn)擊“換行”菜單)等可以在它自己之后立即執(zhí)行,但是事件E7(點(diǎn)擊“查找下一個(F)”按鈕)不能在事件E8(點(diǎn)擊“取消”按鈕)執(zhí)行之后立即執(zhí)行,因?yàn)槭录﨓8會關(guān)閉查找對話框,使“查找下一個(F)”按鈕對用戶不可見。
[0005]最后,通過圖論的方法,遍歷EFG圖即可生成相應(yīng)的測試用例,根據(jù)其所覆蓋的事件個數(shù)可以將其分為2-way(覆蓋2個事件),3-way"_mult1-way的測試用例?;谶@種模型,Memon團(tuán)隊(duì)開發(fā)了一套名叫“GUITAR”的工具套件,專門用于GUI測試用例的生成。
[0006]但是這種方法也存在很大的不足,一方面由于EFG模型的復(fù)雜性,隨著測試用例所覆蓋的事件個數(shù)的增長,測試用例的規(guī)模將呈指數(shù)增長,生成2-way,3-way的測試用例規(guī)模已很龐大,生成mult1-way甚至4-way的測試用例都將變得不可能;另一方面EFG模型屬于一種黑盒模型,沒有結(jié)合源代碼所能提供的信息,進(jìn)行測試用例的精簡比較困難。

【發(fā)明內(nèi)容】

[0007]為了彌補(bǔ)上述模型的不足,本發(fā)明提出了一種事件響應(yīng)函數(shù)樹的模型,這一模型屬于EFG模型的子集,一方面簡化了 EFG模型,另一方面結(jié)合了源碼信息,為測試用例的精簡提供了幫助。
[0008]根據(jù)本發(fā)明的一個方面,提供了一種基于事件響應(yīng)函數(shù)樹模型的GUI軟件測試用例生成方法,以克服現(xiàn)有方法中模型復(fù)雜且無法結(jié)合源碼對測試用例進(jìn)行精簡的缺點(diǎn),提供一種基于事件響應(yīng)函數(shù)樹模型的GUI軟件測試用例生成方法。
[0009]根據(jù)本發(fā)明的一個進(jìn)一步的方面,提供了一種基于事件響應(yīng)函數(shù)樹模型的GUI軟件測試用例生成方法,包括:首先提取GUI軟件的事件響應(yīng)函數(shù),然后將事件響應(yīng)函數(shù)構(gòu)造成樹形模型,再遍歷此樹形模型生成測試用例,其中,由于事件響應(yīng)函數(shù)結(jié)合了用戶操作與底層代碼,因此能夠?yàn)闇y試用例的精簡提供更多的信息。
[0010]根據(jù)本發(fā)明的一個更具體的方面,提供了一種基于事件響應(yīng)函數(shù)樹模型的GUI軟件測試用例生成方法,包括:
[0011]第一步分析程序源代碼,構(gòu)造函數(shù)調(diào)用圖。通過分析GUI軟件源代碼,可以提取出各個函數(shù)之間的相互調(diào)用圖,GUI軟件一般用面向?qū)ο蟮木幊陶Z言編寫而成,這里的函數(shù)調(diào)用圖表示各個“類中”方法以及“類間”方法之間的相互調(diào)用關(guān)系圖。
[0012]第二步根據(jù)函數(shù)調(diào)用圖,提取事件響應(yīng)函數(shù),并錄制事件響應(yīng)函數(shù)相應(yīng)的測試腳本。事件響應(yīng)函數(shù)能夠連接用戶操作和程序底層代碼,用錄制的事件響應(yīng)函數(shù)測試腳本來模擬用戶的操作。
[0013]第三步利用函數(shù)調(diào)用圖,分析事件響應(yīng)函數(shù)主從關(guān)系,構(gòu)造事件響應(yīng)函數(shù)樹。一些事件響應(yīng)函數(shù)在其他事件響應(yīng)函數(shù)觸發(fā)之后才能觸發(fā),通過函數(shù)調(diào)用圖,可以分析出事件響應(yīng)函數(shù)之間的先后順序,從而能夠提供相應(yīng)信息,有利于構(gòu)造有效的測試用例。
[0014]第四步遍歷事件響應(yīng)函數(shù)樹,組合測試腳本,生成測試用例。通過遍歷事件響應(yīng)函數(shù)樹,可以獲得所有合法的測試用例。這樣的遍歷方法有很多種,其中最簡單且最容易實(shí)現(xiàn)的一個遍歷方法是:首先找出所有從根節(jié)點(diǎn)出發(fā)到葉子結(jié)點(diǎn)截止的路徑,根據(jù)這些路徑,按照事件響應(yīng)函數(shù)的先后順序,依次組合所錄制的相應(yīng)操作腳本,最終組成測試用例。
[0015]本發(fā)明與現(xiàn)有方法相比較的優(yōu)點(diǎn)在于:本發(fā)明所提出的模型簡化了EFG模型,使模型更加簡明,并且能夠結(jié)合源碼信息,為測試用例的精簡提供參考信息,提高測試效率,方法簡單,容易實(shí)現(xiàn)。
【附圖說明】
[0016]圖1用于說明本發(fā)明的實(shí)施例的一個示例性的Windows記事本程序相關(guān)操作示例。
[0017]圖2用于說明本發(fā)明的實(shí)施例的一個示例性的記事本程序EFG模型示例。
[0018]圖3用于說明本發(fā)明的實(shí)施例的一個示例性的Java編寫的GUI軟件函數(shù)調(diào)用圖示例。
[0019]圖4用于說明本發(fā)明的實(shí)施例的一個示例性的Windows記事本程序事件響應(yīng)函數(shù)樹示例。
[°02°]圖5用于說明本發(fā)明的實(shí)施例的一個示例性的TerpPaint界面截圖。[0021 ]圖6是根據(jù)本發(fā)明的一個實(shí)施例的GUI軟件測試用例生成方法的流程框圖。
[0022]圖7為根據(jù)本發(fā)明的一個實(shí)施例的GUI軟件測試用例生成方法中利用BCEL模塊提取的TerpPaint函數(shù)調(diào)用圖局部。
[0023]圖8為根據(jù)本發(fā)明的一個實(shí)施例的TerpPaint整體函數(shù)調(diào)用圖。
[0024I圖9是圖8所示的TerpPaint部分事件響應(yīng)函數(shù)列表示例。
[0025]圖10是應(yīng)用根據(jù)本發(fā)明的一個實(shí)施例的⑶I軟件測試用例生成方法的實(shí)例所構(gòu)造的TerpPaint事件響應(yīng)函數(shù)樹。
[0026]圖11顯示了根據(jù)本發(fā)明的方法與其他方法的效果對比。
[0027]圖12是TerpPaint部分結(jié)果測試報(bào)告。
【具體實(shí)施方式】
[0028]在具體描述之前,先確定相關(guān)概念。
[0029]函數(shù)調(diào)用圖:一個軟件的函數(shù)調(diào)用圖為一個有向圖,其節(jié)點(diǎn)為全體函數(shù),其邊為函數(shù)之間的調(diào)用關(guān)系,既包含“類內(nèi)”函數(shù)調(diào)用,也包括“類間”函數(shù)調(diào)用,如果函數(shù)A調(diào)用了函數(shù)B,則有一條由A指向B的邊。如圖3所示,為一個用Java語言編寫的GUI軟件函數(shù)調(diào)用圖的一部分,其中節(jié)點(diǎn)“FiIeMenuUti1.exit”到節(jié)點(diǎn)“Notepad, exit”的邊為“類間”函數(shù)調(diào)用,節(jié)點(diǎn) “FiIeMenuUti1.exit” 到節(jié)點(diǎn) “FiIeMenuUti1.conf irmExit” 的邊為“類內(nèi)”函數(shù)調(diào)用。
[0030]事件響應(yīng)函數(shù):事件響應(yīng)函數(shù)是GUI軟件中一種特殊的函數(shù),它連接了用戶操作與內(nèi)部代碼。比如當(dāng)用戶點(diǎn)擊某個按鈕時(shí),系統(tǒng)會自動調(diào)用事件響應(yīng)函數(shù),然后執(zhí)行一系列操作。以圖3為例,“MainUI$l.act1nPerformed”即為一個事件響應(yīng)函數(shù),當(dāng)用戶點(diǎn)擊⑶I中的exit菜單時(shí),系統(tǒng)會自動調(diào)用此函數(shù),然后依次執(zhí)行圖中的其他函數(shù)。
[0031]事件響應(yīng)函數(shù)樹:當(dāng)GUI軟件剛剛打開時(shí),并不是所有的事件響應(yīng)函數(shù)(嚴(yán)格說來,應(yīng)為按鈕或菜單等組件,但由于每一個按鈕或菜單都與一個事件響應(yīng)函數(shù)對應(yīng),為了方便,這里直接用事件響應(yīng)函數(shù)代替)都對用戶直接可見,有些事件響應(yīng)函數(shù)需要在另外一些事件響應(yīng)函數(shù)觸發(fā)之后才對用戶可見,以GUI軟件所有的事件響應(yīng)函數(shù)作為結(jié)點(diǎn),以事件響應(yīng)函數(shù)之間觸發(fā)關(guān)系作為邊,可以構(gòu)造一棵事件響應(yīng)函數(shù)樹。為了與EFG模型進(jìn)行比較,仍以微軟的記事本程序?yàn)槔M(jìn)行介紹。如圖4所示,同圖2—樣對記事本程序進(jìn)行了抽象,其中E0表示程序的啟動,E1-E8代表相應(yīng)的相應(yīng)事件所對應(yīng)的事件響應(yīng)函數(shù),E7(點(diǎn)擊“查找下一個(F)”所對應(yīng)的事件響應(yīng)函數(shù))與E8(點(diǎn)擊“取消”所對應(yīng)的事件響應(yīng)函數(shù))必須在點(diǎn)擊“查找”之后才能點(diǎn)擊。圖4表示了記事本程序事件響應(yīng)函數(shù)的一部分。
[0032]TerpPaint是一款基于Java語言編寫的畫圖軟件,其下載地址為:http://www.cs.umd.edu/~atif/Benchmarks/UMD2005b.html,圖5為其軟件界面截圖。這款軟件仿照Windows系統(tǒng)下的“畫圖”程序,實(shí)現(xiàn)了各種基本的畫圖功能,并且添加了一些常用的特效,能夠幫助使用者完成簡單圖像的繪制。該軟件為一款跨平臺軟件,可以運(yùn)行于Windows、Linux和Mac OS等多個平臺上。TerpPaint總共包含16個窗
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1