亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        GAT:Windows平臺(tái)下GUI軟件自動(dòng)化測(cè)試框架研究

        2018-04-23 09:13:10錢(qián)漢偉
        軟件 2018年3期
        關(guān)鍵詞:測(cè)試工具測(cè)試用例腳本

        錢(qián)漢偉

        (江蘇警官學(xué)院 計(jì)算機(jī)信息與網(wǎng)絡(luò)安全系,江蘇 南京 210031)

        0 引言

        圖形用戶(hù)界面(Graphical User Interface)的出現(xiàn)是軟件發(fā)展歷程中一個(gè)重要的里程碑,它給用戶(hù)帶來(lái)了極大的方便。圖形用戶(hù)界面是用戶(hù)與系統(tǒng)進(jìn)行交互的接口,接受用戶(hù)或者其他系統(tǒng)輸入事件,產(chǎn)生圖形化的輸出,用戶(hù)對(duì)系統(tǒng)功能的調(diào)用和系統(tǒng)對(duì)用戶(hù)的反饋都是通過(guò)GUI進(jìn)行的。GUI軟件接口越來(lái)越復(fù)雜,GUI部分占據(jù)了應(yīng)用程序越來(lái)越多的代碼量,相應(yīng)的GUI軟件測(cè)試也成了一項(xiàng)復(fù)雜而煩瑣的工作。在軟件復(fù)雜度增加的同時(shí),軟件開(kāi)發(fā)周期卻在不斷變短,這給測(cè)試人員帶來(lái)了巨大的挑戰(zhàn)。

        減少重復(fù)勞動(dòng),節(jié)省人力、時(shí)間,提高測(cè)試效率,減少人工測(cè)試中的錯(cuò)誤,更好的協(xié)調(diào)開(kāi)發(fā)工作量與測(cè)試工作量,進(jìn)行GUI自動(dòng)化測(cè)試是軟件測(cè)試發(fā)展的一個(gè)必然趨勢(shì)。

        1 自動(dòng)化測(cè)試工具概述

        經(jīng)過(guò)很多年的發(fā)展,目前已經(jīng)有了相對(duì)成熟的GUI自動(dòng)化測(cè)試工具了。這些工具有著自己的優(yōu)點(diǎn),同時(shí)也有一定的應(yīng)用局限性。

        SilkTest是Segue公司的GUI測(cè)試工具[1]。它運(yùn)行在Windows平臺(tái),可以查詢(xún)和測(cè)試使用標(biāo)準(zhǔn)MFC庫(kù)生成的對(duì)象和GUI部件,也可以使用一些擴(kuò)展的功能來(lái)測(cè)試非 MFC的 GUI部件。進(jìn)行測(cè)試時(shí),SilkTest提供捕捉/回放功能,能夠與被測(cè)應(yīng)用進(jìn)行手工交互。一旦用戶(hù)選擇了待測(cè)的 GUI部件,SilkTest可以檢查該部件的標(biāo)識(shí)符、位置和物理標(biāo)簽。在用戶(hù)繼續(xù)操作應(yīng)用時(shí),SilkTest將用戶(hù)動(dòng)作翻譯成基于對(duì)象屬性或部件屏幕坐標(biāo)的測(cè)試腳本。WinRunner是惠普公司一款圖形界面自動(dòng)化測(cè)試工具。用戶(hù)可以簡(jiǎn)單的通過(guò)錄制/回放的特點(diǎn)來(lái)完成一個(gè)測(cè)試用例。在錄制過(guò)程中,它可以自動(dòng)捕獲檢測(cè)當(dāng)前的界面。把用戶(hù)在界面上的操作自動(dòng)轉(zhuǎn)換成可描述性的語(yǔ)言和事件。QTP(Mercury QuickTest Professional)主要用于回歸測(cè)試和同一軟件的新版本的測(cè)試,在自動(dòng)化測(cè)試工具中,QTP是一個(gè)典型的代表。

        開(kāi)源的 Java GUI自動(dòng)化測(cè)試工具也有很多。Abbot框架能夠?qū)ava應(yīng)用進(jìn)行GUI單元測(cè)試和功能測(cè)試[2]。它支持用戶(hù)使用java代碼編寫(xiě)測(cè)試腳本,也提供接口,讓用戶(hù)通過(guò)腳本來(lái)控制事件回放,以加強(qiáng)集成測(cè)試和功能測(cè)試。GUITAR是個(gè)GUI測(cè)試框架,提供解決GUI測(cè)試問(wèn)題的統(tǒng)一的解決方法,該工具著力于開(kāi)發(fā)新的基于事件的工具和技術(shù)。它包含一個(gè)測(cè)試用例生成器,可以生成測(cè)試用例,一個(gè)插件重放器負(fù)責(zé)在這些測(cè)試用例中運(yùn)行測(cè)試。Pounder是實(shí)現(xiàn)自動(dòng)java GUI測(cè)試的開(kāi)放源碼的工具。它包括不同的窗口,用戶(hù)可以用來(lái)記錄測(cè)試腳本,檢查測(cè)試結(jié)果。Selenium是一個(gè)用于Web應(yīng)用程序測(cè)試的工具[3],它的測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶(hù)在操作一樣。

        很多開(kāi)源的GUI自動(dòng)化測(cè)試框架都是基于java的,其中對(duì)于Swing窗口工具組,它的組件自動(dòng)產(chǎn)生各種事件來(lái)相應(yīng)用戶(hù)行為,通過(guò)注冊(cè)監(jiān)聽(tīng)器,我們可以監(jiān)聽(tīng)事件源產(chǎn)生的事件,從而在事件處理程序中處理我們所需要處理的用戶(hù)行為。但是Java運(yùn)行在虛擬機(jī)上,對(duì)于更廣泛的Windows的GUI測(cè)試沒(méi)有太多的借鑒意義。大部分通用的自動(dòng)化測(cè)試工具,如QTP,通常只能識(shí)別Windows標(biāo)準(zhǔn)的控件(按鈕,滾動(dòng)條,靜態(tài)控件, 列表框, 編輯框, 組合框)信息,不能識(shí)別自定義控件[4-5]。因此,在有自定義控件的軟件中,自動(dòng)化測(cè)試用例功能點(diǎn)覆蓋率比較低,無(wú)法使用通用自動(dòng)化測(cè)試工具實(shí)現(xiàn)完全自動(dòng)化。

        本文提出一種新的測(cè)試工具 GAT(Graphic Automatic Tester)設(shè)計(jì)方法和技術(shù),應(yīng)用于Windows下被測(cè)程序自定義控件比較多,對(duì)GUI自動(dòng)化測(cè)試覆蓋率要求比較高的測(cè)試場(chǎng)景。插件方法可以讓程序的設(shè)計(jì)和開(kāi)發(fā)人員為測(cè)試工具的完善提供支持,測(cè)試工具能夠識(shí)別所有的自定義控件,提供的測(cè)試腳本語(yǔ)言能夠描述所有的自動(dòng)化測(cè)試用例。采用關(guān)鍵字驅(qū)動(dòng)技術(shù),測(cè)試人員編輯測(cè)試腳本更加簡(jiǎn)單易懂,能大大提高整個(gè)自動(dòng)化測(cè)試過(guò)程的效率。

        2 相關(guān)技術(shù)

        2.1 遠(yuǎn)程線(xiàn)程DLL注入

        DLL(Dynamic Link Library)文件是 Windows操作系統(tǒng)中動(dòng)態(tài)鏈接庫(kù)文件,只有當(dāng)EXE程序確實(shí)要調(diào)用這些DLL模塊的情況下,系統(tǒng)才會(huì)將它們裝載到內(nèi)存空間中。這種方式不僅減少了EXE文件的大小和對(duì)內(nèi)存空間的需求,而且使這些DLL模塊可以同時(shí)被多個(gè)應(yīng)用程序使用?!癉LL注入”是指將一個(gè)DLL加載到一個(gè)正在運(yùn)行的進(jìn)程中,以達(dá)到執(zhí)行DLL中的代碼的方法[6]。

        DLL注入的基本思路是要求目標(biāo)進(jìn)程中的線(xiàn)程調(diào)用 LoadLibrary函數(shù)來(lái)加載目標(biāo) DLL。為了防止一個(gè)進(jìn)程破壞另一個(gè)進(jìn)程的運(yùn)行,Windows的大多數(shù)函數(shù)允許進(jìn)程只對(duì)自己進(jìn)行操作,有些函數(shù)卻允許一個(gè)進(jìn)程對(duì)另一個(gè)進(jìn)程進(jìn)行操作,比如 Create-RemoteThread,這是一個(gè)為調(diào)試程序設(shè)計(jì)的函數(shù),卻使我們能夠在另一個(gè)進(jìn)程中創(chuàng)建線(xiàn)程[7]。

        遠(yuǎn)程DLL線(xiàn)程DLL注入一般來(lái)說(shuō)可以分為 4個(gè)步驟:

        (1)VirtualAllocEx函數(shù),分配遠(yuǎn)程進(jìn)程的地址空間中的內(nèi)存。

        (2)再使用WriteProcessMemory函數(shù),將DLL的路徑名拷貝到第一個(gè)步驟中已經(jīng)分配的內(nèi)存中。

        (3)使用GetProcAddress函數(shù),獲取LoadLibrary(在Kernel32.dll中)函數(shù)地址。

        (4)使用CreateRemoteThread函數(shù),在遠(yuǎn)程進(jìn)程中創(chuàng)建一個(gè)線(xiàn)程,它調(diào)用正確的 LoadLibrary函數(shù),為它傳遞第一個(gè)步驟中分配的內(nèi)存的地址。

        2.2 COM 接口

        COM(Component Object Model)是由 Microsoft提出的組件標(biāo)準(zhǔn),它具有語(yǔ)言無(wú)關(guān)性和進(jìn)程透明性的特點(diǎn)。COM規(guī)范的定義不依賴(lài)于特定的語(yǔ)言,因此,編寫(xiě)組件對(duì)象所使用的語(yǔ)言與編寫(xiě)客戶(hù)使用的語(yǔ)言不同,只要他們都能夠生成符合 COM 規(guī)范的可執(zhí)行代碼即可。在客戶(hù)/服務(wù)器模型的軟件結(jié)構(gòu)中,運(yùn)行在客戶(hù)端的代碼和運(yùn)行在服務(wù)器端的代碼,既可以在同一進(jìn)程中,也可以在不同進(jìn)程中。COM的語(yǔ)言無(wú)關(guān)性,使得 COM 接口函數(shù)可以被任何腳本語(yǔ)言所調(diào)用,具有廣泛適用性。測(cè)試工具可以選擇最合適的腳本語(yǔ)言調(diào)用COM接口。

        COM組件有 IUnknown、IClassFactory、Idispatch三個(gè)最基本的接口類(lèi)[8],分別是用于生存期控制、接口查詢(xún),創(chuàng)建 COM 組件和調(diào)度功能。IDispatch接口為自動(dòng)化接口,有了IDispatch接口,腳本語(yǔ)言象VBScript、JavaScript等就能使用COM組件了。實(shí)現(xiàn)了 IDispatch接口的組件,其實(shí)就是自動(dòng)化組件。IDispatch接口有4個(gè)函數(shù),GetTypeInfoCount,GetTypeInfo,GetIDsOfNames,Invoke,Python 等解釋語(yǔ)言的執(zhí)行器就通過(guò)這僅有的4個(gè)函數(shù)來(lái)執(zhí)行組件所提供的功能。

        3 GA T總體設(shè)計(jì)

        3.1 總體架構(gòu)

        為了便于系統(tǒng)的開(kāi)發(fā)和維護(hù),GAT采用分層設(shè)計(jì),由上至下分為應(yīng)用層,抽象層,功能層和插件層。應(yīng)用層負(fù)責(zé)測(cè)試業(yè)務(wù)功能,保證測(cè)試用例的執(zhí)行,主要包括測(cè)試腳本和測(cè)試數(shù)據(jù)兩部分內(nèi)容。抽象層按照被測(cè)試程序控件對(duì)象對(duì)底層函數(shù)進(jìn)行了封裝,屏蔽底層功能實(shí)現(xiàn)細(xì)節(jié)。功能層負(fù)責(zé)將DLL插件遠(yuǎn)程注入被測(cè)試程序,模擬用戶(hù)向被測(cè)試程序發(fā)送鼠標(biāo)和鍵盤(pán)消息。插件層主要負(fù)責(zé)被測(cè)試程序控件信息的獲取[9-12]。

        GAT啟動(dòng),GetTestInfo插件被映射到被測(cè)程序空間后,收集被測(cè)程序相關(guān)信息。對(duì)象庫(kù)中控件類(lèi)(Button,)進(jìn)行初始化,通過(guò) PT代理調(diào)用GetTestInfo的接口函數(shù),獲得辨別控件對(duì)象句柄和取得對(duì)象的坐標(biāo)位置等信息,并把信息賦值給對(duì)象庫(kù)中對(duì)應(yīng)類(lèi)成員。測(cè)試腳本執(zhí)行測(cè)試用例,按照要求在指定位置或者控件句柄發(fā)送鍵盤(pán)或者鼠標(biāo)事件,完成用戶(hù)單個(gè)行為模擬。圖1展示了GAT的架構(gòu)圖。

        3.2 架構(gòu)分析

        應(yīng)用層主要包括了測(cè)試腳本和測(cè)試數(shù)據(jù)的組織和執(zhí)行。為了便于共享測(cè)試數(shù)據(jù),GAT將相關(guān)聯(lián)數(shù)據(jù)統(tǒng)一管理起來(lái)作為測(cè)試數(shù)據(jù)文件,如被測(cè)程序需要用到的帳號(hào)數(shù)據(jù)另外放在測(cè)試數(shù)據(jù)文件中。測(cè)試用例表示復(fù)雜的場(chǎng)景時(shí),GAT將其分割為多個(gè)測(cè)試用例并將這些測(cè)試用例分組到一個(gè)測(cè)試套件中,然后使測(cè)試腳本與該套件中的每個(gè)測(cè)試用例相關(guān)聯(lián)。借助測(cè)試套件,對(duì)構(gòu)成測(cè)試套件所測(cè)試的復(fù)雜場(chǎng)景的相關(guān)測(cè)試用例的執(zhí)行進(jìn)行規(guī)劃、啟動(dòng)和跟蹤。整個(gè)測(cè)試腳本由測(cè)試用例腳本和測(cè)試套腳本組成,一般測(cè)試用例腳本執(zhí)行具體的測(cè)試用例操作,測(cè)試套腳本主要用于執(zhí)行整個(gè)測(cè)試場(chǎng)景的一些初始化或結(jié)束被測(cè)程序的操作,使用Python語(yǔ)言編寫(xiě)。

        圖1 GA T總體架構(gòu)圖Fig.1 GA T architecture

        抽象層封裝了GetTestInfo插件和GUI測(cè)試庫(kù)的底層函數(shù),實(shí)現(xiàn)了簡(jiǎn)化測(cè)試腳本編寫(xiě)的功能。抽象層將被測(cè)試程序界面中存在的所有對(duì)象實(shí)體一一映射成邏輯對(duì)象,如對(duì)話(huà)框,編輯框,按鈕等控件分別與抽象層中Dialog,Edit,Button等Python類(lèi)相對(duì)應(yīng),測(cè)試腳本針對(duì)邏輯對(duì)象進(jìn)行。抽象層降低了應(yīng)用層測(cè)試腳本與功能層 GUI測(cè)試庫(kù)接口的耦合性,測(cè)試腳本編寫(xiě)更直觀。被測(cè)程序界面改變時(shí),抽象層的存在可以大大減少測(cè)試維護(hù)的工作量,寫(xiě)腳本也更容易。有了抽象層,測(cè)試腳本不再需要關(guān)心底層的函數(shù),因?yàn)槌橄髮又械倪壿媽?duì)象會(huì)去調(diào)用底層提供的函數(shù)接口實(shí)現(xiàn)。

        功能層包括了GUI測(cè)試庫(kù)和PT代理。用戶(hù)對(duì)GUI程序的操作可以分為有限幾種類(lèi)型,比如單雙擊鼠標(biāo)、鍵盤(pán)輸入字符等,因此在GAT框架中編寫(xiě)了一個(gè)GUI測(cè)試庫(kù)來(lái)支持函數(shù)的復(fù)用,減少上層調(diào)用函數(shù)的代碼量。與用戶(hù)GUI程序操作相對(duì)應(yīng),它把 Windows操作系統(tǒng)的 API封裝成通用的Mouse_RightClick等函數(shù)庫(kù)。PT代理初始化時(shí),將GetTestInfo.dll注入被測(cè)試程序,保存COM接口指針。運(yùn)行過(guò)程中,PT將GetTestInfo.dll獲取的窗口文件句柄和空間坐標(biāo)位置信息實(shí)時(shí)傳遞給抽象層。

        4 GA T關(guān)鍵技術(shù)實(shí)現(xiàn)

        4.1 插件實(shí)現(xiàn)

        插件主要實(shí)現(xiàn)注入和卸載過(guò)程、跨進(jìn)程通信、獲取被測(cè)試程序控件信息功能。進(jìn)行GetTestInfo.dll動(dòng)態(tài)庫(kù)注入時(shí),PT代理先把DLL映射到自己的進(jìn)程空間,再通過(guò)調(diào)用 CreateRemoteThread實(shí)現(xiàn)了DLL注入與卸載,為了保證遠(yuǎn)程創(chuàng)建線(xiàn)程調(diào)用成功,PT通常還需要調(diào)用等待函數(shù) WaitForSingleObject與被測(cè)進(jìn)程同步。

        測(cè)試用例腳本由腳本解釋器解釋運(yùn)行,它運(yùn)行在腳本解釋器的進(jìn)程空間中,而GetTestInfo.dll在被測(cè)程序的進(jìn)程空間運(yùn)行,因此要解決跨進(jìn)程通訊問(wèn)題。ATL是Microsoft Visual Studio提供的一套基于模板的 C++類(lèi)庫(kù)[13],利用模板類(lèi)快速建立的 COM組件程序。采用 COM 接口的代理和存根模式,使得跨進(jìn)程間通信就像“指針”調(diào)用,而不用考慮跨進(jìn)程細(xì)節(jié)問(wèn)題。GetTestInfo.dll生成COM對(duì)象實(shí)例Cget::CreateInstance(&g_pGet),CreateInstance 是CGet類(lèi)的成員函數(shù),它創(chuàng)建一個(gè)CGet實(shí)例,然后調(diào)用PT代理的COM服務(wù)把創(chuàng)建實(shí)例的指針傳遞給PT代理。CGet類(lèi)的定義如下。

        IGet是 COM接口類(lèi)。接口類(lèi)里的成員函數(shù)都是虛函數(shù),CGet繼承 IGet類(lèi),IGet里的成員函數(shù)在CGet中定義。

        測(cè)試腳本調(diào)用PT傳過(guò)來(lái)的COM接口指針獲取被測(cè)程序GUI界面的信息。GetTestInfo.dll與被測(cè)試程序位于同一進(jìn)程空間中,可以直接調(diào)用目標(biāo)進(jìn)程中的函數(shù),從而獲取被測(cè)試程序信息。GetTestInfo.dll運(yùn)行的COM實(shí)例CGet繼承IGet接口,因此把測(cè)試腳本需要用到的獲取信息封裝成 IGet的接口函數(shù)后,可以由測(cè)試腳本調(diào)用。

        4.2 對(duì)象庫(kù)

        對(duì)象庫(kù)根據(jù)界面的層次關(guān)系用 XML的層次表現(xiàn)出來(lái)。以圖2為例,它在對(duì)象庫(kù)中的代碼表現(xiàn)形式如下。

        其中,“Python 2.7.13 Setup”對(duì)話(huà)框是一個(gè)父窗口,其它控件都在這個(gè)對(duì)話(huà)框上面,所以在對(duì)象庫(kù)中,這個(gè)對(duì)話(huà)框作為最外層的一個(gè) XML節(jié)點(diǎn)。它屬于Dialog類(lèi),所以它的class是”Dialog”類(lèi)型。其它的Back按鈕,Next按鈕,Cancel按鈕等控件都在對(duì)話(huà)框上面,所以它們是“Python 2.7.13 Setup”對(duì)話(huà)框節(jié)點(diǎn)的子節(jié)點(diǎn)。這樣就形成了一個(gè)對(duì)象庫(kù)。

        圖2 界面示例Fig.2 GUI demo

        對(duì)對(duì)象庫(kù)的解析過(guò)程就是Python對(duì)XML的解析過(guò)程。Python中的XML庫(kù)支持解析XML[14],所以Python在解析XML前需要import xml,然后通過(guò)XML庫(kù)函數(shù)實(shí)現(xiàn)對(duì)XML的解析。代碼如下所示:

        pathList = UniStr(self._path).split('-')

        for i in range(len(pathList)):

        if i == len(pathList)-1:self._obj=objList.GetObjectByText(objTxt, self._class)

        else: self._obj = objList.GetObjectByText(objTxt)

        if self._obj.HasAttr('WCtrl'):

        解析模塊首先會(huì)把對(duì)象的路徑通過(guò)“-”把界面的層次間隔開(kāi)來(lái)。抽象層解釋測(cè)試腳本時(shí),首先把路徑通過(guò)“-”分隔開(kāi),然后按照XML的相應(yīng)的層次關(guān)系,在 XML中一步一步深入到內(nèi)層節(jié)點(diǎn),找到目標(biāo)節(jié)點(diǎn),完成了對(duì)象庫(kù)的解析過(guò)程。路徑表示窗口的一個(gè)父子關(guān)系,父窗口寫(xiě)在前面,它的子窗口寫(xiě)在后面。

        4.3 關(guān)鍵字驅(qū)動(dòng)

        為測(cè)試腳本采用了關(guān)鍵字腳本技術(shù)[15],測(cè)試腳本中的對(duì)象關(guān)鍵字Dialog等都由抽象層中對(duì)應(yīng)的類(lèi)解釋。抽象層解釋類(lèi)時(shí),首先做類(lèi)的初始化,通過(guò)對(duì)象庫(kù)唯一標(biāo)識(shí)對(duì)象。當(dāng)類(lèi)初始化完畢,對(duì)象所有的屬性,如坐標(biāo)位置等,都存儲(chǔ)在類(lèi)的成員變量中。測(cè)試腳本中的對(duì)象行為由類(lèi)的成員函數(shù)完成。測(cè)試腳本如下所示:

        Dialog('主面板').RClickInDialog(a[6]+5,a[7]+5)Sleep(1)

        Menu('設(shè)置').Select('我的信息')

        Sleep(1)

        Edit('搜索-條件匹配').SetValue(ATSP['UID3']['account'])

        Button('主面板-打開(kāi)管理器').Click()

        腳本的最后一句中,“主面板-打開(kāi)管理器”表示父窗口是“主面板”,“打開(kāi)消息管理器”是“主面板”的一個(gè)子窗口。這句話(huà)的意思是單擊“主面板”里的“打開(kāi)管理器”的按鈕。測(cè)試腳本執(zhí)行時(shí),抽象層首先會(huì)調(diào)用 Button的__init__成員函數(shù)對(duì)Button進(jìn)行初始化。初始化函數(shù)會(huì)調(diào)用_findObj函數(shù),這個(gè)函數(shù)通過(guò)對(duì)象庫(kù)對(duì)“主面板-打開(kāi)管理器”進(jìn)行解析。當(dāng)抽象層執(zhí)行Button的Click時(shí),Click成員函數(shù)會(huì)去調(diào)用GUI函數(shù)庫(kù)里的MouseClickInsideHWnd,然后操作系統(tǒng)會(huì)在Button的坐標(biāo)處產(chǎn)生鼠標(biāo)點(diǎn)擊這一虛擬事件。

        5 結(jié)論

        本文針對(duì)GUI測(cè)試的獨(dú)特性和當(dāng)前常用測(cè)試工具的一些缺點(diǎn),對(duì)GUI自動(dòng)化測(cè)試策略,方法和技術(shù)進(jìn)行了深入的探討。提出了新的設(shè)計(jì),采用插件技術(shù),關(guān)鍵字驅(qū)動(dòng)測(cè)試腳本,對(duì)象庫(kù),GUI測(cè)試庫(kù)。

        使得在Windows下,測(cè)試工具的功能得到了很大的增強(qiáng),腳本的編寫(xiě)也變得簡(jiǎn)單,編寫(xiě)效率也有了大大的提高。GAT全部采用腳本編寫(xiě)模式測(cè)試,完全了擺脫了傳統(tǒng)捕捉/回放模式,自動(dòng)化覆蓋達(dá)到90%以上,而且自動(dòng)化測(cè)試工具運(yùn)行也變得更加穩(wěn)定。目前 GAT在 GUI自動(dòng)化測(cè)試解決方案的實(shí)現(xiàn)過(guò)程中,只是形成了一個(gè)具有簡(jiǎn)單功能的GUI自動(dòng)化測(cè)試工具。實(shí)現(xiàn)屏幕錄制,支持聯(lián)機(jī)和單機(jī)工作模式,支持?jǐn)?shù)據(jù)庫(kù)和文件存儲(chǔ)模式,支持多機(jī)協(xié)作將是GAT下一步研究工作的重點(diǎn)。

        [1] 鄭翠. 基于SilkTest工具對(duì)山東移動(dòng)iCRM系統(tǒng)的自動(dòng)化測(cè)試[D]. 濟(jì)南: 山東大學(xué).

        [2] 王沖. Java GUI自動(dòng)化測(cè)試工具的實(shí)現(xiàn)[D]. 上海: 東華大學(xué).

        [3] 張競(jìng)帆. 基于Selenium的一種Web自動(dòng)化測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京: 北京交通大學(xué).

        [4] 吳瓊. 基于QTP自動(dòng)化測(cè)試框架的研究與應(yīng)用[D]. 北京:中國(guó)科學(xué)院大學(xué).

        [5] 王健, 李亞偉, 朱璇. 使用QTP 對(duì)Silverlight 應(yīng)用進(jìn)行自動(dòng)化測(cè)試的研究與實(shí)踐[J]. 軟件, 2014. 35(4): 18-20.

        [6] 陳莊, 王津梁, 張醍. 手工DLL注入的檢測(cè)方法研究與實(shí)現(xiàn)[J]. 信息安全研究. 2017, 3(3): 246-253.

        [7] Jeffrey Richter. Windows核心編程(第5版)[M]. 葛子昂等譯.北京: 清華大學(xué)出版社, 2008.

        [8] 何卉, 徐志躍, 張秀磊. 基于COM 組件技術(shù)的測(cè)控系統(tǒng)軟件框架設(shè)計(jì)[J]. 電子設(shè)計(jì)工程. 2017, 25(11): 61-64.

        [9] 吳立金, 韓新宇, 張凱等. 一種非侵入的GUI自動(dòng)化測(cè)試系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)測(cè)量與控制.2017, 25(12): 49-53.

        [10] 涂華軻, 鄒華, 林榮恒. 增強(qiáng)的云化并行計(jì)算框架系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 新型工業(yè)化, 2012, 2(12): 33-40.

        [11] 王影, 劉卉, 趙娟. 軟件部件仿真測(cè)試平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與設(shè)計(jì). 2017, 31(11): 3061-3065.

        [12] 王如迅. 基于SWTBot技術(shù)的軟件自動(dòng)化測(cè)試的研究與實(shí)現(xiàn)[J]. 軟件, 2016, 37(02): 121-128

        [13] Brent Rector, Chris Sells.ATL技術(shù)內(nèi)幕[M]. 北京: 科學(xué)出版社, 2003.

        [14] Wesley Chun. Python核心編程(第3版)[M]. 孫波翔等譯.北京: 人民郵電出版社, 2016.

        [15] 黨若楠, 陳健. 基于關(guān)鍵字驅(qū)動(dòng)的Web自動(dòng)化測(cè)試框架研究與實(shí)現(xiàn)[J]. 工業(yè)控制計(jì)算機(jī).2017, 30(9): 46-47.

        猜你喜歡
        測(cè)試工具測(cè)試用例腳本
        邊緣智力兒童及其智力測(cè)試工具的研究進(jìn)展
        酒駕
        安奇奇與小cool 龍(第二回)
        基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
        Http并發(fā)連接測(cè)試工具
        數(shù)據(jù)庫(kù)系統(tǒng)shell腳本應(yīng)用
        基于混合遺傳算法的回歸測(cè)試用例集最小化研究
        快樂(lè)假期
        福祿克推出先進(jìn)的連接式測(cè)試工具系統(tǒng)
        基于依賴(lài)結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
        夜晚黄色福利国产精品| 中文字幕久久久久久久系列| 美女叉开双腿让男人插| 中文字幕亚洲在线第一页| 免费不卡在线观看av| 人人妻人人澡人人爽人人精品| 精品国产高清a毛片| 日本不卡不二三区在线看| 又粗又黑又大的吊av| 人妻精品无码一区二区三区| 久久se精品一区二区国产| 国产免费操美女逼视频| 中文字幕一精品亚洲无线一区| 欧美真人性做爰一二区| bbbbbxxxxx欧美性| 日本久久精品视频免费| 久久久久亚洲精品无码网址蜜桃 | 国产成人自拍视频在线免费| 麻豆久久91精品国产| 鲁一鲁一鲁一鲁一曰综合网| 自拍偷拍亚洲一区| 亚洲色图第一页在线观看视频| 国产一级内射视频在线观看| 久久精品娱乐亚洲领先| 国产精品丝袜美女在线观看| 蜜桃视频在线在线观看| 久久久免费精品re6| 久久99精品久久久久久久清纯| 精品中文字幕日本久久久 | 性色av一区二区三区四区久久| 亚洲av福利天堂一区二区三| 影视先锋av资源噜噜| 亚洲成AV人久久| 日本一本一道久久香蕉男人的天堂| 亚洲av不卡一区二区三区| 热久久网站| 日韩成人高清不卡av| 国产一区二区三区四区三区| 成全视频高清免费| 日本最新一区二区三区视频| 成年美女黄网站色大免费视频 |