高秀慧,高建華
(上海師范大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系,上海200234)
基于事件交互圖的算法與研究
高秀慧,高建華
(上海師范大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系,上海200234)
圖形用戶界面的質(zhì)量直接影響整個(gè)軟件系統(tǒng)的有效性和實(shí)用性,一般采用提取模型的方法對圖形用戶界面進(jìn)行測試,目前常用的模型為事件流圖和事件交互圖,但是事件流圖轉(zhuǎn)換成事件交互圖的算法較為復(fù)雜,為此,提出一種轉(zhuǎn)換算法,對圖形用戶界面事件進(jìn)行明確劃分,利用模態(tài)窗口事件的特殊性優(yōu)化原有算法。測試實(shí)例結(jié)果表明,該算法可用于圖形用戶界面,且與Memon算法相比,能更高效地獲得更準(zhǔn)確的數(shù)據(jù)。
圖形用戶界面;事件交互分類;事件流圖;事件交互圖;測試實(shí)例
圖形用戶界面(Graphical User Interface,GUI)的質(zhì)量直接影響了整個(gè)軟件系統(tǒng)的有效性和實(shí)用性,所以圖形用戶界面的測試一直是研究熱點(diǎn)[1], GUI測試最大的難點(diǎn)在于生成正確的事件序列(一個(gè)事件序列代表一個(gè)用戶交互,即用戶的一個(gè)行為——例如點(diǎn)擊鼠標(biāo)按鈕、觸發(fā)應(yīng)用程序的事件、應(yīng)用程序通過執(zhí)行對應(yīng)代碼響應(yīng)事件),因此用戶的交互空間是無限的。解決此問題最有效的方法是通過算法自動(dòng)從GUI上提取模型,該模型可運(yùn)用圖遍歷算法枚舉訪問過的事件,生成測試集(一個(gè)測試對應(yīng)于一組事件序列,路徑即事件序列,測試長度即該模型的事件數(shù)目)。當(dāng)然,模型的提取并不是精確提取,生成的測試集還會(huì)存在不可行的問題,可以通過定義新的測試覆蓋準(zhǔn)則和優(yōu)化測試集[2]來提高測試有效性。GUI測試可以通過基于模型的方法系統(tǒng)生成事件序列,再對測試集進(jìn)行優(yōu)化。基于模型的算法是將代表事件的節(jié)點(diǎn)和代表事件序列的路徑模擬成流程圖,路徑上的事件序列可以用于生成GUI測試集。到目前為止,對于GUI應(yīng)用程序的測試,國內(nèi)外的一些研究學(xué)者已取得了一些成果,這些學(xué)者利用GUI應(yīng)用程序基于事件的特點(diǎn)來開發(fā)GUI測試模型。其中,最具有影響力的是Atif M.Memon,長期以來在GUI測試用例生成策略方面做了諸多研究[3-4],開發(fā)出最簡單有效的基于事件的GUI測試方法是事件流圖(Event Flow Graph,EFG)[5]和事件序列圖[6](Event Sequence Graph,ESG)。這2個(gè)方法都以事件為中心[7],EFG 可 以 使 用 GUI抓 取 技 術(shù) (GUI ripping)[8]和逆向工程技術(shù)[9](reverse engineering)自動(dòng)構(gòu)建。在提取后EFG轉(zhuǎn)換成EIG的過程中,文獻(xiàn)[10]算法對事件類型的分類不夠明確,文獻(xiàn)[11]算法適用于只有單個(gè)模態(tài)窗口的GUI應(yīng)用程序,并且生成的事件交互圖還不夠精簡。
本文為了優(yōu)化EFG轉(zhuǎn)換成EIG的轉(zhuǎn)換算法,以及分類GUI事件的交互關(guān)系,通過為圖形用戶界面建立一個(gè)事件交互模型的方法,對原有算法獲得的數(shù)據(jù)結(jié)果及轉(zhuǎn)換原理進(jìn)行分析,通過對模態(tài)窗口中的事件進(jìn)行分類選擇來優(yōu)化算法,提出一種事件流圖轉(zhuǎn)換成事件交互圖的算法,并且利用事件之間的交互關(guān)系,總結(jié)6種可能會(huì)引起測試集終止的事件交互類型。
用戶通過執(zhí)行某些部件上的事件,例如點(diǎn)擊按鈕、打開菜單項(xiàng)或者填充數(shù)據(jù)等行為與GUI交互。圖1(a)為簡單例舉的GUI應(yīng)用程序,GUI應(yīng)用程序共有10個(gè)事件。點(diǎn)擊按鈕“編輯”,打開下拉菜單選項(xiàng)共有 3個(gè)事件,分別為“保存”、“另存為”、“替換”;點(diǎn)擊“替換”,彈出替換窗口,共有3個(gè)事件,分別為“文件名為”、“確定”、“取消”,此時(shí)Demo窗口仍能使用;點(diǎn)擊“另存為”,彈出相應(yīng)對話框窗口,共有3個(gè)事件,分別為“查找內(nèi)容”、“替換為”、“關(guān)閉”,此時(shí)隱藏了Demo窗口(即Demo窗口內(nèi)4個(gè)事件不能使用),點(diǎn)擊“取消”,退出對話框并恢復(fù)到Demo窗口,箭頭表示2張圖之間的轉(zhuǎn)換。

