您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > TestNG
用TestNG-Abbot實現(xiàn)自動化GUI測試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/1/31 14:24:01 ] 推薦標(biāo)簽:

    TestNG-Abbot 是一種測試框架,它為 GUI 組件的測試帶來了新的活力。本月,Andrew Glover 將帶領(lǐng)您親歷使用 TestNG-Abbot 測試 GUI 過程中難度大的部分,即理解用戶場景的實現(xiàn)過程。一旦理解了它,您會發(fā)現(xiàn)將 GUI 組件隔離并使用框架所含的極其方便的 fixture 對象對其進(jìn)行驗證是多么地簡單。

使用 Swing、AWT 和類似的技術(shù)構(gòu)建用戶界面通常會給開發(fā)人員進(jìn)行測試帶來挑戰(zhàn),原因如下:

    底層圖形框架的復(fù)雜性
    GUI 中表現(xiàn)形式和業(yè)務(wù)邏輯之間的耦合
    缺乏直觀的自動測試框架

當(dāng)然,前兩個原因并不新鮮 —— 圖形框架本來很復(fù)雜,而且向 GUI 應(yīng)用程序添加業(yè)務(wù)功能總是會給測試造成麻煩。另一方面,過去幾年中有許多方便的框架涌現(xiàn)出來,確實使 GUI 測試更加便利。

本月,我將介紹一種新的框架,它極大地減輕了 GUI 測試的痛苦。

TestNG-Abbot 簡介

TestNG-Abbot 源自于兩個成功的開發(fā)人員測試框架的結(jié)合:Abbot 和 TestNG。Abbot 是一種 JUnit 擴(kuò)展框架,主要目的是使 GUI 組件實現(xiàn)編程隔離,它還提供了一種驗證 GUI 行為的簡易方法。舉例來說,可以使用它來獲取對按鈕組件的引用,使用編程的方法點擊按鈕,然后檢驗其操作。Abbot 還附帶了一個腳本記錄器,使用它能夠以 XML 格式布設(shè)測試場景,可以通過編程的方式運行它。
 

在本系列中,我已經(jīng)介紹了一些關(guān)于 TestNG 的內(nèi)容,這里將繼續(xù)介紹 TestNG;旧,TestNG 是 JUnit 的一個替代物。除了所有預(yù)期的功能外,它還增加了一些額外功能。正如我在其他文章中提到的一樣,TestNG 特別適合于更高層次的測試,其中,它可以用來測試依賴關(guān)系并只返回失敗了的測試 —— 簡而言之,在測試 GUI 時,這類型測試非常方便。(參見 Resources 中有關(guān) TestNG 的更多內(nèi)容。)

它的起源如此讓人印象深刻,所以 TestNG-Abbot 成為測試工具中的神童沒什么好奇怪的了。同 Abbot 一樣,TestNG-Abbot 使 GUI 組件能夠進(jìn)行編程隔離。同時,它使用了 TestNG 的斷言,將 GUI 操作細(xì)節(jié)提取到了簡單的 fixture 中,后者能夠公開驗證方法。如能正確使用,TestNG-Abbot 的直觀的 fixture 類能夠使 GUI 測試如同從小男孩手里偷一塊糖一樣簡單。(當(dāng)然,您不會想那么干的。

直觀的 fixture 類

TestNG-Abbot 的當(dāng)前版本支持七種 fixture 類型,其中一種類型用于操作按鈕、菜單標(biāo)簽以及文本項組件,如文本字段。此外,這些 fixture 類型根據(jù)名字在邏輯上鏈接到了測試中的代碼(即 GUI 組件)。這使得 GUI 和其測試實現(xiàn)了松耦合,這樣做至少有以下兩個好處:

    測試不會依賴于特定位置的 GUI 組件 —— 這樣無需中斷測試可對其進(jìn)行移動。
    可以在早期進(jìn)行測試,并且不會受到開發(fā)期間布局和外觀改變的影響。

雖然目前只支持七種 fixture 類型,很快會支持其他 fixture 類型。更多的 fixture 類型只會增加 TestNG-Abbot 在編程驗證 GUI 方面的高效性。


GUI 驗證不再普通!

雖然 TestNG-Abbot 使得驗證 GUI 的過程更加簡單,這并不意味著這個過程很簡單。必須使 GUI 測試區(qū)別于單元或組件測試。驗證 GUI 中業(yè)務(wù)規(guī)則的過程變成了對用戶場景進(jìn)行驗證;或者,換種說法,GUI 測試包括驗證可見狀態(tài)的改變。

比方說,如果按下了定單輸入 GUI 上的保存按鈕,業(yè)務(wù)規(guī)則會保證命令的內(nèi)容被保存到數(shù)據(jù)庫中。然而,在一個用戶場景中,會保證成功的狀態(tài)信息被插入了按鈕下 —— 這正是使用 TestNG-Abbot 能夠編寫的測試。事實上,如果 GUI 設(shè)計良好的話,可以測試被保存到數(shù)據(jù)庫中的命令內(nèi)容而無需 測試 GUI。接著您還可以同時并及早地編寫這兩個特別的測試。

 
加油!
記住 TestNG-Abbot 并不妨礙端對端測試(end-to-end)?梢暂p松將 TestNG-Abbot 和 DbUnit 結(jié)合在一起,比如,創(chuàng)建一個同時驗證用戶場景和業(yè)務(wù)規(guī)則的可重復(fù)測試。

Word Finder GUI

為了使您了解 TestNG-Abbot 工作原理,我創(chuàng)建了一個簡單的 GUI,它執(zhí)行一種功能 —— 在底層字典(也是一個數(shù)據(jù)庫)中查閱一個給定的單詞并顯示其釋義。不管該應(yīng)用程序?qū)嶋H的代碼如何,測試該 GUI 用戶場景包括三個步驟:

    在文本框中輸入一個單詞。
    單擊 Find Word 按鈕。
    驗證是否給出了該單詞釋義。

當(dāng)然,也存在一些極端的例子,比如一個用戶按下了 Find Word 按鈕但沒有輸入單詞,或者,用戶輸入了一個無效的單詞。我將通過一些其他的測試案例說明如何處理這類場景。

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd