国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于WEHG模型的GUI軟件測(cè)試用例生成方法

2018-05-09 08:54:11向日鋒毛宇光
關(guān)鍵詞:測(cè)試用例控件定義

向日鋒,毛宇光

(南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 南京 211106)

0 引 言

隨著信息技術(shù)的飛速發(fā)展,計(jì)算機(jī)軟件深入社會(huì)中的航天、零售、醫(yī)療、金融、汽車等各個(gè)領(lǐng)域。但是,在軟件的設(shè)計(jì)、開發(fā)等階段都可能引入錯(cuò)誤從而導(dǎo)致軟件功能部分或者整體失效,甚至引發(fā)嚴(yán)重的生產(chǎn)安全問(wèn)題,這使得軟件質(zhì)量也不得不受到人們的關(guān)注。

軟件測(cè)試是保證軟件可靠性的重要手段,能夠有效地保證產(chǎn)品的質(zhì)量。GUI測(cè)試是一個(gè)新的測(cè)試研究領(lǐng)域,隨著GUI應(yīng)用的快速發(fā)展,GUI測(cè)試的研究卻相對(duì)滯后,這對(duì)整個(gè)軟件開發(fā)和測(cè)試過(guò)程都有著不可估量的影響。測(cè)試用例生成問(wèn)題是GUI測(cè)試的核心所在,同時(shí),因?yàn)镚UI的圖形界面特點(diǎn)和巨大的狀態(tài)空間,使得測(cè)試評(píng)判的生成也存在諸多難點(diǎn),所以研究針對(duì)GUI測(cè)試特有的測(cè)試用例生成和測(cè)試評(píng)判生成方法有極其重要的意義。

在生成GUI測(cè)試用例的過(guò)程中,有一個(gè)很重要的環(huán)節(jié),就是對(duì)GUI軟件進(jìn)行行為建模。事件流圖(Event Flow Graph, EFG)是一種常見的基于行為模型的GUI測(cè)試方法。EFG模型中節(jié)點(diǎn)表示事件,有向邊表示事件之間的發(fā)生先后關(guān)系,根據(jù)相鄰節(jié)點(diǎn)的序列長(zhǎng)度制定測(cè)試覆蓋準(zhǔn)則,結(jié)合EFG模型生成測(cè)試用例。該模型最早是由Memon[1]在對(duì)GUI測(cè)試的覆蓋率研究時(shí)提出的,建立該模型的目的是為了更好地描述GUI中對(duì)象的事件和事件之間的交互關(guān)系。但是EFG模型只關(guān)注事件以及事件之間的交互,沒(méi)有關(guān)注事件所對(duì)應(yīng)的事件處理函數(shù)的代碼結(jié)構(gòu)以及事件處理函數(shù)之間的代碼依賴關(guān)系,導(dǎo)致生成的測(cè)試用例代碼覆蓋率不高,同時(shí)還會(huì)生成很多的無(wú)效測(cè)試用例。對(duì)于事件體積量不斷增大的GUI軟件,生成的測(cè)試用例數(shù)量呈指數(shù)級(jí)增長(zhǎng),大大制約了GUI軟件的測(cè)試效率[2]。

在EFG模型的基礎(chǔ)上,陳軍成[3-4]等人提出了基于事件處理函數(shù)模型(Event-Hander Function Graph, EHG)的GUI測(cè)試方法。EHG中節(jié)點(diǎn)表示事件處理函數(shù),有向邊表示事件處理函數(shù)被觸發(fā)的先后關(guān)系。根據(jù)事件處理函數(shù)的代碼結(jié)構(gòu)以及事件處理函數(shù)之間的代碼依賴關(guān)系制定測(cè)試覆蓋準(zhǔn)則[5],結(jié)合EHG模型生成測(cè)試用例。EHG和EFG相比較,主要作了2方面的改進(jìn),一方面清晰地表述了代碼交互事件和默認(rèn)事件的關(guān)系,不會(huì)生成沒(méi)有事件組合意義的無(wú)效測(cè)試用例,另一方面EHG模型要比EFG模型小,在控件越多的GUI軟件上尤為明顯。

一些事件對(duì)應(yīng)的事件處理函數(shù)包含了較多的變量,或者事件處理函數(shù)之間的定義-引用對(duì)較多,包含越多這樣的事件的測(cè)試用例就越容易發(fā)現(xiàn)軟件的缺陷?;贓HG模型的測(cè)試方法未考慮到事件的權(quán)重值以及事件之間的依賴關(guān)系,這會(huì)導(dǎo)致在測(cè)試用例集數(shù)量較為龐大的條件下GUI軟件缺陷檢測(cè)的效率降低。本文提出一種基于帶權(quán)重的事件處理函數(shù)模型(Event-Hander Graph based on Weight, WEHG)的GUI測(cè)試方法。WEHG和EHG相比較,主要作了2方面的改進(jìn),一方面根據(jù)事件處理函數(shù)中定義變量和引用變量的數(shù)量和給對(duì)應(yīng)的節(jié)點(diǎn)設(shè)置權(quán)重值,從而保證擁有更多變量的節(jié)點(diǎn)能夠優(yōu)先生成測(cè)試用例,另一方面根據(jù)事件處理函數(shù)的定義-引用對(duì)給節(jié)點(diǎn)之間的依賴關(guān)系設(shè)置依賴值,使依賴度高的節(jié)點(diǎn)能夠優(yōu)先加入測(cè)試序列中。通過(guò)該方法生成具有優(yōu)先級(jí)排序的測(cè)試用例集,在版本更新較快或者窗體界面較多的GUI軟件中能夠生成針對(duì)性更強(qiáng)的測(cè)試用例集,并且優(yōu)先執(zhí)行能更快發(fā)現(xiàn)軟件缺陷的測(cè)試用例,提高軟件測(cè)試的效率。

1 GUI模型

1.1 相關(guān)定義

下面給出一些關(guān)于行為模型的定義,以便理解本文提出的基于WEHG模型的GUI軟件測(cè)試用例生成方法。

定義1GUI狀態(tài)。假設(shè)應(yīng)用程序包括n個(gè)GUI窗體類w1,w2,…,wn和m個(gè)非窗體類靜態(tài)數(shù)據(jù)成員sd1,sd2,…,sdm,窗體類wi的k個(gè)數(shù)據(jù)成員DMwi={mvi1,mvi2,…,mvik} (0

定義2GUI事件。GUI事件是一個(gè)三元組:operator(evtName,precondition,effect),其中,evtName表示GUI事件的名稱及參數(shù),precondition表示GUI事件發(fā)生的前提條件,effect表示GUI事件發(fā)生后的GUI狀態(tài)[6]。

定義3GUI變量。GUI變量包括GUI狀態(tài)變量、GUI控件變量、內(nèi)部變量。其中窗體類數(shù)據(jù)成員和非窗體類靜態(tài)數(shù)據(jù)成員稱為GUI狀態(tài)變量。GUI窗體類中,聲明的GUI控件數(shù)據(jù)成員稱為GUI控件變量,其他非GUI控件變量的GUI狀態(tài)變量稱為GUI內(nèi)部變量[3]。

定義4GUI事件處理函數(shù)。事件處理函數(shù)為一個(gè)三元組,其形式為ehf(se,source,ue)。其中,se表示觸發(fā)事件處理函數(shù)ehf執(zhí)行的代碼交互事件集合。source表示ehf所對(duì)應(yīng)的事件處理函數(shù)的函數(shù)體,利用此信息可以分析事件處理函數(shù)的控制流圖、數(shù)據(jù)流圖等信息。ue表示ehf執(zhí)行時(shí),接收的默認(rèn)事件集合[7]。

定義5GUI事件依賴。GUI事件依賴[5]是一個(gè)三元組:dependent(u,e0,e1),其中,e0和e1表示待測(cè)軟件中的2個(gè)GUI事件,u表示e0和e1之間的依賴度,由e0和e1對(duì)應(yīng)事件處理函數(shù)中的GUI變量決定。

定義6事件處理函數(shù)的定義-引用對(duì)。若事件處理函數(shù)ehf1和事件處理函數(shù)ehf2出現(xiàn)在同一個(gè)測(cè)試用例t中,存在一個(gè)GUI變量v在事件處理函數(shù)ehf1某條語(yǔ)句中被定義,在另一個(gè)事件處理函數(shù)ehf2某條語(yǔ)句中被使用到,那么稱(ehf1,ehf2,v)是測(cè)試用例t中關(guān)于變量v的事件處理函數(shù)的定義-引用對(duì)。

1.2 基于事件流圖EFG的行為模型

建立事件流圖EFG模型的目的是通過(guò)模擬窗體內(nèi)的事件和事件之間的交互關(guān)系來(lái)生成滿足測(cè)試需求的測(cè)試用例集[2,8]。由一個(gè)三元組M=(E,R,I)組成,EFG中節(jié)點(diǎn)的集合E表示GUI中的事件,邊的集合R,即有序?qū)?ex,ey)的集合,其中ex∈E, ey∈E,且(ex,ey)∈R,表示事件執(zhí)行的先后關(guān)系。I?R表示初始狀態(tài)下的事件集合,即剛啟動(dòng)軟件用戶可以執(zhí)行的事件集合。

1.3 基于事件處理函數(shù)EHG的行為模型

事件處理函數(shù)圖EHG模型由一個(gè)二元組EHG(V,E)組成,V表示事件處理函數(shù)集合,E表示V中元素對(duì)的有窮集合,即有序?qū)?nx,ny)的集合,其中nx∈V, ny∈V,且(nx,ny)∈E,則事件處理函數(shù)nx執(zhí)行之后,可以執(zhí)行事件處理函數(shù)ny。

1.4 基于帶權(quán)重的事件處理函數(shù)WEHG的行為模型

帶權(quán)重的事件處理函數(shù)圖WEHG由一個(gè)四元組EHG(V,E,ψ,Ω)組成,V表示事件處理函數(shù)集合,E表示V中元素對(duì)的有窮集合,即有序?qū)?nx,ny)的集合,其中nx∈V, ny∈V,且(nx,ny)∈E,則事件處理函數(shù)nx執(zhí)行之后,可以執(zhí)行事件處理函數(shù)ny。ψ表示圖中所有有向邊的依賴度集合,邊(nx,u,ny)∈ψ表示節(jié)點(diǎn)之間的依賴關(guān)系。u∈N+表示e和e′之間的依賴度,Ω表示事件處理函數(shù)的權(quán)重值集合。

2 測(cè)試用例集的生成方法

2.1 測(cè)試用例生成框架

為了解決大量的測(cè)試用例無(wú)法盡快找到軟件缺陷的問(wèn)題,本文提出一種基于帶權(quán)重的事件處理函數(shù)模型生成GUI軟件測(cè)試用例的方法對(duì)GUI軟件建模。其基本流程如下:

1)利用Windows操作系統(tǒng)提供的微軟用戶界面自動(dòng)化(User Interface Automation, UIA)框架識(shí)別待測(cè)軟件(Application Under Test, AUT)中的所有控件以及控件的屬性,通過(guò)UIA提供的接口驅(qū)動(dòng)AUT執(zhí)行,并生成該AUT的EFG模型。

2)利用Roslyn工具對(duì)AUT源代碼進(jìn)行靜態(tài)分析,獲得所有事件處理函數(shù)之間的定義-引用對(duì),根據(jù)定義-引用對(duì)給所有控件設(shè)置權(quán)重,在控件之間設(shè)置依賴度大小值,生成WEHG模型。