圖1 圖形用戶界面實(shí)例和對應(yīng)的模型
2.1 GUI模型
在許多復(fù)雜的以事件為中心的模型中,改進(jìn)EFG可以得到更多模型:(1)事件交互模型[10](Event Interaction Graph,EIG)代表了系統(tǒng)中的一組事件更實(shí)用、更具擴(kuò)展性;(2)事件語義交互模型[12](Event Semantic Interaction Graph,ESIG)模擬了一組“事件語義交互”關(guān)系,代表在語義層面上的一組相互影響的事件。本文主要介紹EFG模型和EIG模型,提出一種EFG到EIG的改進(jìn)算法,通過實(shí)驗(yàn)證明算法的優(yōu)越性。
2.1.1 事件流圖
事件流圖(Event Flow Graph,EFG)是一個(gè)有向圖,模擬所有在GUI上可能被執(zhí)行的(大量)事件交互,它被直接用于快速測試,抽象地模擬事件序列。在EFG中,節(jié)點(diǎn)表示GUI中的事件,邊代表事件間的關(guān)系。圖1(b)為實(shí)例對應(yīng)的事件流圖(EFG),即GUI上用戶可能執(zhí)行的所有交互的描述,可以用于生成GUI測試集。從節(jié)點(diǎn)nx到節(jié)點(diǎn)ny的一條邊意味著ny代表的事件可能直接在nx代表的事件之后被執(zhí)行,這種關(guān)系稱之為“跟蹤”。事件流圖中共有10個(gè)事件組成,10個(gè)節(jié)點(diǎn)代表10個(gè)事件,每條邊代表“跟蹤”關(guān)系。舉例,事件“另存為”跟蹤“編輯”,“編輯”為初始事件,即用戶最初的行為。
事件流圖是一個(gè)有向圖,箭頭對應(yīng)的路徑不可逆,對事件流圖定義如下:
定義1 EFG代表GUI上事件節(jié)點(diǎn)的集合N和邊的一組有序?qū)?(ex,ey)的集合E,其中, {ex,ey}?N,表示EFG中的有向邊,當(dāng)且僅當(dāng)ey在ex之后執(zhí)行,則(ex,ey)∈E。
舉例:(編輯,保存),(另存為,文件名為),(替換為,替換為)。
事件流路徑代表GUI上可以執(zhí)行的事件序列,對事件流路徑定義如下:
定義2 當(dāng)且僅當(dāng)存在一條(可能為空的)節(jié)點(diǎn)序列(nj,nj+1,…,nj+k),{(nx,nj),(nj+k,ny)}?E, {(nj+i,nj+i+1),0≤i≤(k-1)}?E,則從節(jié)點(diǎn)nx到節(jié)點(diǎn)ny存在一條事件流路徑。
舉例:<保存;編輯;另存為;取消>和<文件名為(1);取消;編輯;保存;編輯;替換>。
EFG的節(jié)點(diǎn)由不同的語義和語法用于構(gòu)建GUI,對GUI事件類型的定義如下:
定義3 可達(dá)事件(reachability event),代表用于打開窗口或菜單的事件。打開菜單事件用菱形表示,如圖1(b)中的{編輯};打開窗口事件用雙圈節(jié)點(diǎn)表示,如{另存為,替換}。其中,打開窗口事件可分為模態(tài)窗口的限制性聚焦事件和非模態(tài)窗口的非限制性聚焦事件。
定義4 模態(tài)窗口(modal window),代表限制性聚焦事件。當(dāng)打開窗口時(shí),用戶的交互限制在本窗口內(nèi),必須先操作窗口內(nèi)的事件,直至關(guān)閉當(dāng)前窗口方可操作其他事件。模態(tài)窗口事件用雙圈表示,如圖1(b)中{另存為}打開的窗口。
定義5 非模態(tài)窗口(modeless window),代表非限制性聚焦事件。當(dāng)打開窗口時(shí),用戶的交互沒有限制在本窗口內(nèi),仍可以操作其他事件。非模態(tài)窗口事件用雙圈,內(nèi)圈為虛線表示,如圖1(b)中{替換}打開的窗口。
定義6 終止事件(termination event),代表操作GUI結(jié)構(gòu)的事件,一般指用于關(guān)閉窗口的事件。終止事件用矩形表示,如圖1(b)中{確定,取消,關(guān)閉}事件。
定義7 系統(tǒng)交互事件(system-interaction event),代表不會(huì)操作GUI結(jié)構(gòu)的事件,一般指與底層代碼進(jìn)行交互,除可達(dá)事件和終止事件之外的事件。系統(tǒng)交互事件用圓圈表示,如圖1(b)中{保存,文件名為,查找內(nèi)容,替換為}事件。
2.1.2 事件交互圖
在一個(gè)典型的GUI中,20%~25%的事件被用來操作GUI結(jié)構(gòu),包括打開和關(guān)閉窗口或菜單,大部分事件與底層代碼進(jìn)行交互。打開和關(guān)閉窗口或菜單的事件代碼較為直觀,不與其他事件代碼進(jìn)行交互,因此,發(fā)現(xiàn)故障的幾率較低。事件交互圖(Event Interaction Graph,EIG)模型通過移除這些不常用的事件從而簡化EFG模型,一般移除的事件類型為打開和關(guān)閉菜單事件、打開和關(guān)閉非模態(tài)窗口事件、打開模態(tài)窗口事件。
圖2為實(shí)例對應(yīng)的事件交互圖(EIG),雙向箭頭表示事件之間可以互相“跟蹤”,虛線代表僅單向“跟蹤”。EIG模型中不包含可達(dá)事件和非模態(tài)窗口的終止事件。舉例,EIG中不包含“編輯”、“另存為”、“替換”、“關(guān)閉”4個(gè)節(jié)點(diǎn),簡化后的模型更簡單更具有效性。所以EIG模型是由終止事件和系統(tǒng)交互事件組成,其中終止事件僅為關(guān)閉模態(tài)窗口事件。

