您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > TestNG
使用TestNG-Abbot實(shí)現(xiàn)GUI測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/1/5 13:52:28 ] 推薦標(biāo)簽:

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

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

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

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

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

TestNG-Abbot 簡(jiǎn)介

TestNG-Abbot 源自于兩個(gè)成功的開發(fā)人員測(cè)試框架的結(jié)合:Abbot 和 TestNG。Abbot 是一種 JUnit 擴(kuò)展框架,主要目的是使 GUI 組件實(shí)現(xiàn)編程隔離,它還提供了一種驗(yàn)證 GUI 行為的簡(jiǎn)易方法。舉例來說,可以使用它來獲取對(duì)按鈕組件的引用,使用編程的方法點(diǎn)擊按鈕,然后檢驗(yàn)其操作。Abbot 還附帶了一個(gè)腳本記錄器,使用它能夠以 XML 格式布設(shè)測(cè)試場(chǎng)景,可以通過編程的方式運(yùn)行它。
 
希望改善代碼質(zhì)量嗎?
那么千萬不要錯(cuò)過 Andrew 的 改善 Java 代碼質(zhì)量論壇,在那里可以學(xué)到關(guān)于代碼度量標(biāo)準(zhǔn)、測(cè)試框架以及編寫質(zhì)量為先的代碼的第一手知識(shí)。

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

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

直觀的 fixture 類

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

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

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

GUI 驗(yàn)證不再普通!

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

比方說,如果按下了定單輸入 GUI 上的保存按鈕,業(yè)務(wù)規(guī)則會(huì)保證命令的內(nèi)容被保存到數(shù)據(jù)庫中。然而,在一個(gè)用戶場(chǎng)景中,會(huì)保證成功的狀態(tài)信息被插入了按鈕下 —— 這正是使用 TestNG-Abbot 能夠編寫的測(cè)試。事實(shí)上,如果 GUI 設(shè)計(jì)良好的話,可以測(cè)試被保存到數(shù)據(jù)庫中的命令內(nèi)容而無需 測(cè)試 GUI。接著您還可以同時(shí)并及早地編寫這兩個(gè)特別的測(cè)試。
 
加油!
記住 TestNG-Abbot 并不妨礙端對(duì)端測(cè)試(end-to-end)?梢暂p松將 TestNG-Abbot 和 DbUnit 結(jié)合在一起,比如,創(chuàng)建一個(gè)同時(shí)驗(yàn)證用戶場(chǎng)景和業(yè)務(wù)規(guī)則的可重復(fù)測(cè)試。

Word Finder GUI

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

    在文本框中輸入一個(gè)單詞。
    單擊 Find Word 按鈕。
    驗(yàn)證是否給出了該單詞釋義。

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

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