3)利用WEHG模型生成抽象的測(cè)試用例集。

4)將抽象的測(cè)試用例集每一個(gè)測(cè)試用例結(jié)合EFG模型生成完整的測(cè)試用例。

在上述步驟中,WEHG模型中節(jié)點(diǎn)之間的依賴關(guān)系和節(jié)點(diǎn)的權(quán)重值是指導(dǎo)測(cè)試用例生成的重要信息。本文接下來(lái)主要介紹構(gòu)造WEHG模型的算法以及基于WEHG模型的GUI測(cè)試用例生成算法。

2.2 WEHG模型構(gòu)造算法

算法1描述了WEHG模型的構(gòu)造過(guò)程,它的輸入是待測(cè)軟件AUT和EHG模型(V,E),輸出是WEHG模型(V′,E′,ψ,Ω),該算法的事件復(fù)雜度是O(n2),空間復(fù)雜度是O(1)。

算法1構(gòu)造WEHG模型

輸入:AUT,EHG模型(V,E)

輸出:WEHG模型(V′,E′,ψ,W)

1. E′=E

2. V′=V //將EHG模型中節(jié)點(diǎn)和節(jié)點(diǎn)間的關(guān)系傳給WEHG模型

3. W={ }, R={ }, R′={ }

4. for each (e in E) do //給每個(gè)節(jié)點(diǎn)設(shè)置權(quán)重

5. W=getFieldsWritten(e,AUT)

6. R=getFieldsRead(e,AUT)

7. ω=|W∪R|

8. Ω=Ω∪(e,ω)

9. for each (e′ in E) do //給相關(guān)聯(lián)節(jié)點(diǎn)設(shè)置依賴度

10. R′=getFieldsRead(e′,AUT)

11. if (W∩R′≠Φ) then

12. u=|W∪R′|

13. ψ=(e,u,e′)

14. end if

15. end for

16. end for

2.3 WEHG模型生成抽象測(cè)試用例算法

算法2描述了基于WEHG模型生成抽象測(cè)試用例的過(guò)程,它的輸入是WEHG模型(V′,E′,ψ,Ω),抽象測(cè)試用例最大長(zhǎng)度len,每個(gè)頭節(jié)點(diǎn)可產(chǎn)生的測(cè)試用例的最大數(shù)目top,輸出是抽象測(cè)試用例集П。該算法的事件復(fù)雜度是O(n3),空間復(fù)雜度是O(1)。

算法2生成抽象測(cè)試用例

輸入:WEHG模型(V′,E′,ψ,Ω),抽象測(cè)試用例最大長(zhǎng)度len,每個(gè)頭節(jié)點(diǎn)可產(chǎn)生的測(cè)試用例的最大數(shù)目top

輸出:抽象測(cè)試用例集П

1. П={}

/*將所有節(jié)點(diǎn)作為抽象測(cè)試用例第一個(gè)節(jié)點(diǎn)遍歷生成測(cè)試用例*/

2. while Ω≠Φ do

3. e=Max((e,ω),Ω)//優(yōu)先選擇權(quán)重大的節(jié)點(diǎn)

4. Ω=Ω-(e,ω)

5. Queue of abstract test cases П′={}

6. ψ′=ψ

7. while |П′|

8. Sequence of events π=e

9. Event e′=e

10. while |π|

//查找和當(dāng)前節(jié)點(diǎn)依賴度最大的節(jié)點(diǎn)加入當(dāng)前抽象測(cè)試用例中

11. do

12. e′=Max((e,u,e′),ψ′)

13. π=π*e′

14. end while

15. П′=П′∪π

16. end while

17. П=П+П′

18. end while

19. return П

2.4 結(jié)合EFG模型生成可執(zhí)行測(cè)試用例算法