圖2 圖形用戶界面實(shí)例對應(yīng)的事件交互圖
EFG可以通過算法自動(dòng)轉(zhuǎn)換成 EIG。Atif Memon提出的EFG到EIG的算法利用了圖重構(gòu)規(guī)則:(1)移除代表打開菜單事件“編輯”;(2)用(ex,ey)取代每一條與節(jié)點(diǎn)“編輯”相關(guān)的邊(ex,編輯)和(編輯,ey);(3)對于所有ey,刪除所有邊(編輯,ey)并儲(chǔ)存映射“ey→(編輯,ey)”用于測試,最后通過圖遍歷算法枚舉訪問過的節(jié)點(diǎn),生成測試集。豐凱提出的EFG到EIG的算法[11]步驟如下:(1)移除EFG中所有的邊(ex,ey);(2)刪除所有可以打開窗口或菜單的節(jié)點(diǎn)ex;(3)對剩余的節(jié)點(diǎn)任意選擇其中2個(gè)進(jìn)行有序排列,重新生成邊(ex,ey);(4)對于所有生成的邊,判斷假如ex的事件類型是模態(tài)窗口中的系統(tǒng)交互事件,ey不是模態(tài)窗口中的系統(tǒng)交互事件或終止事件,則去掉這條邊。
2.1.3 事件語義交互圖
在GUI上使用自動(dòng)化測試集回放工具可以執(zhí)行冒煙測試[13]。在執(zhí)行測試集時(shí),收集GUI部件運(yùn)行時(shí)的狀態(tài),用于自動(dòng)識(shí)別成對事件間的“事件語義交互”關(guān)系(Event Semantic Interaction,ESI)。這種關(guān)系捕捉了一個(gè)GUI事件如何改變軟件的狀態(tài),從而導(dǎo)致影響其他事件的執(zhí)行。ESI關(guān)系被用于自動(dòng)構(gòu)建新的GUI模型,稱之為事件語義交互圖(Event Semantic Interaction Graph,ESIG)。ESIG中的節(jié)點(diǎn)代表事件,從節(jié)點(diǎn)nx到節(jié)點(diǎn)ny的有向邊表示nx代表的事件與ny代表的事件之間有ESI關(guān)系。ESIG被用于自動(dòng)生成測試集,這些測試集有一個(gè)重要特性——每個(gè)事件與后續(xù)的事件是ESI關(guān)系。
本文提出了一種新的EFG到EIG的算法,文獻(xiàn)[10]算法轉(zhuǎn)換中對事件類型的分類不夠明確,算法較為復(fù)雜。文獻(xiàn)[11]算法適用于只有單個(gè)模態(tài)窗口的GUI應(yīng)用程序,因?yàn)楫?dāng)ex事件類型為模態(tài)窗口中的系統(tǒng)交互事件時(shí),沒有考慮到多個(gè)模態(tài)窗口之間也需要移除ey是模態(tài)窗口中的系統(tǒng)交互事件或終止事件所對應(yīng)的邊;另外,對于非模態(tài)窗口中的終止事件也應(yīng)該刪去,這些事件在檢測系統(tǒng)故障時(shí)發(fā)現(xiàn)故障的概率較低。所以,本文算法由終止事件和系統(tǒng)交互事件組成,其中終止事件僅為關(guān)閉模態(tài)窗口事件,此算法更高效地將EFG轉(zhuǎn)換成EIG。
本文算法主要從 EIG的定義出發(fā),從節(jié)點(diǎn) nx(代表ex)到節(jié)點(diǎn)ny(代表ey)的一條邊意味著ex與ey交互,根據(jù)事件間的交互關(guān)系創(chuàng)建模型。從EFG轉(zhuǎn)換成EIG的算法如下:

本文算法的描述如下:
第1~3行:初始化階段,由之前生成的EFG模型作為輸入值,N作為一組節(jié)點(diǎn)。N為EIG節(jié)點(diǎn)集合,初始值為N;E為EIG邊的集合,初始值為空集。
第4~6行:遍歷EFG中的所有節(jié)點(diǎn),從節(jié)點(diǎn)集合中去掉可達(dá)事件和非模態(tài)窗口中的終止事件(打開(關(guān)閉)窗口或菜單的事件)。
第7~12行:遍歷EIG中的所有節(jié)點(diǎn),假如nx的事件類型不是模態(tài)窗口中的系統(tǒng)交互事件,則將所有新的邊(nx,ny)添加至EIG的邊集合。
第8~11行:假如nx的事件類型是模態(tài)窗口中的系統(tǒng)交互事件,則判斷ny事件類型是否是同一個(gè)模態(tài)窗口中的事件,即判斷ny事件類型是否是同一模態(tài)窗口中的系統(tǒng)交互事件或終止事件,如果判斷為同一個(gè)模態(tài)窗口的事件,則將所有新的邊(nx,ny)添加至EIG的邊集合;如果判斷不符合添加要求,則會(huì)退到for循環(huán),進(jìn)行下一個(gè)ny判斷。由于模態(tài)窗口的聚焦性定義,模態(tài)窗口中的系統(tǒng)交互事件只能和同一個(gè)窗口的事件交互,不能和其他窗口及其他菜單內(nèi)的事件進(jìn)行交互。
最后(N,E)為EIG的節(jié)點(diǎn)集合和邊集合,從算法描述中可以發(fā)現(xiàn)EIG的事件比EFG事件少,但是模型的路徑不一定會(huì)減少,主要原因在于系統(tǒng)交互事件之間的交互沒有減少。
算法步驟如下:
步驟1 遍歷EFG中所有節(jié)點(diǎn),去掉可達(dá)事件和非模態(tài)窗口中的終止事件;
步驟2 判斷nx的事件類型,若不是模態(tài)窗口中的系統(tǒng)交互事件,則生成(nx,ny);
步驟3 若nx是模態(tài)窗口中的系統(tǒng)交互事件,則判斷ny的事件類型;
步驟4 若ny是同一個(gè)模態(tài)窗口中的事件,則生成(nx,ny);否則,繼續(xù)循環(huán);
步驟5 對步驟1中去掉的可達(dá)事件和非模態(tài)窗口中的終止事件進(jìn)行映射,(可達(dá)事件,ny)、(終止事件,ny)用于測試階段執(zhí)行。
本文的優(yōu)越性體現(xiàn)在:(1)文獻(xiàn)[10]算法較為復(fù)雜,本文通過對GUI事件更詳細(xì)的劃分進(jìn)行算法改進(jìn),過程更簡單,不容易出錯(cuò);(2)對于文獻(xiàn)[11]算法而言,本文算法可以適用于多個(gè)模態(tài)窗口的情況;不用移除EFG和算法中生成的不正確的邊;去掉非模態(tài)窗口中的終止事件,不影響測試集的生成但轉(zhuǎn)換的EIG圖更簡單。所以,本文算法比之前提出的算法更高效。
實(shí)驗(yàn)選用了《一體化信用卡業(yè)務(wù)系統(tǒng)軟件》系統(tǒng),這款系統(tǒng)由上海師范大學(xué)與上海華騰軟件系統(tǒng)有限公司共同合作設(shè)計(jì),采用模塊化設(shè)計(jì)思想,每項(xiàng)任務(wù)用一個(gè)功能模塊支持,功能模塊間相互獨(dú)立。實(shí)驗(yàn)選用了其中最重要的客戶管理模塊,簡化功能模塊,提取重要功能點(diǎn)作為實(shí)驗(yàn)部分。
4.1 實(shí)驗(yàn)準(zhǔn)備
圖3為一個(gè)簡單的圖形用戶界面,“客戶管理模塊”事件共有4個(gè)子事件,分別為“客余額查詢”、“客戶資料更新”、“客戶添加賬戶”、“下一步”。 “客戶余額查詢”為非模態(tài)窗口,共有3個(gè)子事件,分別為“輸入密碼”、“查看”、“更新”。 “客戶資料更新”為模態(tài)窗口,共有4個(gè)子事件,分別為“身份證號(hào)”、“出生日期”、“更新”、“取消”。 “客戶添加賬戶”為模態(tài)窗口,共有3個(gè)子事件,分別為“添加賬戶”、“添加”、“關(guān)閉”。

