qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          軟件測試實(shí)驗(yàn)學(xué)習(xí)筆記系列6--圖形界面測試(GUI)

           圖形用戶界面測試

            界面是軟件和用戶交互的最直接的層面,界面決定了用戶對軟件的印象,GUI,設(shè)計良好GUI—輕松愉悅的感覺。Web應(yīng)用+網(wǎng)頁制作--->GUI設(shè)計的興起.

            流行的界面風(fēng)格:多窗體風(fēng)格,單窗體風(fēng)格,資源管理器風(fēng)格

            特性:易用性,規(guī)范性,幫助,合理性,美觀與協(xié)調(diào),菜單位置,獨(dú)特性,快捷方式的結(jié)合,安全性考慮,多窗口的應(yīng)用與系統(tǒng)資源。

            GUI測試重點(diǎn)是正確性,易用性和視覺效果,文字檢查和拼寫檢查是GUI測試的重要環(huán)節(jié)。

            用戶通過GUI拖動鼠標(biāo),單擊按鈕等來驅(qū)動軟件完成需要的功能,這個涉及到:

            GUI輸入主要是由一系列的事件或行動完成,擁有大量需要測試的狀態(tài),輸入和狀態(tài)轉(zhuǎn)移不僅僅與當(dāng)前的輸入事件有關(guān),而且還與以前的輸入事件相關(guān)

            GUI軟件的輸入和事件的排列組合的數(shù)據(jù)非常巨大,執(zhí)行路徑比較多(想想100階乘和101階乘的區(qū)別)

            GUI中包含了大量復(fù)雜的組件和控件,允許多個窗口被激活,彼此之間存在一些同步機(jī)制,窗口中每個對象可以影響和控制其他對象

            GUI界面之間相互影響,相互依賴。--耦合度高

            GUI軟件是基于事件和消息的。

            GUI測試中的很多方法是重復(fù)而枯燥的。

            除了考慮圖形對象測試的本身特性,系統(tǒng)工作流程的測試也是一個重點(diǎn),數(shù)據(jù)庫設(shè)計,程序結(jié)構(gòu)設(shè)計最終要界面設(shè)計的

            GUI測試的基本過程:1.執(zhí)行用戶操作,2.獲取檢測狀態(tài),3.對比驗(yàn)證內(nèi)容

            基本原理:測試者在運(yùn)行應(yīng)用程序的同時,把他的所有的動作(鍵盤操作,鼠標(biāo)操作)捕獲或者錄制下來,生成一個腳本文件,這個腳本文件以后可以被”回放“(playback),也就是按照上一次的所有執(zhí)行動作重復(fù)執(zhí)行一遍,實(shí)現(xiàn)自動運(yùn)行和測試。在實(shí)際的測試過程中,同一動作的重復(fù)執(zhí)行意義不大,而是根據(jù)測試需求為其進(jìn)行一些必要的修改。

            GUI自動化測試工具的捕獲/錄制模式--->原型級的實(shí)現(xiàn)--->插入檢查點(diǎn),維護(hù)腳本--->編程修改,GUI自動化測試:軟件規(guī)范過程,在錄制前設(shè)計好測試用例.

            GUI自動測試工具:開源的Java的GUI測試工具—Selenium。SWTBot用于SWT,基于Eclipse應(yīng)用的GUI測試工具,提供了能簡化訪問SWT和Eclipse組件的API,基于Apache2許可協(xié)議。其測試運(yùn)行配置和JUnit非常的相似,測試方法的結(jié)構(gòu)也很相似

            1.JavaGUI基礎(chǔ)類庫應(yīng)用測試

            JavaGUI: SWT/JFace,Swing,AWT(Abstract WindowingToolkit)--->java.awt,JFC的一部分--->提供了JavaApplet,JavaApplicaton中可用的GUI中的基本組件,Swing自己繪制控件,調(diào)用本地圖形子系統(tǒng)中的底層例程,而不是依賴于OS的高層模塊。模仿原生系統(tǒng),純Java,輕量級,大量運(yùn)用MVC模式的GUI工具包。SWT/JFace—Eclipse--高效的GUI程序

            1.1JFCUnit單元測試工具的介紹

            Xp測試驅(qū)動開發(fā)觀念,單元測試技術(shù),Java-->JUnit+Ant,JUnit的局限性,HttpUnit--Web測試,GUI--JFCUnit。

            JFCUnit是JUnit的擴(kuò)展框架,擴(kuò)展了針對SwingGUI的單元測試工具,提供的一些基本功能:

            ①捕獲取窗體/對話框的句柄

            ②在一個進(jìn)程的組件容器內(nèi),確定所需要的組件

            ③模擬觸發(fā)組件的事件

            ④用于GUI測試的多線程方法

            JFCUnit從2.0開始,提供XML錄制和回放功能,允許使用者快速,自動地生成/編輯用于驅(qū)動測試的腳本。XMLAPI是公開的,可以定義自己的XML標(biāo)簽句柄。

            1.2JFCUnit基本測試方法

            思路:提供了很多方法,可以用來模擬許多本地應(yīng)該有傳統(tǒng)測試人員手工進(jìn)行的觸發(fā)事件:單擊按鈕,在文本礦中輸入字符,數(shù)字,鼠標(biāo)雙擊事件,從而實(shí)現(xiàn)測試的自動化。

            兩種方式模擬交互:①Junit.Extensions.Jfcunit.JFCTestHelper的EevenQueue來激活事件隊(duì)列②使用Junit.Extensions.Jfcunit.RobotTestHelper來封裝java.awt.Robot

            JFCUnit的測試用例類似于任何其他的JUnit測試用例。其主要不同在于它的

            測試用例類應(yīng)繼承自基類Junit.Extensions.Jfcunit.JFCTestCase,而不是基

            類:Junit.Framework.TestCase。

          1.3 JFCunit環(huán)境的建立

            JFCUnit—SourceForge.net—Eclipse插件安裝—配置路徑(jfcunit.jar,jakarta-regexp-1.2.jar{正則表達(dá)式j(luò)ava包,如果沒有這個包,jfc就會發(fā)生錯誤})

            1.4測試資源應(yīng)用

            JFCunit是擴(kuò)展了Junit,具有很多屬于自己的測試資源。

            1.4.1 JFCUnit核心函數(shù)的應(yīng)用方式

            ⑴setUp()和tearDown()

            在junit框架中用于測試的初始化和結(jié)束測試,釋放資源

            setUp()在測試方法調(diào)用前,負(fù)責(zé)初始化測試方法所需要的測試環(huán)境

            tearDown()在每個測試方法被調(diào)用之后調(diào)用,負(fù)責(zé)撤銷測試環(huán)境

            流程:測試開始-->setUp()-->testXXX-->tearDown()-->測試結(jié)束

            ⑵Find-Component

            JFCUnit中對對象測試的基礎(chǔ)是捕獲測試對象的實(shí)例,關(guān)鍵是find...Component系列API的應(yīng)用.具體查找主要基于兩個方面,對象組件的”Name”數(shù)據(jù)和容器中的Index。

          PublicComponent find(final Container cont,final int index){
          returnfind(new Container[] {cont},index);
          }

            ⑶assert函數(shù)

          assertNull(Stringmessage,Object object);
          assertNotNull(Stringmessage,Object object);
          assertEquals(Stringmessage,Object expected,Object actual);
          assertTrue(Stringmessage,boolean condition);
          assertFalse(Stringmessage,boolean condition);
          assertSame(Stringmessage,Object expected,Object actual);
          assertNotSame(Stringmessage,Object expected,Object actual);

            ⑷JFCTesthelper和TestHelper

            JFCTesthelper繼承TestHelper中很多用于自動畫界面操作的方法。

            1.5 JFCUnit的使用--GUI類和實(shí)驗(yàn)

            突然間發(fā)現(xiàn)自己做了很多的重復(fù)的工作,處在互聯(lián)網(wǎng)3.0的時代,我們應(yīng)該充分的利用網(wǎng)絡(luò),以下是我google的一些JFCUnit的文章,寫得還是相當(dāng)?shù)牟诲e的。

            JFCUnit實(shí)戰(zhàn):http://www.ltesting.net/ceshi/open/kydycsgj/2007/0525/5733.html

            使用JFCUnit進(jìn)行GUI單元測試 :http://www.aygfsteel.com/wukaichun600/archive/2006/10/19/76026.html

            以上僅僅是google后第1,2頁顯示的結(jié)果,google讓知識的獲取變得更加的簡單了。知識的來源不再是僅僅局限于書本,通過搜索引擎(google,baidu)從Internet上獲取知識漸漸成為一個更為便捷有效的方式。這件事情既是機(jī)遇也是挑戰(zhàn)。

            機(jī)遇:人類從未如此便捷的獲取知識過,搜索引擎加速了信息的流通,使得我們可以更為方便的整合知識。

            挑戰(zhàn):隨著可獲取的信息量的膨脹,在如此龐大的信息中識別出有效的信息成為了一個問題。此外,搜索引擎提供的普遍的知識原始的材料,如何處理和整合這些信息從而創(chuàng)造出更有價值的知識無疑將成為當(dāng)代知識分子的所面臨的挑戰(zhàn)。

            1.6JFCUnitXML測試框架

            JFCUnitXML是一個建立的XML框架之上的測試框架。XML框架支持Swing和非Swing的測試,框架圖示如下:

            JFCUnitXML允許開發(fā)者編寫XML代碼來開發(fā)用于各種測試目的的測試集。錄制生成XML的方式使大多數(shù)的測試生成過程自動化,可復(fù)用性高

            1.3 JFCunit環(huán)境的建立

            JFCUnit—SourceForge.net—Eclipse插件安裝—配置路徑(jfcunit.jar,jakarta-regexp-1.2.jar{正則表達(dá)式j(luò)ava包,如果沒有這個包,jfc就會發(fā)生錯誤})

            1.4測試資源應(yīng)用

            JFCunit是擴(kuò)展了Junit,具有很多屬于自己的測試資源。

            1.4.1 JFCUnit核心函數(shù)的應(yīng)用方式

            ⑴setUp()和tearDown()

            在junit框架中用于測試的初始化和結(jié)束測試,釋放資源

            setUp()在測試方法調(diào)用前,負(fù)責(zé)初始化測試方法所需要的測試環(huán)境

            tearDown()在每個測試方法被調(diào)用之后調(diào)用,負(fù)責(zé)撤銷測試環(huán)境

            流程:測試開始-->setUp()-->testXXX-->tearDown()-->測試結(jié)束

            ⑵Find-Component

            JFCUnit中對對象測試的基礎(chǔ)是捕獲測試對象的實(shí)例,關(guān)鍵是find...Component系列API的應(yīng)用.具體查找主要基于兩個方面,對象組件的”Name”數(shù)據(jù)和容器中的Index。

          PublicComponent find(final Container cont,final int index){
          returnfind(new Container[] {cont},index);
          }

            ⑶assert函數(shù)

          assertNull(Stringmessage,Object object);
          assertNotNull(Stringmessage,Object object);
          assertEquals(Stringmessage,Object expected,Object actual);
          assertTrue(Stringmessage,boolean condition);
          assertFalse(Stringmessage,boolean condition);
          assertSame(Stringmessage,Object expected,Object actual);
          assertNotSame(Stringmessage,Object expected,Object actual);

            ⑷JFCTesthelper和TestHelper

            JFCTesthelper繼承TestHelper中很多用于自動畫界面操作的方法。

            1.5 JFCUnit的使用--GUI類和實(shí)驗(yàn)

            突然間發(fā)現(xiàn)自己做了很多的重復(fù)的工作,處在互聯(lián)網(wǎng)3.0的時代,我們應(yīng)該充分的利用網(wǎng)絡(luò),以下是我google的一些JFCUnit的文章,寫得還是相當(dāng)?shù)牟诲e的。

            JFCUnit實(shí)戰(zhàn):http://www.ltesting.net/ceshi/open/kydycsgj/2007/0525/5733.html

            使用JFCUnit進(jìn)行GUI單元測試 :http://www.aygfsteel.com/wukaichun600/archive/2006/10/19/76026.html

            以上僅僅是google后第1,2頁顯示的結(jié)果,google讓知識的獲取變得更加的簡單了。知識的來源不再是僅僅局限于書本,通過搜索引擎(google,baidu)從Internet上獲取知識漸漸成為一個更為便捷有效的方式。這件事情既是機(jī)遇也是挑戰(zhàn)。

            機(jī)遇:人類從未如此便捷的獲取知識過,搜索引擎加速了信息的流通,使得我們可以更為方便的整合知識。

            挑戰(zhàn):隨著可獲取的信息量的膨脹,在如此龐大的信息中識別出有效的信息成為了一個問題。此外,搜索引擎提供的普遍的知識原始的材料,如何處理和整合這些信息從而創(chuàng)造出更有價值的知識無疑將成為當(dāng)代知識分子的所面臨的挑戰(zhàn)。

            1.6JFCUnitXML測試框架

            JFCUnitXML是一個建立的XML框架之上的測試框架。XML框架支持Swing和非Swing的測試,框架圖示如下:

            JFCUnitXML允許開發(fā)者編寫XML代碼來開發(fā)用于各種測試目的的測試集。錄制生成XML的方式使大多數(shù)的測試生成過程自動化,可復(fù)用性高


          JFCUnitXML基礎(chǔ)

            XML是一種基于SGML的標(biāo)記語言,成為網(wǎng)絡(luò)數(shù)據(jù)交互的強(qiáng)大工具。XML提供了定義和處理GUI測試的一個有效的方法,在JFCUnit類中開發(fā)出了XML接口,XML執(zhí)行接口。

            XMLJunit框架:定義特性—可以在作用域范圍內(nèi)允許它在測試用例之間使用,定義在XML中的各個測試用例可以訪問定義在父類或者祖父類的特性,父級可以通過執(zhí)行特性名來隱式訪問,或者”../”父訪問路徑來顯式訪問。特性可以通過${name}訪問。程序可以在測試集和測試用例上定義,父類能夠在更高級層次上定義---可以生成程序庫。

            兩個保留程序:setUp,tearDown—對應(yīng)TestCase.setUp|tearDown

            擴(kuò)展XML接口,taghandler結(jié)合Java后端開發(fā)并寫入XML中,taghandler通過XML腳本定義進(jìn)行注冊/不注冊,taghandler的概念:

            Suitetags: 1.引入定義在其他XML文件中有關(guān)文件中的有關(guān)集的文件標(biāo)簽,2.程序標(biāo)簽定義3.在測試用例間共享特性標(biāo)簽

          Suiteof Suites:
          <suitename=”Abc”>
          <filename=”a.xml”/>
          <filename=”b.xml”/>
          <filename=”subdir/c.xml”>
          </suite>

          程序標(biāo)簽
          <suite name=”Procedure Example”>
          <procedure name=”Login”>
          …..
          </procedure>
          <procedure name=”Logout”>
          …..
          </procedure>
          <test name=”Login”>
          <procedurecall=”Login”>
          </test>
          </suite>


            特性標(biāo)簽

            標(biāo)簽名對應(yīng)于相應(yīng)值

            作用域

            訪問文法:${name}syntax

            定義:<propertyname=”debug” value=”true”/>

            其他定義

            向程序員傳遞數(shù)據(jù)

            判定標(biāo)簽進(jìn)行分支跳轉(zhuǎn)

            對各種標(biāo)簽進(jìn)行循環(huán)處理

            Chose/When/Otherwise,Echo, Noop, Assert/Fail, Evaluate, Foreach, Indexof,Dump,

            AssertHasFocus,AssertEnabled,AssertTableCellContains,AssertTextFieldContains

            1.7 小節(jié)

            JFCUnit XML:說到底就是JFCUnit的一種高一個層次封裝,通過XML來描述測試用例,然后使用某中類型的代碼生成器將XML描述轉(zhuǎn)換為JFCUnit代碼,從而避免了手工Code。高層次的抽象帶來的好處就是可以屏蔽一些繁瑣的細(xì)節(jié),從而讓程序員專注更加重要的應(yīng)用上,而不是浪費(fèi)時間在底層細(xì)節(jié)上。這中思想在很多的方面被廣泛的應(yīng)用,操作系統(tǒng),編程語言,編譯系統(tǒng)等等。

            2 Web頁面測試

            Internet技術(shù)發(fā)展,Web系統(tǒng)變得越來越復(fù)雜,Web工程:測試,確認(rèn),驗(yàn)收。Web環(huán)境:瀏覽器平臺不兼容,網(wǎng)絡(luò)多樣化,應(yīng)用復(fù)雜等諸多特性。

            Web測試分類:頁內(nèi)測試(IntraPageTest)和跨頁測試(InterPageTest)

            頁內(nèi)測試的方法:人工走查,使用web頁面測試工具.

            頁面測試準(zhǔn)則:直觀,一致,靈活,舒適

            2.1web頁面測試工具

            web頁面測試的兩種思路:1.瀏覽器測試2.協(xié)議測試(在Http上的JavaScript級測試,JavaScript偽協(xié)議, POST, WebService).在一些功能測試中,協(xié)議測試用的比較的多。

            Web測試工具:

            1.HttpUnit:HttpUnit是在JUnit之上構(gòu)建的測試框架,支持Web應(yīng)用的黑盒測試和in-container容器內(nèi)測試。作為功能測試工具,也可以用它驗(yàn)證軟件是否符合業(yè)務(wù)需求,以及是否在可視的級別符合預(yù)期的行為。HttpUnit的目的加強(qiáng)HTTP對Web應(yīng)用的訪問,支持的特性:狀態(tài)管理(cookies),提交請求,應(yīng)答解析(HTML解析),以及網(wǎng)絡(luò)爬蟲(webspider)。HttpUnit還有一個支持容器內(nèi)測試的類ServletUnit.JUnit提供的斷言功能和結(jié)果報告的基礎(chǔ)上,HttpUnit提供了一個非常有用的web應(yīng)用測試工具。www.httpunit.org.

            2.JWebUnit:HttpUnit上創(chuàng)建的一個輔助工具包,減少測試web程序所要編寫的代碼,簡單當(dāng)作HttpUnit的宏程序庫,提供到HttpUnit代碼段的快速方式,簡化web程序測試中的大多數(shù)行為,HttpUnit的底層接口可以讓測試人員定制很多事情,JWebUnit對代碼有更好的控制。jwebunit.sourceforge.net

            3.StrutsTestCase:是為了測試Struts應(yīng)用而在Junit基礎(chǔ)上創(chuàng)建的測試框架,Structs(MVC模式)使web程序容器間的功能測試和單元測試變得更復(fù)雜了。Struts使web程序容器之間(in-container)的功能測試和單元測試變得復(fù)雜了,Struts處于servlet容器和程序之間,HttpUnit獨(dú)立于程序和容器之間.StrutsTestCase轉(zhuǎn)為Struts程序的容器間測試而設(shè)計的.strutstestcase.sourceforge.net

            4.Selenium:用于web應(yīng)用程序測試的工具,將核心組件插入到瀏覽器中,整個測試直接在瀏覽器中運(yùn)行,如同真正的用戶在操作一樣,所有的測試都是可見的。支持的瀏覽器:IE,Mozilla,Firefox等.測試兼容性,測試系統(tǒng)功能。seleniumhq.org/download

            5.HtmlUnit:具有瀏覽器基本功能的Java組件,HtmlUnit是Junit的擴(kuò)展測試框架之一。支持HTML,提供API

           2.2HttpUnit

            工作原理:模擬瀏覽器行為,處理頁面幀(frames),cookies,頁面重定向(redirects)等,通過HttpUnit提供的功能,可以和服務(wù)器進(jìn)行信息交互,將返回的網(wǎng)頁內(nèi)容作為普通文本,XMLDOM對象或者鏈接,頁面框架,圖像,表單,表格等集合。

            核心組件:

            發(fā)送請求并接受響應(yīng)的web客戶機(jī)

            分析并驗(yàn)證響應(yīng)內(nèi)容的方法集

            HttpUnit—功能測試--極限編程(XP)中起到重要的作用

            商業(yè)的web工具都是通過錄制回放實(shí)現(xiàn)的,HttpUnit關(guān)注的重點(diǎn)是控件的內(nèi)容,而不是控件的外在表現(xiàn)形式.HttpUnit無GUI,開源,API簡單性—靈活性和強(qiáng)大

            2.2 HttpUnit的使用

            google一下可以找到很多關(guān)于這個的,個人決定不再增加冗余信息。列舉一二個人覺得比較好的。

            使用HttpUnit進(jìn)行集成測試 :http://www.aygfsteel.com/relax/archive/2005/01/27/743.html

            HttpUnit基礎(chǔ)教程:http://wenku.baidu.com/view/ed3be4f77c1cfad6195fa7d0.html

            除此以外,不要忘記HttpUnit官方網(wǎng)站以及研究HttpUnit源代碼這樣的方法

            2.3JWebUnit

            JwebUnit是基于Java的用于測試網(wǎng)絡(luò)程序的框架,架構(gòu)在HttpUnit之上----即JWebUnit以HttpUnit和JUnit單元測試框架為基礎(chǔ),適合做Web應(yīng)用的驗(yàn)收測試。JWeb是HttpUnit的高層封裝,提供訪問Web應(yīng)用程序的高級API,組合一組斷言。JWebUnit是以jar文件形式提供的,方便使用,JWebUnit輕量級集成HtmlUnit和Selenium。

            2.3.1 環(huán)境建立:sourceforge.net/projects/jwebunit --說穿了,就是一些jar包,在使用JWebUnit的時候?qū)⑵涮砑拥綐?gòu)建路徑中

            2.3.2 JWebUnit應(yīng)用方法

            依然google,不增加無用信息:

            JWebUnit官方地址:http://sourceforge.net/projects/jwebunit/?source=directory

            JWebUnit For Web Regression Tests: http://www.intertech.com/Blog/jwebunit-for-web-regression-tests/

            備注:國外的人寫的技術(shù)博客含金量還相當(dāng)?shù)母?一方面人家沒有語言障礙,二不像國內(nèi)這么浮躁(社會環(huán)境所致)。雖然有點(diǎn)語言的障礙,但是如果想從事IT這一行的話,英語就是一項(xiàng)必不可缺的的技能:因?yàn)樽钚碌募夹g(shù)總是用英文寫的或者最早轉(zhuǎn)換的語言就是英文。而且國內(nèi)的技術(shù)水平落后國際有5到10年的差距,當(dāng)然這個數(shù)據(jù)不是一陳不變的,但是學(xué)習(xí)并閱讀英文資料總是有好處的,當(dāng)然剛一開始時可能會不太適應(yīng),但是過一段時間就好了。至少個人是這么認(rèn)為的。

            參考文獻(xiàn):

            [1]軟件測試實(shí)驗(yàn)指導(dǎo)教程/蔡建平, 清華大學(xué)出版社, 2009.11

          相關(guān)文章:

          軟件測試實(shí)驗(yàn)學(xué)習(xí)筆記系列5-單元覆蓋測試


          posted on 2013-08-12 10:18 順其自然EVO 閱讀(851) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2013年8月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 九江县| 精河县| 通城县| 高雄县| 错那县| 龙川县| 固镇县| 临沧市| 滨州市| 五华县| 岳普湖县| 鹤庆县| 平遥县| 绥宁县| 清涧县| 新竹市| 丽水市| 奉节县| 唐河县| 安吉县| 红安县| 雷波县| 罗定市| 信阳市| 乌兰浩特市| 南平市| 平阳县| 庄浪县| 扶沟县| 汽车| 德阳市| 枣阳市| 托克托县| 清涧县| 嘉鱼县| 秦安县| 涿州市| 德兴市| 惠东县| 遵义市| 甘德县|