dogtail: Linux下的GUI自動化測試框架

Just4life發表於2013-08-21

原文連結:http://wangcong.org/blog/?p=992


fedora 那邊一哥們在搞自動化測試的東西,今天過去看了看,發現這哥們在用一個叫 dogtail 的東西,一個 Python 模組,很酷的一個東東。看來我再一次 out 了,頭一次聽說這玩意兒。

這玩意兒說白了其實就是圖形介面程式的自動化測試工具。我們知道圖形化的程式很難自動化的,它不像命令列的程式,寫個指令碼就搞定了。根本原因在於,點選滑鼠和敲擊鍵盤得由人來完成。這玩意兒的目的就是代替人來完成這些功能,比如點選滑鼠按某個按鈕。我在前一個公司時見過一個同事搞這種測試,不過他是在 M$ 平臺上測的,我一直以為 Linux 上面沒這個替代品。今天看來我錯了,Linux 不光有,而且還有 Python 模組。

它不光可以代替人輸入,也可以輸出,比如說你想讀某個應用程式比如 firefox 文字框裡面的文字,你也可以用它。如此一來,圖形介面在很大程度上就和命令列介面變得一樣“程式設計師友好”(相對於“使用者友好”一詞)了,你可以 grep 它的輸出,你可以用指令碼來對它進行輸入。

如果你看一下它的用法,你會發現如果單單是隻有介面,它也是很難用的,因為我感覺它其實是對圖形程式的“後設資料”(其實是叫AT-SPI objects)進行讀取,在圖形介面層上,所以介面很面向圖形介面,除非是天天搞圖形介面的開發者,其他開發者很難一下子搞清楚這些東西。但是它還提供了一個很牛的 sniff 工具,通過它你可以對已有的圖形程式的“後設資料”有一個很直觀的瀏覽,你想讀哪一個程式的哪一部分資料很容易找到。所以配合著 sniff,這個東西就相當好用了。

這個專案也是red hat的,其主頁在 fedorahosted.org 上,也有文件示例。Red Hat Magazine 上也有一個系列來介紹它:

  1. Automated GUI testing with Dogtail
  2. Dogtail’s Python Modules (and how to use them)
  3. Dogtail’s object oriented tree API (and how to use it)

相關文章