圖3 客戶管理模塊簡單舉例
4.2 事件流圖實(shí)例
圖4為客戶管理模塊對應(yīng)的事件流圖(EFG),表1為事件流圖的實(shí)驗(yàn)數(shù)據(jù),可以看出,實(shí)例中的可達(dá)事件共有4個(gè),系統(tǒng)交互事件共有5個(gè),終止事件共有6個(gè)。在事件交互圖中,將去掉這4個(gè)可達(dá)事件和2個(gè)終止事件(“查看”、“返回”),分析系統(tǒng)交互事件和終止事件之間的關(guān)系。

圖4 客戶管理模塊的事件流圖

表1 事件流圖的實(shí)驗(yàn)數(shù)據(jù)
4.3 事件交互圖實(shí)例
圖5為客戶管理模塊的事件交互圖(EIG),可以明顯看出,事件交互圖中的路徑數(shù)遠(yuǎn)高于事件流圖中的路徑數(shù),因?yàn)閷?shí)例中的系統(tǒng)交互較多,所以生成的事件交互圖較為復(fù)雜。圖中共9個(gè)事件,“輸入密碼”為非模態(tài)窗口事件“客戶余額查詢”的系統(tǒng)交互事件,(其中,“查看”、“返回”為非模態(tài)窗口事件“客戶余額查詢”的系統(tǒng)終止事件,已被刪除);“出生日期”、“身份證號(hào)”為模態(tài)窗口事件“客戶資料更新”的系統(tǒng)交互事件,“更新”、“取消”為模態(tài)窗口事件“客戶資料更新”的系統(tǒng)終止事件;“添加賬戶”為模態(tài)窗口事件“客戶添加賬戶”的系統(tǒng)交互事件,“關(guān)閉”、“添加”為模態(tài)窗口事件“客戶添加賬戶”的系統(tǒng)終止事件。

圖5 客戶管理模塊的事件交互圖
表2為事件交互圖的實(shí)驗(yàn)數(shù)據(jù),由于模態(tài)窗口事件中的系統(tǒng)交互事件只和當(dāng)前窗口中的事件交互,因此可以分析得出:模態(tài)窗口事件“客戶資料更新”的系統(tǒng)交互數(shù)為2個(gè),模態(tài)窗口事件“客戶添加賬戶”的系統(tǒng)交互數(shù)為1個(gè),總共3個(gè)。對于表2中第1~2行,事件的出度為9,代表所有的事件都可以作為它們下一個(gè)事件,入度為6是因?yàn)?個(gè)模態(tài)窗口中的系統(tǒng)交互事件執(zhí)行后,不能直接執(zhí)行這些事件。對于第3~4行,它們是模態(tài)窗口中的系統(tǒng)交互事件,所以它們下一個(gè)事件僅為該窗口中的所有事件,入度為8是因?yàn)椴荒茉凇疤砑淤~戶”事件的下一個(gè)事件被執(zhí)行。依此類推,所有的出度之和等于所有的入度之和。

表2 事件交互圖實(shí)驗(yàn)數(shù)據(jù)
為了更好地說明算法的適用性,根據(jù)表1和表2的數(shù)據(jù),分析得出表3事件交互圖中沒有連接的路徑。表3數(shù)據(jù)與事件交互圖的定義吻合,說明算法可以運(yùn)用于圖形用戶界面。組合才會(huì)引起測試集終止。若將這些事件交互類型與EFG相結(jié)合,對EFG中的事件進(jìn)行分類,是否屬于會(huì)引起測試集終止的事件交互類型,判斷屬于哪一種類型。由于生成的測試集是根據(jù)EIG圖的遍歷及轉(zhuǎn)換算法中的映射相結(jié)合,因此獲得的事件及事件間的關(guān)系確保了足夠的覆蓋率。對于生成的測試集進(jìn)行分析,判斷該測試集中是否包含會(huì)引起測試集終止的事件交互類型,從而提高測試集的有效性和實(shí)用性,減少不可行測試集的輸出。

表3 事件交互圖中沒有連接的路徑