算法3描述了結(jié)合EFG模型和算法2生成的抽象測(cè)試用例集生成可執(zhí)行測(cè)試用例的過(guò)程,它的輸入是EFG模型(E,I,δ)和抽象測(cè)試用例集П,輸出是可執(zhí)行測(cè)試用例集T,該算法的事件復(fù)雜度是O(n2),空間復(fù)雜度是O(1)。

算法3生成可執(zhí)行測(cè)試用例

輸入:EFG模型(E,I,δ),抽象測(cè)試用例集П

輸出:可執(zhí)行測(cè)試用例集T

1. Sequences of events T={}

/*對(duì)于抽象測(cè)試用例集П中所有測(cè)試用例進(jìn)行遍歷生成可執(zhí)行的測(cè)試用例*/

2. for each tc in П do

3. for each Sequence ei,…,ejin tc do

/*在EFG模型中查找當(dāng)前測(cè)試用例中每一個(gè)節(jié)點(diǎn)的可達(dá)路徑*/

4. pick e0from I

5. Path tc=shortestPath(e0,ei)

6. for k=i to j-1 do

7. tc=tc*shortestPath(ek,ek+1)

8. end for

9. end for

10.T=T∪{tc}//將生成的測(cè)試用例加入可執(zhí)行測(cè)試用例集T中

11. end for

12. return T

3 實(shí)驗(yàn)分析

3.1 實(shí)驗(yàn)環(huán)境

為了驗(yàn)證提出的基于WEHG模型的GUI軟件測(cè)試用例生成方法的有效性,本文設(shè)計(jì)并實(shí)現(xiàn)了基于UIA框架和Roslyn的GUI測(cè)試工具[9],其中Roslyn主要是對(duì)窗體上控件的源代碼進(jìn)行靜態(tài)分析,UIA框架可獲得所有控件的詳細(xì)信息,并將控件之間的關(guān)系以樹形圖表示,同時(shí)可使用UIA框架提供的接口驅(qū)動(dòng)被測(cè)軟件的執(zhí)行。

本文實(shí)驗(yàn)選用的待測(cè)軟件是很多GUI測(cè)試研究都選用的Notepad記事本軟件,該軟件是由C#實(shí)現(xiàn)的開放源代碼的程序,雖然控件規(guī)模比較小,但是有很豐富的控件類型,GUI對(duì)象之間的關(guān)系也比較復(fù)雜,具有一定的代表性,適合缺陷注入和測(cè)試。為了充分測(cè)試該方法的缺陷偵測(cè)效率,并且盡量使缺陷的類型多樣化,給該待測(cè)軟件注入了10個(gè)缺陷[10],如表1所示。

表1 缺陷注入列表

注入位置缺陷描述菜單選項(xiàng)FileFile選項(xiàng)展開后缺少SaveAs選項(xiàng)Save選項(xiàng)快捷鍵未設(shè)置Gore>Bush>NaderNader>Gore>Bush菜單選項(xiàng)Edit的子選項(xiàng)Cut選中文字后,剪切操作無(wú)效Font設(shè)置字體設(shè)置無(wú)效About窗口中的Label單詞“Programmed”拼寫錯(cuò)誤About窗口中的OK按鈕OK狀態(tài)變?yōu)镈isable將OK按鈕的功能設(shè)置為Cancel按鈕的功能Help菜單選項(xiàng)的Register子選項(xiàng)期望的Register對(duì)話框沒(méi)有彈出

本實(shí)驗(yàn)全部在Windows 7操作系統(tǒng)上進(jìn)行,硬件平臺(tái)為Intel Core i3-3110 2.4 GHz雙核,4 GB RAM。

3.2 GUI測(cè)試用例評(píng)判準(zhǔn)則

本文為了測(cè)試用例生成方法的需要和對(duì)生成測(cè)試用例性能的評(píng)判,定義2個(gè)GUI測(cè)試用例評(píng)價(jià)準(zhǔn)則。

