• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種Windows應(yīng)用程序的GUI自動(dòng)化遍歷方法

    2018-11-30 01:46:46朱方祥顧乃杰

    朱方祥 顧乃杰,3

    1(中國(guó)科學(xué)技術(shù)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 安徽 合肥 230027)2(安徽省計(jì)算與通信軟件重點(diǎn)實(shí)驗(yàn)室 安徽 合肥 230027)3(中國(guó)科學(xué)技術(shù)大學(xué)先進(jìn)技術(shù)研究院 安徽 合肥 230027)

    0 引 言

    互聯(lián)網(wǎng)發(fā)展至今日,各式各樣的軟件產(chǎn)品已經(jīng)滲透到人們生活的方方面面。用戶和軟件之間的交互主要依賴圖形用戶界面GUI(Graphical User Interface)。用戶通過軟件GUI觸發(fā)一定的事件,GUI響應(yīng)用戶事件并且把結(jié)果返回給用戶。在現(xiàn)代軟件的開發(fā)過程中,開發(fā)者會(huì)編寫大量GUI實(shí)現(xiàn)相關(guān)的代碼,其所占的比重大約是整個(gè)軟件代碼量的60%[1-2]。軟件GUI豐富和復(fù)雜的特性給軟件測(cè)試帶來非常多的不便[3-4]。

    GUI測(cè)試可以分為人工測(cè)試和自動(dòng)化測(cè)試,自動(dòng)化測(cè)試相比人工測(cè)試能夠節(jié)省很多的人力成本和時(shí)間成本。學(xué)術(shù)界和工業(yè)界對(duì)GUI自動(dòng)化測(cè)試的研究非常多。其中一部分研究是基于腳本的自動(dòng)化測(cè)試,通過運(yùn)行腳本自動(dòng)執(zhí)行測(cè)試步驟。測(cè)試腳本生成手段包括人工編寫測(cè)試腳本和錄制測(cè)試腳本[5-6]。這兩種方法的自動(dòng)化程度有限,需要測(cè)試人員具有一定的測(cè)試經(jīng)驗(yàn),而且隨著軟件功能的增加和版本的迭代會(huì)給測(cè)試用例的維護(hù)帶來不便,并且測(cè)試用例能涵蓋的GUI數(shù)目也有限。另外一部分研究是測(cè)試用例的自動(dòng)生成,這種方法一般通過算法構(gòu)建軟件的GUI模型,并在模型基礎(chǔ)上自動(dòng)化生成測(cè)試用例。其中經(jīng)典的模型有事件流圖[7-9]EFG(Event Flow Graph)、事件序列圖[10]ESG(Event Sequence Graph)。在此基礎(chǔ)上文獻(xiàn)[11]提出使用有限狀態(tài)機(jī)FSM(Finite State Machine)可以得到更精簡(jiǎn)的模型。在這些GUI模型的研究中,GUI覆蓋率直接影響模型是否完整高效,研究表明純手工測(cè)試遍歷GUI的覆蓋率一般只有30.08%[12]。文獻(xiàn)[13]首次設(shè)計(jì)出一種GUI驅(qū)動(dòng)軟件的自動(dòng)化測(cè)試框架,其系統(tǒng)地提出了GUI模型構(gòu)建的方法。框架中JFCGUIRipper可以自動(dòng)遍歷基于JFC框架開發(fā)的應(yīng)用,其采用窗口名稱區(qū)分不同的界面,GUI覆蓋率不高。文獻(xiàn)[14]提出一種模擬用戶行為動(dòng)態(tài)探測(cè)Android應(yīng)用程序GUI的方法,其采用圖像對(duì)比區(qū)分不同的應(yīng)用界面,雖然比較簡(jiǎn)單方便,但是不能有效地解決遍歷過程中的回環(huán)問題。而文獻(xiàn)[15]提出通過結(jié)合靜態(tài)分析遍歷Android應(yīng)用程序GUI的方法可以一定程度提高GUI覆蓋率,但是這種方法僅在Android操作系統(tǒng)上實(shí)現(xiàn)。上述的研究?jī)?nèi)容中,大部分都是針對(duì)移動(dòng)端GUI自動(dòng)化的研究。雖然Windows比移動(dòng)端的操作系統(tǒng)(Andorid、iOS)成熟要早很多,但是在自動(dòng)化測(cè)試領(lǐng)域,其發(fā)展卻不如移動(dòng)端。近年來鮮有關(guān)于Windows GUI自動(dòng)化測(cè)試的相關(guān)研究。

    本文的主要貢獻(xiàn)是提出一種自動(dòng)遍歷Windows應(yīng)用程序GUI的方法,該方法基于GUI事件觸發(fā)和GUI狀態(tài)遷移模型,解決GUI遍歷過程中的回環(huán)、遍歷不充分、效率低三個(gè)關(guān)鍵問題。通過相關(guān)實(shí)驗(yàn)驗(yàn)證,該方法可以得到較高的GUI覆蓋率,具有一定的實(shí)用性,可以作為其他基于模型自動(dòng)化測(cè)試研究的基礎(chǔ)。

    1 相關(guān)概念

    1.1 Windows控件樹結(jié)構(gòu)

    一個(gè)普通的Windows GUI界面是一個(gè)由若干GUI元素組成的樹型視圖。GUI元素包括窗口、按鈕、標(biāo)簽、編輯框等。Windows控件樹是一種系統(tǒng)展示W(wǎng)indows應(yīng)用程序界面信息的分層結(jié)構(gòu),其基本數(shù)據(jù)結(jié)構(gòu)類似于多叉樹。對(duì)于控件樹的定義如下:

    1) 樹中的節(jié)點(diǎn)代表單個(gè)GUI元素。

    2) 節(jié)點(diǎn)信息包括GUI元素的各種屬性(位置、名稱等)。

    3) 除葉子節(jié)點(diǎn)外,每個(gè)節(jié)點(diǎn)可以擁有任意數(shù)量的子節(jié)點(diǎn)。

    4) 除根節(jié)點(diǎn)以外,每個(gè)節(jié)點(diǎn)只能擁有一個(gè)父親節(jié)點(diǎn)。

    如圖1所示,左側(cè)為普通的Windows窗口,窗口包括一個(gè)普通的標(biāo)題欄、一個(gè)文本框和兩個(gè)按鈕。標(biāo)題欄中包括最小化、最大化、關(guān)閉按鈕。右側(cè)為相應(yīng)的控件樹表示。

    圖1 控件樹結(jié)構(gòu)

    這種控件樹表現(xiàn)方式的優(yōu)點(diǎn)是可以完整表現(xiàn)一個(gè)應(yīng)用界面的層次和嵌套關(guān)系,并且可以方便地通過遍歷控件樹找到所需的GUI元素。

    1.2 相關(guān)定義

    一般來說,Windows軟件是一個(gè)多窗口應(yīng)用,其界面包含該應(yīng)用程序的多個(gè)窗口?,F(xiàn)對(duì)窗口狀態(tài)定義如下:

    定義1窗口狀態(tài)是描述某一時(shí)刻應(yīng)用軟件某一個(gè)窗口內(nèi)部情況的抽象概念,單獨(dú)的一個(gè)窗口狀態(tài)可以由{O,P,V}三元組來定義。其具體描述如下:

    1)O={o1,…,on}代表在GUI狀態(tài)中的所有GUI元素。

    2)P={p1,…,pm}代表O中單個(gè)GUI元素的所有屬性。

    3)V={(v11,…,v1m),…,(vn1,…,vnm)}代表O中每個(gè)GUI元素的所有屬性的值。

    定義2GUI狀態(tài)是描述某一時(shí)刻應(yīng)用程序圖形用戶界面總體情況的抽象概念,單獨(dú)的一個(gè)GUI狀態(tài)可以由{wt,W}二元組來定義。

    1)wt代表該GUI狀態(tài)下最頂層活動(dòng)窗口的窗口狀態(tài)。

    2)W代表窗口集合,集合包括該GUI狀態(tài)下除了最頂層窗口的其他所有窗口狀態(tài)。

    定義4遷移事件(Transition Event):在某一固定時(shí)刻,造成GUIV狀態(tài)遷移的用戶事件稱之為遷移事件,其包括可達(dá)事件和終止事件。

    定義5可達(dá)事件(Reachability Event):在某一固定時(shí)刻,那些用于打開新窗口的事件稱之為可達(dá)事件。

    定義6終止事件(Termination Event):在某一固定時(shí)刻,那些用于關(guān)閉當(dāng)前頂層窗口的事件稱之為終止事件。

    1.3 自動(dòng)遍歷方法難點(diǎn)

    在沒有用戶事件響應(yīng)時(shí),應(yīng)用軟件的界面趨于穩(wěn)定狀態(tài),只需要遍歷控件樹結(jié)構(gòu)即可獲得GUI元素,但這些GUI元素并不能覆蓋軟件中所有的GUI元素。一些GUI元素必須響應(yīng)特定的用戶事件才能顯示并出現(xiàn)在控件樹結(jié)構(gòu)中。想要盡可能探測(cè)越多的GUI元素需要不斷地觸發(fā)GUI事件。

    在實(shí)際實(shí)現(xiàn)基于GUI觸發(fā)的遍歷過程中會(huì)遇到若干難點(diǎn)。這里先簡(jiǎn)單描述這些難點(diǎn),并闡明為什么要解決這些難點(diǎn)。

    1.3.1 回環(huán)問題

    如圖2所示,在某一時(shí)刻的遍歷過程中,窗口A中只有Button,觸發(fā)Button后會(huì)打開新的窗口B,控件樹更新。B中只有取消按鈕,觸發(fā)Cancel后會(huì)關(guān)閉窗口B,控件樹更新。此時(shí)如果遍歷程序無法判斷窗口A已經(jīng)遍歷過,則會(huì)把窗口A當(dāng)成新窗口繼續(xù)遍歷,遍歷到窗口A的Button然后觸發(fā)點(diǎn)擊事件,最后導(dǎo)致遍歷程序在窗口A和窗口B之間發(fā)生死循環(huán),使得遍歷無法繼續(xù)進(jìn)行。如何有效地識(shí)別遍歷過的應(yīng)用程序界面,成為解決回環(huán)問題的關(guān)鍵。

    圖2 回環(huán)問題

    1.3.2 遍歷不充分

    遍歷算法在遍歷過程中存在一定概率會(huì)提前觸發(fā)終止事件并關(guān)閉當(dāng)前窗口,使得遍歷算法無法遍歷該窗口中的剩余元素。由于在遍歷過程中無法提前預(yù)知觸發(fā)的用戶事件是否是終止事件,因此需要增加步驟回溯機(jī)制來解決這種因?yàn)樘崆坝|發(fā)終止事件而造成的遍歷不充分問題。另外對(duì)于需要驗(yàn)證步驟的窗口(比如用戶名、密碼登錄),如果沒有事先在指定控件中輸入正確信息,遍歷程序無法打開對(duì)應(yīng)的新窗口。這種情況同樣會(huì)導(dǎo)致遍歷不充分,針對(duì)這類問題需要在遍歷過程中加入步驟引導(dǎo)。

    1.3.3 遍歷效率低

    軟件中存在一些與軟件本身功能無關(guān)的窗口,比如選擇文件窗口或者打開文件窗口。當(dāng)遍歷到類似于選擇文件的窗口是,文件瀏覽框中觸發(fā)文件選擇事件會(huì)不斷的出現(xiàn)新文件,導(dǎo)致窗口界面一直發(fā)生變化。遍歷程序會(huì)認(rèn)為每次操作打開了新的窗口繼續(xù)遍歷,顯然一直遍歷文件路徑是無意義的,會(huì)導(dǎo)致遍歷效率低下。

    2 關(guān)鍵算法及說明

    2.1 GUI狀態(tài)遷移判斷

    如何精確判斷遍歷過程中應(yīng)用程序的兩個(gè)界面是否相同是解決回環(huán)問題的關(guān)鍵。由定義2可知,GUI狀態(tài)刻畫了某一時(shí)刻應(yīng)用程序圖形用戶界面的總體情況,所以判斷當(dāng)前應(yīng)用程序的界面是否遍歷過等價(jià)于判斷當(dāng)前應(yīng)用程序的GUI狀態(tài)是否已經(jīng)遍歷過。

    本文提出對(duì)應(yīng)用程序的窗口集合進(jìn)行對(duì)比判斷GUI狀態(tài)是否遷移,具體判斷步驟如下:

    1) 判斷兩個(gè)GUI狀態(tài)下窗口集合W的個(gè)數(shù)是否相同。

    2) 判斷兩個(gè)GUI狀態(tài)下的頂層活動(dòng)窗口wt內(nèi)部控件樹是否相同。

    對(duì)比頂層活動(dòng)窗口的控件樹時(shí),采用樹的度遍歷方法,對(duì)于控件樹的每個(gè)節(jié)點(diǎn)只會(huì)對(duì)比控件的類型是否相同,對(duì)屬性值不作比較。如果窗口狀態(tài)個(gè)數(shù)和頂層窗口的控件樹都相同,則判斷兩個(gè)GUI狀態(tài)相同。這種方法可以更加細(xì)粒度地對(duì)比應(yīng)用程序界面的變化,有效地判斷GUI狀態(tài)是否遷移。

    2.2 基于GUI狀態(tài)變遷的步驟回溯算法

    為了解決遍歷過程中,提前觸發(fā)終止事件而造成遍歷不充分的問題,需要增加遍歷的步驟可回溯的功能。

    算法1描述了具體的基于GUI狀態(tài)變遷的步驟回溯算法。算法的輸入是某一時(shí)刻的GUI狀態(tài),輸出正確回退的GUI狀態(tài)。這里GUI狀態(tài)除了頂層窗口狀態(tài)wt和其他窗口狀態(tài)集合W之外還有四種屬性:element、isDone、terminate、lastEvent。element代表遍歷程序在該GUI狀態(tài)下已經(jīng)遍歷到的控件節(jié)點(diǎn),isDone代表當(dāng)前GUI狀態(tài)下是否已經(jīng)完成遍歷過程,terminate代表終止事件,lastEvent代表發(fā)生狀態(tài)遷移前所觸發(fā)的事件。GUI緩存(GUICache)類似于一個(gè)數(shù)組結(jié)構(gòu),緩存遍歷過程中發(fā)生變遷的GUIState。事件列表(EventList)也是一個(gè)數(shù)組,其保存遍歷過程的執(zhí)行路徑。EventList[i]是 GUICache[i-1]到GUICache[i]狀態(tài)變遷所發(fā)生的事件。

    2.3 GUI遍歷算法

    算法2描述了核心的遍歷算法,其輸入是啟動(dòng)的被測(cè)應(yīng)用。整個(gè)遍歷算法覆蓋遍歷過程的GUI狀態(tài)表示、遍歷方式、步驟回溯等關(guān)鍵問題。其中使用深度優(yōu)先遍歷控件樹的主要原因是Windows應(yīng)用窗口模態(tài)(modal)和非模態(tài)(modelless)的特性。模態(tài)窗口指的是當(dāng)打開該窗口的時(shí)候用戶的交互只能聚焦在此窗口內(nèi),而非模態(tài)則沒有這樣的限制。然而Windows大部分的窗口都是模態(tài)窗口,所以在遍歷到新的模態(tài)窗口的時(shí)候無法對(duì)窗口外的控件觸發(fā)事件,只能觸發(fā)窗口內(nèi)部控件的事件。這從根本上否決類似于廣度優(yōu)先的其他遍歷策略,并且采用深度優(yōu)先的方式更符合用戶操作軟件的習(xí)慣,能夠有效地提升GUI探測(cè)的深度和廣度。

    2.4 樣式過濾

    影響遍歷效率的一個(gè)重要因素是一直遍歷被測(cè)軟件主要功能無關(guān)的窗口界面。所以需要事先對(duì)一些無需遍歷的窗口界面進(jìn)行過濾。如果采用對(duì)窗口及窗口內(nèi)部元素一一對(duì)比的方式會(huì)非常麻煩。針對(duì)此問題,考慮使用Windows中的樣式值作為過濾窗口頁(yè)面的標(biāo)準(zhǔn)。Windows中窗口或者控件的樣式值包含了繪制風(fēng)格等信息。比如是否可見、是否有水平滾動(dòng)條,是否有最小化按鈕等信息。通常來說,軟件中同樣功能類型的窗口繪制風(fēng)格相同,樣式值也相同。

    在遍歷程序開始之前,將需要過濾的樣式值寫入配置文件的樣式黑名單中。在遍歷算法遍歷元素的每一步都與黑名單中的樣式值進(jìn)行對(duì)比,如果樣式值存在,則不再遍歷該元素及以該元素為根節(jié)點(diǎn)的子樹中的元素。窗口或者控件的樣式值可以事先通過微軟提供的spy++工具[16]獲得。通過這樣簡(jiǎn)單的方式可以有效地防止遍歷程序局限在某一不重要的軟件界面處,從而提升遍歷效率。

    3 工具實(shí)現(xiàn)方法

    3.1 工具實(shí)現(xiàn)

    遍歷工具總體方法的架構(gòu)圖如圖3所示。主要分為四個(gè)模塊:UI提取模塊、遍歷模塊、UI驅(qū)動(dòng)模塊、緩存模塊。

    緩存模塊主要存放一些模塊之間公用的數(shù)據(jù),包括GUI狀態(tài)的緩存、任務(wù)緩存、配置信息等,使用XML文件作為緩存的載體。

    UI提取模塊獲取應(yīng)用程序當(dāng)前GUI狀態(tài)下的所有窗口集合以及頂層活動(dòng)窗口的控件樹結(jié)構(gòu)信息,并把這些信息傳遞給遍歷引擎。

    遍歷模塊實(shí)現(xiàn)具體的遍歷算法,判斷GUI狀態(tài)是否變遷,更新緩存模塊中的緩存信息,并且在窗口控件樹的基礎(chǔ)上深度遍歷GUI元素。在遍歷到某一GUI元素需要觸發(fā)事件時(shí),則把元素的控件路徑和所需要觸發(fā)的事件信息交給UI驅(qū)動(dòng)模塊。

    UI驅(qū)動(dòng)模塊主要用來對(duì)應(yīng)用程序控件觸發(fā)事件,從而模擬用戶動(dòng)作。通過簡(jiǎn)單調(diào)用驅(qū)動(dòng)API便可以在應(yīng)用程序上模擬用戶動(dòng)作。比如點(diǎn)擊按鈕、輸入文本等操作。

    根據(jù)上述架構(gòu),實(shí)現(xiàn)Windows UI自動(dòng)化遍歷的原型工具。該工具使用Python語言實(shí)現(xiàn),運(yùn)行在Windows 系統(tǒng)的PC平臺(tái)上。UI提取模塊和UI驅(qū)動(dòng)模塊主要基于Pywinauto開源工具[17]實(shí)現(xiàn)。Pywinauto是一套用于Windows GUI自動(dòng)化的python庫(kù),其對(duì)Windows應(yīng)用程序自動(dòng)化測(cè)試相關(guān)的API進(jìn)行了封裝,可以支持WinForm、WPF、Qt、MFC等不同框架的Windows應(yīng)用程序。對(duì)Pywinauto的相關(guān)實(shí)現(xiàn)進(jìn)行修改和補(bǔ)充,實(shí)現(xiàn)控件樹從內(nèi)存到XML文件的轉(zhuǎn)換,使用XML的層級(jí)結(jié)構(gòu)正好可以映射控件樹結(jié)構(gòu)??丶渚彺嬉訶ML文件的形式存儲(chǔ),不需要保留在內(nèi)存中。在UI驅(qū)動(dòng)模塊,調(diào)用Pywinauto中封裝好的API可以方便地發(fā)送指定事件給應(yīng)用程序的GUI并執(zhí)行相關(guān)動(dòng)作。

    3.2 實(shí) 驗(yàn)

    遍歷時(shí)探測(cè)的GUI元素越多代表了越好的遍歷效果,可以使用GUI覆蓋率作為評(píng)估標(biāo)準(zhǔn)。

    (1)

    GUI覆蓋率一般形式如式(1),其中GC代表GUI覆蓋率,GT代表應(yīng)用程序包含的GUI狀態(tài)總數(shù),GE代表遍歷執(zhí)行過程中探測(cè)到的GUI狀態(tài)總數(shù),比值越高代表遍歷效果越好。但是在實(shí)際實(shí)驗(yàn)過程中,無法直接準(zhǔn)確獲得應(yīng)用程序的GUI狀態(tài)數(shù)目,如果使用人工統(tǒng)計(jì)的方式統(tǒng)計(jì)GUI狀態(tài)數(shù)目效率會(huì)很低并且存在誤差。為了盡可能得到準(zhǔn)確的GUI覆蓋率,采用基于簡(jiǎn)單抽樣的方式來近似估計(jì)GUI覆蓋率。

    (2)

    GUI平均近似覆蓋率計(jì)算公式如式(2)所示。首先對(duì)整個(gè)被測(cè)軟件的GUI元素進(jìn)行多次簡(jiǎn)單抽樣,每次抽樣保證GUI元素分布均勻,不會(huì)出現(xiàn)多個(gè)GUI元素在單一窗口內(nèi)部。AAC代表平均近似覆蓋率,ni代表被測(cè)應(yīng)用中第i次人工隨機(jī)抽樣選取的GUI元素的個(gè)數(shù),并將其作為第i次抽樣的樣本。在遍歷程序的過程中,每遍歷到一個(gè)GUI元素都與樣本中的元素進(jìn)行對(duì)比,如果相同則記錄。pi是遍歷過程中出現(xiàn)在第i次抽樣樣本中GUI元素的個(gè)數(shù),pi和ni的比值代表第i次抽樣的近似覆蓋率。總共采樣k次取平均值,得到平均近似覆蓋率。使用GUI平均近似覆蓋率代替GUI覆蓋率進(jìn)行定量的實(shí)驗(yàn)評(píng)估更加方便高效。

    實(shí)驗(yàn)工具運(yùn)行在Windows 10、內(nèi)存為8 GB的PC機(jī)上。被測(cè)應(yīng)用包括TapTap、Notepad、MSPaint、TeamViewer和KeePass五款Windows應(yīng)用程序。其中TapTap是我們自主研發(fā)的Windows應(yīng)用程序,其內(nèi)部總共包含132個(gè)窗口頁(yè)面,在功能上實(shí)現(xiàn)了窗口之間的相互切換。

    遍歷程序運(yùn)行過程針對(duì)文件選擇、文件保存等軟件功能無關(guān)的窗口進(jìn)行個(gè)性化過濾。用戶可以觸發(fā)的事件包括左擊、雙擊、拖動(dòng)等簡(jiǎn)單事件。對(duì)于每個(gè)被測(cè)軟件進(jìn)行三次人工抽樣最后得到平均近似覆蓋率,結(jié)果如表1所示。

    表1 實(shí)驗(yàn)結(jié)果

    3.3 橫向比對(duì)

    為了進(jìn)一步體現(xiàn)本文方法的優(yōu)越性,以上述提及的4個(gè)被測(cè)應(yīng)用作為測(cè)試數(shù)據(jù),將其與文獻(xiàn)[13-14]中的方法在平均近似覆蓋率進(jìn)行了性能比較。文獻(xiàn)[13]基于窗口標(biāo)題對(duì)比判斷應(yīng)用程序界面是否改變,文獻(xiàn)[14]基于軟件圖像對(duì)比判斷應(yīng)用程序界面是否改變。對(duì)三種方法進(jìn)行測(cè)試,得到平均近似覆蓋率進(jìn)行對(duì)比。結(jié)果如表2所示。

    表2 不同方法的平均近似覆蓋率比較 %

    3.4 結(jié)果分析

    TapTap軟件設(shè)計(jì)內(nèi)容簡(jiǎn)單、功能單一,其設(shè)計(jì)目的是對(duì)遍歷程序的正確性進(jìn)行測(cè)試。從表1可以看出,由于設(shè)計(jì)之初規(guī)避了回環(huán)問題和遍歷不充分問題,所以測(cè)試TapTap軟件的近似覆蓋率可以達(dá)到100%。對(duì)其他的Windows程序進(jìn)行測(cè)試,其平均近似覆蓋率在57.8%~74.3%之間。從表2以看出,相對(duì)于窗口標(biāo)題對(duì)比和基于軟件圖像對(duì)比判斷GUI狀態(tài)遷移的方法,本文提出的基于窗口集合對(duì)比判斷界面是否變化的方法對(duì)于GUI覆蓋率有平均21.8%的提升。仔細(xì)分析其原因可知,這主要是因?yàn)楸疚姆椒軌蚋蛹?xì)粒度地對(duì)比應(yīng)用程序界面的變化,有效地判斷GUI狀態(tài)是否遷移因此取得了更好的結(jié)果。

    另外分析遍歷過程,普通Windows應(yīng)用軟件程序無法達(dá)到覆蓋率100%主要因素有兩個(gè)方面:第一,遍歷程序?qū)?fù)雜事件的支持不足,比如沒有處理鼠標(biāo)右鍵、滾輪鍵點(diǎn)擊事件。第二,應(yīng)用軟件中有的窗口必須連續(xù)觸發(fā)順序事件才能打開,自動(dòng)遍歷算法沒有考慮觸發(fā)事件的順序。

    4 結(jié) 語

    本文提出一種自動(dòng)遍歷Windows軟件GUI的方法。該方法基于GUI狀態(tài)變遷構(gòu)建完整的GUI遍歷算法,并且解決了遍歷過程中的回環(huán)、遍歷不充分、遍歷效率低三個(gè)關(guān)鍵問題。實(shí)現(xiàn)相關(guān)工具,通過實(shí)驗(yàn)分析該方法在自主研發(fā)的應(yīng)用軟件中覆蓋率為100%,保證方法的正確性。對(duì)于普通的Windows應(yīng)用程序,該方法的GUI平均近似覆蓋率在57.8%~74.3%之間。

    下一步工作方向:繼續(xù)優(yōu)化本文的遍歷工作,添加對(duì)更復(fù)雜事件的處理,并且支持驗(yàn)證步驟等功能?;赪indows的GUI遍歷可以適合多種測(cè)試場(chǎng)景。比如可以結(jié)合性能監(jiān)控,在無任何測(cè)試用例前提下,自動(dòng)檢測(cè)出被測(cè)應(yīng)用的性能瓶頸;也可以基于遍歷過程中GUI狀態(tài)變遷和事件的關(guān)系,構(gòu)造模型并自動(dòng)組織測(cè)試用例。

    亚洲精品乱久久久久久| www.av在线官网国产| 19禁男女啪啪无遮挡网站| 纵有疾风起免费观看全集完整版| 18禁国产床啪视频网站| 亚洲国产欧美一区二区综合| 一边亲一边摸免费视频| 丝袜脚勾引网站| 麻豆乱淫一区二区| 一区二区日韩欧美中文字幕| a级毛片在线看网站| 少妇被粗大猛烈的视频| 少妇猛男粗大的猛烈进出视频| 免费在线观看视频国产中文字幕亚洲 | 一二三四在线观看免费中文在| 久久人人97超碰香蕉20202| 人妻一区二区av| 久久久久久久久久久免费av| 两性夫妻黄色片| 国产片内射在线| 男人爽女人下面视频在线观看| 蜜桃国产av成人99| 19禁男女啪啪无遮挡网站| 两性夫妻黄色片| 搡老乐熟女国产| 免费日韩欧美在线观看| 日韩精品免费视频一区二区三区| a级毛片在线看网站| 99久久精品国产亚洲精品| 国产99久久九九免费精品| 日韩一区二区三区影片| 欧美黑人欧美精品刺激| 99精品久久久久人妻精品| 黄片播放在线免费| 晚上一个人看的免费电影| 亚洲男人天堂网一区| 丝袜人妻中文字幕| 精品一区二区三区av网在线观看 | 欧美激情高清一区二区三区 | 一个人免费看片子| 欧美激情 高清一区二区三区| 一个人免费看片子| a级毛片在线看网站| 免费看不卡的av| 精品人妻在线不人妻| 日韩精品免费视频一区二区三区| 亚洲精品一二三| 亚洲精品美女久久久久99蜜臀 | 尾随美女入室| 在线天堂中文资源库| 天天添夜夜摸| 男女之事视频高清在线观看 | 免费观看人在逋| 日韩大码丰满熟妇| 99久久精品国产亚洲精品| 亚洲婷婷狠狠爱综合网| 少妇精品久久久久久久| 亚洲成色77777| 99热国产这里只有精品6| 精品少妇久久久久久888优播| 成年人午夜在线观看视频| 老熟女久久久| 国产精品一区二区在线观看99| 两性夫妻黄色片| 观看美女的网站| 久久精品久久久久久久性| 国产毛片在线视频| 亚洲美女黄色视频免费看| 欧美国产精品一级二级三级| 国产黄色视频一区二区在线观看| 赤兔流量卡办理| 午夜日本视频在线| 亚洲 欧美一区二区三区| 亚洲精品国产av蜜桃| 捣出白浆h1v1| 色吧在线观看| 国产黄色视频一区二区在线观看| 久久av网站| 亚洲精品视频女| 多毛熟女@视频| 男人爽女人下面视频在线观看| 午夜影院在线不卡| 男的添女的下面高潮视频| 国产精品三级大全| 免费看av在线观看网站| 老司机影院毛片| 菩萨蛮人人尽说江南好唐韦庄| 在线观看免费高清a一片| 欧美日韩亚洲高清精品| 99re6热这里在线精品视频| 十八禁人妻一区二区| 天堂8中文在线网| 青春草国产在线视频| a级片在线免费高清观看视频| 精品福利永久在线观看| 美女主播在线视频| 国产麻豆69| 精品一区在线观看国产| 我要看黄色一级片免费的| 一区二区三区激情视频| 美女高潮到喷水免费观看| 日本wwww免费看| 女人爽到高潮嗷嗷叫在线视频| 国产野战对白在线观看| 亚洲精品aⅴ在线观看| 亚洲精品国产一区二区精华液| 1024香蕉在线观看| 中文欧美无线码| 日日爽夜夜爽网站| 午夜精品国产一区二区电影| 天天添夜夜摸| 免费久久久久久久精品成人欧美视频| 国产精品久久久久久精品古装| 高清视频免费观看一区二区| 人人妻人人澡人人看| 日日爽夜夜爽网站| 欧美av亚洲av综合av国产av | 久久久精品区二区三区| 久久女婷五月综合色啪小说| 久久久久国产一级毛片高清牌| 老司机深夜福利视频在线观看 | 欧美 日韩 精品 国产| 午夜免费鲁丝| 一二三四中文在线观看免费高清| 韩国av在线不卡| 日韩欧美一区视频在线观看| 久久久久精品人妻al黑| 国产成人精品无人区| 成人亚洲精品一区在线观看| 你懂的网址亚洲精品在线观看| 国产精品国产三级专区第一集| 精品久久久久久电影网| 日韩av免费高清视频| 日本爱情动作片www.在线观看| 国产老妇伦熟女老妇高清| 久久久久久人人人人人| 亚洲国产看品久久| 精品少妇黑人巨大在线播放| 成人亚洲欧美一区二区av| 午夜av观看不卡| 各种免费的搞黄视频| 两个人看的免费小视频| 午夜福利影视在线免费观看| 国产 精品1| 亚洲伊人色综图| 亚洲国产看品久久| 人妻人人澡人人爽人人| 午夜久久久在线观看| 国产精品偷伦视频观看了| 久久这里只有精品19| 欧美久久黑人一区二区| 亚洲自偷自拍图片 自拍| 欧美97在线视频| 交换朋友夫妻互换小说| av免费观看日本| 国产97色在线日韩免费| 成人漫画全彩无遮挡| 国产精品免费视频内射| 久久女婷五月综合色啪小说| 一区二区av电影网| 欧美精品亚洲一区二区| 久久久久精品人妻al黑| 日本猛色少妇xxxxx猛交久久| 青春草国产在线视频| 色94色欧美一区二区| 成人国产av品久久久| 黑人巨大精品欧美一区二区蜜桃| 亚洲av中文av极速乱| 精品少妇久久久久久888优播| 国产一级毛片在线| 精品福利永久在线观看| 校园人妻丝袜中文字幕| 日韩精品免费视频一区二区三区| 成人国产麻豆网| 亚洲一区中文字幕在线| 精品酒店卫生间| av又黄又爽大尺度在线免费看| 亚洲欧美精品综合一区二区三区| 久久久国产精品麻豆| 日日撸夜夜添| 久久精品久久久久久久性| 亚洲国产精品一区二区三区在线| 久久久久人妻精品一区果冻| 老熟女久久久| 又大又爽又粗| 黑人欧美特级aaaaaa片| 天天躁狠狠躁夜夜躁狠狠躁| 男人操女人黄网站| 久久久久精品性色| 久久鲁丝午夜福利片| 国产精品亚洲av一区麻豆 | 制服诱惑二区| a 毛片基地| 免费看不卡的av| 中文字幕人妻熟女乱码| 老司机在亚洲福利影院| 午夜福利在线免费观看网站| 青春草亚洲视频在线观看| 精品人妻一区二区三区麻豆| 视频在线观看一区二区三区| 热99国产精品久久久久久7| 成年动漫av网址| 成人黄色视频免费在线看| 最近中文字幕高清免费大全6| 老熟女久久久| 国产精品久久久久久人妻精品电影 | av在线老鸭窝| 成人黄色视频免费在线看| 天天躁日日躁夜夜躁夜夜| 国产精品国产av在线观看| 久久精品亚洲av国产电影网| 在线观看国产h片| 人妻人人澡人人爽人人| 人人妻,人人澡人人爽秒播 | 日韩不卡一区二区三区视频在线| 亚洲精品日本国产第一区| 久久天堂一区二区三区四区| 中文字幕色久视频| 18禁观看日本| 亚洲人成电影观看| 国产老妇伦熟女老妇高清| www.av在线官网国产| 精品午夜福利在线看| 国产日韩欧美视频二区| 叶爱在线成人免费视频播放| 国产99久久九九免费精品| 亚洲国产看品久久| 亚洲免费av在线视频| 建设人人有责人人尽责人人享有的| 美女高潮到喷水免费观看| 国产精品 欧美亚洲| 久久人人97超碰香蕉20202| 天天躁夜夜躁狠狠久久av| 国产1区2区3区精品| 久久精品熟女亚洲av麻豆精品| 国产黄频视频在线观看| 夜夜骑夜夜射夜夜干| 国产一卡二卡三卡精品 | 黄色 视频免费看| 天天操日日干夜夜撸| 91老司机精品| 国产成人午夜福利电影在线观看| 亚洲成国产人片在线观看| 麻豆精品久久久久久蜜桃| 亚洲第一区二区三区不卡| av国产精品久久久久影院| tube8黄色片| 黄片无遮挡物在线观看| 国产 精品1| 性高湖久久久久久久久免费观看| 精品一区在线观看国产| 国产精品久久久av美女十八| 久久这里只有精品19| 黄网站色视频无遮挡免费观看| 亚洲第一区二区三区不卡| 中文字幕av电影在线播放| 国产又爽黄色视频| 免费不卡黄色视频| 女的被弄到高潮叫床怎么办| 亚洲精品久久久久久婷婷小说| 亚洲国产最新在线播放| 啦啦啦 在线观看视频| √禁漫天堂资源中文www| 日韩制服丝袜自拍偷拍| 日本色播在线视频| 激情视频va一区二区三区| 国产成人精品无人区| 高清不卡的av网站| 国产午夜精品一二区理论片| 中文精品一卡2卡3卡4更新| 嫩草影视91久久| 国产黄色免费在线视频| 亚洲自偷自拍图片 自拍| 黄色一级大片看看| 久久综合国产亚洲精品| 欧美老熟妇乱子伦牲交| 午夜久久久在线观看| 国产深夜福利视频在线观看| 日本av免费视频播放| 五月天丁香电影| 国产成人精品福利久久| 久久综合国产亚洲精品| 午夜免费观看性视频| 久久久久精品久久久久真实原创| 青春草国产在线视频| 午夜福利网站1000一区二区三区| 亚洲欧美清纯卡通| 夫妻性生交免费视频一级片| 啦啦啦在线免费观看视频4| 亚洲精品久久成人aⅴ小说| 桃花免费在线播放| 欧美日韩亚洲高清精品| 国产精品成人在线| 下体分泌物呈黄色| 成年美女黄网站色视频大全免费| 久久97久久精品| 久久久国产欧美日韩av| 国产成人精品久久二区二区91 | 一二三四中文在线观看免费高清| 好男人视频免费观看在线| 如何舔出高潮| 美女脱内裤让男人舔精品视频| 日本猛色少妇xxxxx猛交久久| 热re99久久精品国产66热6| 99re6热这里在线精品视频| 国产欧美日韩综合在线一区二区| 亚洲国产最新在线播放| avwww免费| 街头女战士在线观看网站| 国精品久久久久久国模美| 亚洲专区中文字幕在线 | 欧美国产精品va在线观看不卡| 国产成人午夜福利电影在线观看| 一区二区av电影网| 在线 av 中文字幕| 国产精品久久久人人做人人爽| 18在线观看网站| 国产精品 欧美亚洲| 韩国高清视频一区二区三区| 99国产综合亚洲精品| 日韩av在线免费看完整版不卡| 精品一区二区三区av网在线观看 | 亚洲精品一区蜜桃| 久久久久久久久久久久大奶| 国产精品一区二区在线不卡| 建设人人有责人人尽责人人享有的| 不卡视频在线观看欧美| 少妇被粗大猛烈的视频| av电影中文网址| 国产不卡av网站在线观看| 免费观看a级毛片全部| 夜夜骑夜夜射夜夜干| h视频一区二区三区| e午夜精品久久久久久久| 美女视频免费永久观看网站| 天天添夜夜摸| 男女国产视频网站| 亚洲专区中文字幕在线 | 精品国产国语对白av| 伊人久久大香线蕉亚洲五| 亚洲av日韩在线播放| 综合色丁香网| av线在线观看网站| 美女大奶头黄色视频| 成年女人毛片免费观看观看9 | 欧美人与性动交α欧美精品济南到| 亚洲欧美一区二区三区久久| 热99久久久久精品小说推荐| 在线观看免费午夜福利视频| 国产老妇伦熟女老妇高清| 久久精品国产亚洲av涩爱| 在线观看三级黄色| 99热全是精品| 男女之事视频高清在线观看 | 亚洲精品第二区| 黄频高清免费视频| 国产精品嫩草影院av在线观看| 免费观看av网站的网址| 日韩免费高清中文字幕av| www.av在线官网国产| 亚洲精品久久午夜乱码| 丝袜在线中文字幕| 亚洲精品成人av观看孕妇| 不卡av一区二区三区| 精品亚洲成国产av| 亚洲熟女毛片儿| 亚洲男人天堂网一区| 久久久久精品久久久久真实原创| 热99国产精品久久久久久7| 亚洲视频免费观看视频| 人人妻人人澡人人看| 国产老妇伦熟女老妇高清| 国产在线视频一区二区| 精品久久久久久电影网| 一边摸一边抽搐一进一出视频| 亚洲国产日韩一区二区| 中文精品一卡2卡3卡4更新| 老司机靠b影院| 欧美精品一区二区大全| 在线观看免费高清a一片| 日韩精品免费视频一区二区三区| 国产极品粉嫩免费观看在线| 久久人人爽人人片av| 日韩av在线免费看完整版不卡| 少妇人妻精品综合一区二区| 黄片无遮挡物在线观看| 三上悠亚av全集在线观看| 国产国语露脸激情在线看| 18禁观看日本| 最新在线观看一区二区三区 | 亚洲美女搞黄在线观看| 十分钟在线观看高清视频www| 波多野结衣av一区二区av| 成年女人毛片免费观看观看9 | 在线天堂中文资源库| 日日爽夜夜爽网站| 性高湖久久久久久久久免费观看| 精品少妇内射三级| 国产精品一区二区在线观看99| 少妇猛男粗大的猛烈进出视频| 在线天堂中文资源库| 在线观看免费高清a一片| 黄色一级大片看看| 一区二区三区乱码不卡18| 亚洲第一区二区三区不卡| 亚洲精品日本国产第一区| 男女免费视频国产| 久久久久网色| 丝袜人妻中文字幕| 欧美 日韩 精品 国产| 69精品国产乱码久久久| 久久久久久久大尺度免费视频| 亚洲美女黄色视频免费看| 另类精品久久| 看非洲黑人一级黄片| 乱人伦中国视频| 日本一区二区免费在线视频| 波多野结衣av一区二区av| 亚洲综合色网址| 久久久精品免费免费高清| 男女高潮啪啪啪动态图| 91精品三级在线观看| 久久国产亚洲av麻豆专区| 国产精品.久久久| 毛片一级片免费看久久久久| 男女之事视频高清在线观看 | 超碰97精品在线观看| 欧美日韩一级在线毛片| 高清在线视频一区二区三区| 桃花免费在线播放| 久久国产精品男人的天堂亚洲| 国产成人啪精品午夜网站| av视频免费观看在线观看| √禁漫天堂资源中文www| 考比视频在线观看| 国产精品女同一区二区软件| 成人亚洲精品一区在线观看| 精品卡一卡二卡四卡免费| 90打野战视频偷拍视频| 欧美国产精品va在线观看不卡| 国产精品久久久久久人妻精品电影 | 久久久久久久久久久免费av| 2021少妇久久久久久久久久久| 香蕉丝袜av| av女优亚洲男人天堂| 亚洲精品自拍成人| 亚洲成人一二三区av| 国产高清不卡午夜福利| a 毛片基地| 色精品久久人妻99蜜桃| 欧美 日韩 精品 国产| 欧美日本中文国产一区发布| 亚洲成人免费av在线播放| 午夜av观看不卡| 亚洲欧美中文字幕日韩二区| 免费高清在线观看日韩| av在线播放精品| 亚洲精品一二三| 色综合欧美亚洲国产小说| av在线老鸭窝| 日韩制服骚丝袜av| 久久久久久久国产电影| 如日韩欧美国产精品一区二区三区| 黄网站色视频无遮挡免费观看| 亚洲激情五月婷婷啪啪| 国产片特级美女逼逼视频| 制服丝袜香蕉在线| 欧美精品亚洲一区二区| 成人手机av| 在线亚洲精品国产二区图片欧美| 成人国产av品久久久| 国产精品偷伦视频观看了| 国产精品99久久99久久久不卡 | 女人高潮潮喷娇喘18禁视频| 又粗又硬又长又爽又黄的视频| 久久天堂一区二区三区四区| 少妇猛男粗大的猛烈进出视频| 国产精品一区二区在线观看99| 亚洲欧美清纯卡通| 午夜日本视频在线| 伊人久久大香线蕉亚洲五| 精品午夜福利在线看| 亚洲成人国产一区在线观看 | 免费黄网站久久成人精品| 亚洲精品乱久久久久久| 熟女av电影| 天堂8中文在线网| 久久精品国产亚洲av涩爱| 精品久久久精品久久久| 亚洲av欧美aⅴ国产| 青春草国产在线视频| 日本一区二区免费在线视频| 在线观看一区二区三区激情| 国产亚洲午夜精品一区二区久久| 黄片小视频在线播放| 亚洲国产欧美网| 母亲3免费完整高清在线观看| 美女视频免费永久观看网站| 精品一区二区三区四区五区乱码 | 男女床上黄色一级片免费看| 精品国产国语对白av| 亚洲欧美一区二区三区黑人| 妹子高潮喷水视频| 亚洲欧美成人综合另类久久久| 高清在线视频一区二区三区| 国产男女内射视频| 国产毛片在线视频| 9191精品国产免费久久| 亚洲av中文av极速乱| www.自偷自拍.com| 欧美国产精品一级二级三级| 性高湖久久久久久久久免费观看| 亚洲自偷自拍图片 自拍| 免费人妻精品一区二区三区视频| 在线观看www视频免费| 久久久久精品久久久久真实原创| avwww免费| 久久97久久精品| 中文字幕人妻丝袜制服| 欧美精品亚洲一区二区| 观看av在线不卡| 丝袜喷水一区| 久久热在线av| 精品国产一区二区三区久久久樱花| 亚洲一区中文字幕在线| 最黄视频免费看| 精品亚洲成a人片在线观看| 夫妻午夜视频| 欧美日本中文国产一区发布| 欧美人与性动交α欧美软件| 制服诱惑二区| 美女午夜性视频免费| 久久人人爽av亚洲精品天堂| videosex国产| 亚洲欧美日韩另类电影网站| 亚洲欧美成人综合另类久久久| 国产免费又黄又爽又色| 亚洲精品久久午夜乱码| 黄频高清免费视频| 蜜桃国产av成人99| 成人三级做爰电影| 美女高潮到喷水免费观看| 老司机在亚洲福利影院| 亚洲av成人精品一二三区| 一区福利在线观看| 丁香六月欧美| 久久天躁狠狠躁夜夜2o2o | 丝袜美腿诱惑在线| 亚洲精品在线美女| 精品午夜福利在线看| 欧美日本中文国产一区发布| 超碰成人久久| 亚洲一卡2卡3卡4卡5卡精品中文| 精品一品国产午夜福利视频| 国产av国产精品国产| 亚洲欧美精品自产自拍| 老汉色∧v一级毛片| e午夜精品久久久久久久| 久久av网站| 午夜福利视频精品| 免费高清在线观看日韩| 国产精品一二三区在线看| 少妇的丰满在线观看| 久久久久精品人妻al黑| 亚洲国产精品成人久久小说| 少妇被粗大猛烈的视频| 欧美变态另类bdsm刘玥| 99久久99久久久精品蜜桃| av在线观看视频网站免费| 亚洲国产毛片av蜜桃av| 成年女人毛片免费观看观看9 | 久久99一区二区三区| 超碰97精品在线观看| 成人三级做爰电影| 日韩熟女老妇一区二区性免费视频| 在现免费观看毛片| 亚洲一卡2卡3卡4卡5卡精品中文| 秋霞伦理黄片| 9191精品国产免费久久| 久久久亚洲精品成人影院| 丝瓜视频免费看黄片| 国产精品免费大片| 国产一区二区三区综合在线观看| 亚洲一区中文字幕在线| 亚洲国产av影院在线观看| 久久久欧美国产精品| 一级毛片我不卡| 久久性视频一级片| 亚洲国产看品久久| 好男人视频免费观看在线| 久久性视频一级片| 国产精品香港三级国产av潘金莲 | 男女午夜视频在线观看| 两个人看的免费小视频| 男女下面插进去视频免费观看| 99久久人妻综合| 中国国产av一级| 在线看a的网站| 超碰97精品在线观看| 精品久久蜜臀av无| 国产一区二区三区综合在线观看| 亚洲欧美精品综合一区二区三区| 免费在线观看黄色视频的| 精品一品国产午夜福利视频| 丰满乱子伦码专区| 国产伦人伦偷精品视频| 悠悠久久av| 伦理电影免费视频| 波野结衣二区三区在线| 国产精品久久久久久精品古装| 又粗又硬又长又爽又黄的视频| 午夜福利在线免费观看网站| 国产精品久久久久久精品古装| 午夜激情久久久久久久| 在线精品无人区一区二区三|