表4 事件交互類型分類情況
4.4 數(shù)據(jù)分析
GUI測試中常用的模型可以指導(dǎo)測試生成,并確保足夠的覆蓋率。但是通過多次實(shí)驗(yàn)證明,EFG模型的提取并不是精確提取,部分提取的信息可能只是為了特殊的執(zhí)行路徑,所以并不完整,生成的測試集因此會(huì)存在不可行的問題;另外,一個(gè)意外的窗口或者部件、按鈕被禁用,事件不能觸發(fā)等情況都會(huì)導(dǎo)致生成的測試集變得不可行,因?yàn)樵诨谀P偷臏y試方法中,自動(dòng)化測試缺少人類的認(rèn)知能力,無法注意到一些會(huì)導(dǎo)致測試集失敗的問題。這類問題是由于違反了事件交互序列的臨時(shí)約束[13]。在GUI測試生成中,缺少這些約束意味著部分事件的交互會(huì)丟失,降低了故障檢測率。為解決上述問題,必須提高從GUI中提取模型的精確度,改進(jìn)所需的信息,以及測試有效性,優(yōu)化測試集以獲得更多可執(zhí)行的測試序列。
本文研究并定義了6種可能會(huì)引起測試集終止的事件交互類型情況:禁用,連續(xù),強(qiáng)依賴,弱依賴,排除,混合。表4為6種交互類型的情況說明及舉例。
對常用的Office軟件進(jìn)行分析,禁用與強(qiáng)依賴2種事件的交互類型較多,因?yàn)樗鼈儍H需1個(gè)事件或2個(gè)事件便可引起測試集終止;弱依賴與排除2種事件的交互類型較少,因?yàn)樗鼈兺ǔJ歉鶕?jù)多個(gè)事件
本文通過事件流圖和事件分類,提出了一種新的EFG轉(zhuǎn)變成EIG的算法,經(jīng)過實(shí)驗(yàn)證明,該方法可以適用于圖形用戶界面,并且獲得的數(shù)據(jù)更準(zhǔn)確、更高效。但EFG模型的提取并不是精確提取,生成的測試集會(huì)存在不可行的問題,本文通過實(shí)驗(yàn)部分的數(shù)據(jù)分析,總結(jié)了6種可能會(huì)引起測試集終止的事件交互類型情況分類,作為今后研究的方向,通過優(yōu)化測試集從而提高測試的有效性。
[1] Arlt S,Podelski A,Bertolini C,et al.Lightweight Static Analysis for GUI Testing[C]//Proc.of the 23rd IEEE International Symposium on Software Reliability Engineering.Dallas,USA:[s.n.],2012:301-310.
[2] Huang Si,Memon A.Repairing GUI Test Suites Using a Genetic Algorithm[C]//Proc.of the 3rd International Conference on Software Testing,Verification and Validation.Paris,France:[s.n.],2010:245-254.
[3] Yuan Xun,Myra B C,Memon A M.GUI Interaction Testing:Incorporating Event Context[J].IEEE Transaction on Software Engineering,2011,27(4):559-574.
[4] Xie Qing,Memon A M.Using a Pilot Study to Derive a GUIModelfor Automated Testing[J].ACM Transactions on Software Engineering And Methodology, 2008,18(2):1-35.
[5] Memon A M,Soffa M L,PollackM E.Coverage Criteria for GUI Testing[C]//Proc.of the 8th European Software Engineering Conference Held Jointly with the 9th ACM SIGSOFT InternationalSymposium on Foundations of Software Engineering.New York,USA: ACM Press,2001:256-267.
[6] Belli F.Finite-state Testing and Analysis of Graphical User Interfaces[C]//Proc.of the 12th International Symposium on Software Reliability Engineering. [S.l.]:IEEE Press,2001:34-43.
[7] Belli F,Beyazit M,Memon A.Testing is an Eventcentric Activity[C]//Proc.of the 6th International Conference on Software Security and Reliability Companion.Gaithersburg,USA:IEEE Press,2012: 198-206.
[8] Memon A.GUIRipping:Reverse Engineering of Graphical User Interfaces for Testing[C]//Proc.of the 10th Working Conference on ReverseEngineering. [S.l.]:IEEE Press,2003:260-269.
[9] Memon A,Banerjee I,Nagarajan A.Reverse Engineering of Graphical User Interfaces Using Static Analyses [C]//Proc.of the 14th Working Conference on Reverse Engineering.Vancouver,Canada:[s.n.],2007:189-198.
[10] Memon A M,Qing Xie.Studying the Fault-detection Effectiveness of GUI Test Cases for Rapidly Evolving Software[J]. IEEE Transactions on Software Engineering,2005,31(10):884-896.
[11] 豐 凱,高建華.基于模型的圖形用戶界面事件交互圖生成方法[J].計(jì)算機(jī)科學(xué),2013,40(6A):184-187.
[12] Yuan Xun,Memon A M.Using GUI Run-time State as Feedback to Generate Test Cases[C]//Proc.of the 29th InternationalConference on Software Engineering. Minneapolis,USA:IEEE Press,2007:396-405.
[13] Cohen M B,Huang Si,Memon A M.AutoInSpec:Using Missing Test Coverage to Improve Specifications in GUIs[C]//Proc.of the 23rd International Symposium on Software Reliability Engineering.Dallas,USA:IEEE Press,2012:251-260.
編輯 任吉慧
Algorithm and Research Based on Event Interaction Graph
GAO Xiu-hui,GAO Jian-hua
(Department of Computer Science and Technology,Shanghai Normal University,Shanghai 200234,China)
The quality of Graphical User Interface(GUI)directly affects the reliability and usability of the entire software system.When testing the graphical user interface,it generally adopts the method of extracting model,and the frequently models based on the graphical user interface are Event Flow Graph(EFG)and Event Interaction Graph(EIG). However,the algorithm of EFG into EIG is complex,this paper proposes an algorithm.In this paper,the GUI events with a specific division and the use of the special nature of the modal window event optimize the original algorithm.It indicates the new algorithm can be used for GUI and the obtained data is more accurate and more efficient with the real cases than Memon in GUI.
Graphical User Interface(GUI);event-interaction classification;Event Flow Graph(EFG);Event Interaction Graph(EIG);test case
1000-3428(2014)10-0086-06
A
TP311.5
10.3969/j.issn.1000-3428.2014.10.017
國家自然科學(xué)基金資助項(xiàng)目(61073163);上海市引進(jìn)技術(shù)的吸收與創(chuàng)新計(jì)劃基金資助項(xiàng)目(2010CH-014)。
高秀慧(1989-),女,碩士研究生,主研方向:軟件可靠性設(shè)計(jì),軟件測試技術(shù);高建華,教授、博士。
2013-10-21
2013-12-20E-mail:veronica_gxh@hotmail.com
中文引用格式:高秀慧,高建華.基于事件交互圖的算法與研究[J].計(jì)算機(jī)工程,2014,40(10):86-91,97.
英文引用格式:Gao Xiuhui,Gao Jianhua.Algorithm and Research Based on Event Interaction Graph[J].Computer Engineering,2014,40(10):86-91,97.