定義7事件處理函數(shù)覆蓋準(zhǔn)則。程序中的每一個(gè)事件處理函數(shù)對(duì)應(yīng)的事件至少被執(zhí)行一次,即WEHG模型中每個(gè)節(jié)點(diǎn)至少被覆蓋一次。

使用事件處理函數(shù)覆蓋率來(lái)評(píng)判測(cè)試用例集的事件處理函數(shù)覆蓋情況,計(jì)算公式為:

其中,NODE(ST)表示測(cè)試用例集ST所覆蓋的WEHG模型中頂點(diǎn)的集合,NG表示事件WEHG模型中所有頂點(diǎn)的集合。

定義8事件處理函數(shù)交互覆蓋準(zhǔn)則。檢查模型中可能的事件處理函數(shù)之間的交互關(guān)系,要求當(dāng)事件處理函數(shù)nx執(zhí)行后,可執(zhí)行的事件處理函數(shù)ny至少被執(zhí)行一次,即WEHG模型中每條有向邊至少被覆蓋一次。

使用事件處理函數(shù)交互覆蓋率來(lái)評(píng)判測(cè)試用例集的事件處理函數(shù)的定義-引用對(duì)覆蓋情況,計(jì)算公式為:

其中,EDGE(ST)表示測(cè)試用例集ST所覆蓋的WEHG模型中有向邊的集合,EG表示W(wǎng)EHG模型中所有有向邊的集合。

3.3 實(shí)驗(yàn)數(shù)據(jù)

表2給出了待測(cè)軟件Notepad在EFG模型、EHG模型以及WEHG模型中的規(guī)模,此外,通過(guò)Roslyn工具靜態(tài)分析得到待測(cè)軟件Notepad的事件處理函數(shù)定義-引用對(duì)個(gè)數(shù)為55。

表2 Notepad的EFG,EHG和WEHG規(guī)模

模型類型節(jié)點(diǎn)數(shù)/個(gè)邊數(shù)/條EFG34896EHG/WEHG29677

本次實(shí)驗(yàn)基于EFG模型共生成692個(gè)測(cè)試用例,其中有32個(gè)無(wú)效測(cè)試用例,基于EHG模型和WEHG模型各生成386個(gè)測(cè)試用例,其中基于WEHG模型生成的測(cè)試用例做了優(yōu)先級(jí)排序?;?種模型生成的前50個(gè)測(cè)試用例中事件處理函數(shù)的覆蓋情況如圖1所示,可以看到,在執(zhí)行相同數(shù)目的測(cè)試用例的時(shí)候,基于EFG模型生成的測(cè)試用例事件處理函數(shù)覆蓋率最低,基于EHG模型生成的測(cè)試用例事件處理函數(shù)覆蓋率次之,而基于WEHG模型生成的測(cè)試用例對(duì)事件處理函數(shù)的覆蓋效率最高,在執(zhí)行到第43個(gè)測(cè)試用例時(shí)就已經(jīng)覆蓋了所有的事件處理函數(shù)。本次實(shí)驗(yàn)說(shuō)明了基于WEHG模型生成的測(cè)試用例能最快地執(zhí)行所有的事件處理函數(shù),當(dāng)單個(gè)事件處理函數(shù)對(duì)應(yīng)的事件本身有缺陷時(shí),使用本文提出的方法能夠盡快地發(fā)現(xiàn)缺陷。

圖1 前50個(gè)測(cè)試用例事件處理函數(shù)覆蓋率的變化圖

