向日鋒,毛宇光
(南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 南京 211106)
隨著信息技術(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è)試的效率。
下面給出一些關(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ì)。
建立事件流圖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í)行的事件集合。
事件處理函數(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。
帶權(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)重值集合。
為了解決大量的測(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è)試用例生成算法。
算法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描述了基于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 П 算法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 為了驗(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。 本文為了測(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模型中所有有向邊的集合。 表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)軟件中的缺陷。 本文首先對(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.2.4 結(jié)合EFG模型生成可執(zhí)行測(cè)試用例算法
3 實(shí)驗(yàn)分析
3.1 實(shí)驗(yàn)環(huán)境
3.2 GUI測(cè)試用例評(píng)判準(zhǔn)則
3.3 實(shí)驗(yàn)數(shù)據(jù)
4 結(jié)束語(yǔ)