使用 Swing、AWT 和類似的技術構建用戶界面通常會給開發人員進行測試帶來挑戰,原因如下:
底層圖形框架的復雜性
GUI 中表現形式和業務邏輯之間的耦合
缺乏直觀的自動測試框架
當然,前兩個原因并不新鮮 —— 圖形框架本來就很復雜,而且向 GUI 應用程序添加業務功能總是會給測試造成麻煩。另一方面,過去幾年中有許多方便的框架涌現出來,確實使 GUI 測試更加便利。
本月,我將介紹一種新的框架,它極大地減輕了 GUI 測試的痛苦。
TestNG-Abbot 簡介
TestNG-Abbot 源自于兩個成功的開發人員測試框架的結合:Abbot 和 TestNG。Abbot 是一種 JUnit 擴展框架,主要目的是使 GUI 組件實現編程隔離,它還提供了一種驗證 GUI 行為的簡易方法。舉例來說,可以使用它來獲取對按鈕組件的引用,使用編程的方法點擊按鈕,然后檢驗其操作。Abbot 還附帶了一個腳本記錄器,使用它就能夠以 XML 格式布設測試場景,可以通過編程的方式運行它。
希望改善代碼質量嗎?
那么千萬不要錯過 Andrew 的 改善 Java 代碼質量論壇,在那里可以學到關于代碼度量標準、測試框架以及編寫質量為先的代碼的第一手知識。
在本系列中,我已經介紹了一些關于 TestNG 的內容,這里將繼續介紹 TestNG;旧,TestNG 是 JUnit 的一個替代物。除了所有預期的功能外,它還增加了一些額外功能。正如我在其他文章中提到的一樣,TestNG 特別適合于更高層次的測試,其中,它可以用來測試依賴關系并只返回失敗了的測試 —— 簡而言之,在測試 GUI 時,這類型測試非常方便。(參見 Resources 中有關 TestNG 的更多內容。)
它的起源就如此讓人印象深刻,所以 TestNG-Abbot 成為測試工具中的神童就沒什么好奇怪的了。同 Abbot 一樣,TestNG-Abbot 使 GUI 組件能夠進行編程隔離。同時,它使用了 TestNG 的斷言,將 GUI 操作細節提取到了簡單的 fixture 中,后者能夠公開驗證方法。如能正確使用,TestNG-Abbot 的直觀的 fixture 類能夠使 GUI 測試如同從小男孩手里偷一塊糖一樣簡單。(當然,您不會想那么干的。
直觀的 fixture 類
TestNG-Abbot 的當前版本支持七種 fixture 類型,其中一種類型用于操作按鈕、菜單標簽以及文本項組件,如文本字段。此外,這些 fixture 類型根據名字在邏輯上鏈接到了測試中的代碼(即 GUI 組件)。這使得 GUI 和其測試實現了松耦合,這樣做至少有以下兩個好處:
測試不會依賴于特定位置的 GUI 組件 —— 這樣無需中斷測試就可對其進行移動。
可以在早期進行測試,并且不會受到開發期間布局和外觀改變的影響。
雖然目前只支持七種 fixture 類型,很快就會支持其他 fixture 類型。更多的 fixture 類型只會增加 TestNG-Abbot 在編程驗證 GUI 方面的高效性。
GUI 驗證不再普通!
雖然 TestNG-Abbot 使得驗證 GUI 的過程更加簡單,這并不意味著這個過程很簡單。必須使 GUI 測試區別于單元或組件測試。驗證 GUI 中業務規則的過程變成了對用戶場景進行驗證;或者,換種說法,GUI 測試包括驗證可見狀態的改變。
比方說,如果按下了定單輸入 GUI 上的保存按鈕,業務規則會保證命令的內容被保存到數據庫中。然而,在一個用戶場景中,會保證成功的狀態信息被插入了按鈕下 —— 這正是使用 TestNG-Abbot 能夠編寫的測試。事實上,如果 GUI 設計良好的話,可以測試被保存到數據庫中的命令內容而無需 測試 GUI。接著您還可以同時并及早地編寫這兩個特別的測試。
文章來源于領測軟件測試網 http://www.kjueaiud.com/