圖2反映了執(zhí)行基于3種模型生成的所有測(cè)試用例中事件處理函數(shù)的定義-引用對(duì)的覆蓋情況,從圖中可以看出,在執(zhí)行相同的測(cè)試用例數(shù)時(shí),基于EFG模型生成的測(cè)試用例覆蓋的事件處理函數(shù)的定義-引用對(duì)數(shù)量最小,EHG模型次之,WEHG模型最大。這是由于建立EFG模型時(shí)未考慮代碼層中不同事件之間同一變量的相互關(guān)系,從而導(dǎo)致生成的測(cè)試用例事件處理函數(shù)的定義-引用對(duì)覆蓋不完全。而EHG模型雖然能夠覆蓋所有的事件處理函數(shù)的定義-引用對(duì),但是沒(méi)有根據(jù)事件處理函數(shù)中變量和定義-引用對(duì)對(duì)模型中節(jié)點(diǎn)和邊設(shè)置權(quán)重值,導(dǎo)致一些定義-引用對(duì)在后部分測(cè)試用例中才能執(zhí)行到。WEHG模型就解決了這個(gè)問(wèn)題,提高了定義-引用對(duì)的覆蓋效率。

圖2 事件處理函數(shù)的定義-引用對(duì)覆蓋數(shù)量的變化圖

圖3反映了執(zhí)行基于3種模型生成的所有測(cè)試用例中發(fā)現(xiàn)缺陷的情況,從圖中可以看出,基于EFG模型生成的測(cè)試用例有一個(gè)注入的缺陷沒(méi)有發(fā)現(xiàn),基于EHG模型和WEHG模型生成的測(cè)試用例發(fā)現(xiàn)了所有注入的缺陷,相比EHG模型,WEHG模型能夠更快地發(fā)現(xiàn)GUI軟件中的缺陷。

圖3 發(fā)現(xiàn)缺陷的數(shù)目變化圖

綜上所述,本文提出的基于WEHG模型的GUI軟件測(cè)試用例生成方法能夠進(jìn)一步提高GUI軟件測(cè)試的效率,降低GUI測(cè)試的開銷。且實(shí)驗(yàn)證明了通過(guò)對(duì)事件處理函數(shù)的事件所對(duì)應(yīng)WEFG模型中節(jié)點(diǎn)設(shè)置權(quán)重,以及事件處理函數(shù)中的定義-引用對(duì)所對(duì)應(yīng)節(jié)點(diǎn)之間的邊設(shè)置依賴度,一方面能夠更快地覆蓋待測(cè)軟件中的事件處理函數(shù)和事件處理函數(shù)中的定義-引用對(duì),另一方面能更快地發(fā)現(xiàn)軟件中的缺陷。

4 結(jié)束語(yǔ)

本文首先對(duì)EHG模型進(jìn)行改進(jìn),通過(guò)對(duì)源代碼的靜態(tài)分析,對(duì)模型中的節(jié)點(diǎn)設(shè)置了權(quán)重,對(duì)邊設(shè)置了依賴度,接著提出了基于WEHG模型生成抽象測(cè)試用例的算法,并結(jié)合EFG模型生成可執(zhí)行測(cè)試用例。最后通過(guò)實(shí)驗(yàn)驗(yàn)證了本文提出的方法能有效提高覆蓋事件處理函數(shù)和事件處理函數(shù)中定義-引用對(duì)的覆蓋效率。在后續(xù)的研究中,將進(jìn)一步提出對(duì)測(cè)試用例預(yù)判信息自動(dòng)化生成的方法,并研究如何在能更多地發(fā)現(xiàn)缺陷的條件下進(jìn)一步降低測(cè)試用例的數(shù)量。

參考文獻(xiàn):

[1] Memon A M. A Comprehensive Framework for Testing Graphical User Interfaces[D]. University of Pittsburgh, 2001.

[2] Dietrich C, Hoffmann M, Lohmann D. Cross-kernel control-flow-graph analysis for event-driven real-time systems[C]// Proceedings of the 16th ACM SIGPLAN/SIGBED Conference on Languages, Compilers and Tools for Embedded Systems. 2015: Article No. 6.

[3] 陳軍成,薛云志,趙琛. 一種基于事件處理函數(shù)的GUI測(cè)試方法[J]. 軟件學(xué)報(bào), 2013,24(12):2830-2842.

[4] 陳軍成,薛云志,陶秋銘,等. 基于事件處理函數(shù)的GUI測(cè)試用例集約簡(jiǎn)技術(shù)[J]. 軟件學(xué)報(bào), 2015,26(8):1871-1885.

[5] Qian Siyou, Jiang Fan. An event interaction structure for GUI test case generation[C]// Proceedings of the 2nd IEEE International Conference on Computer Science and Information Technology. 2009:619-622.

[6] Yuan Xun, Memon A M. Iterative execution-feedback model-directed GUI testing[J]. Information and Software Technology, 2010,52(5):559-575.

[7] Zhao Lei, Gao Dongdong. GUI test case generation based on activity-flow graph[C]// Proceedings of the 7th IEEE International Conference on Software Engineering and Service Science. 2016:738-741.

[8] 路斯瑤,胡飛. 基于事件流圖的用戶界面測(cè)試優(yōu)化[J]. 測(cè)控技術(shù), 2010,29(5):72-76.

[9] Tovinkere V, Voss M. Flow graph designer: A tool for designing and analyzing Intel?threading building blocks flow graphs[C]// Proceedings of the 43rd International Conference on Parallel Processing Workshops. 2014:149-158.

[10] 汪春. 基于事件流圖的GUI自動(dòng)化測(cè)試模型研究[D]. 武漢:華中科技大學(xué), 2007.

[11] 郭晶晶. 基于調(diào)用堆棧的GUI測(cè)試研究[D]. 上海:上海師范大學(xué), 2010.

[12] 江琴,劉琳嵐,蘇曦,等. 基于事件權(quán)重的GUI測(cè)試路徑生成方法[J]. 計(jì)算機(jī)應(yīng)用, 2009,29(5):1382-1384.

[13] Brooks P A, Memon A M. Automated GUI testing guided by usage profiles[C]// Proceedings of the 22nd IEEE/ACM International Conference on Automated Software Engineering. 2007:333-342.

[14] Suman, Chhillar R S. Generate optimized GUI test sequence using GA and fuzzy logic[J]. International Journal of Computer Applications, 2014,102(12):8-11.

[15] 于冬琦,彭鑫,趙文耘. 使用抽象語(yǔ)法樹和靜態(tài)分析的克隆代碼自動(dòng)重構(gòu)方法[J]. 小型微型計(jì)算機(jī)系統(tǒng), 2009,30(9):1752-1760.

[16] He Wei, Wang Yueke, Xing Kefei, et al. Error-rate estimation based on multi-signal flow graph model and accelerated radiation tests[J]. PLoS One, 2016,11(9), doi: 10.1371/journal.pone.0161378.

猜你喜歡
測(cè)試用例控件定義
基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
基于混合遺傳算法的回歸測(cè)試用例集最小化研究
關(guān)于.net控件數(shù)組的探討
軟件(2018年7期)2018-08-13 09:44:42
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
基于依賴結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
修辭學(xué)的重大定義
山的定義
就這樣玩會(huì)VBA中常見的自定義控件
電腦迷(2012年24期)2012-04-29 00:44:03
軟件回歸測(cè)試用例選取方法研究
教你正確用(十七)
即墨市| 塔河县| 华坪县| 余庆县| 新密市| 额济纳旗| 若尔盖县| 德清县| 赫章县| 鲜城| 松原市| 微山县| 博罗县| 泽库县| 九龙城区| 扶沟县| 泊头市| 沙湾县| 青海省| 焉耆| 沂南县| 宜川县| 泾阳县| 德阳市| 郴州市| 阳城县| 普格县| 扎鲁特旗| 乐都县| 灵山县| 景德镇市| 张家口市| 岑巩县| 芜湖市| 玛沁县| 平湖市| 同德县| 香港 | 上犹县| 松原市| 偃师市|