高級版按鍵精靈,同時也是UI自動化測試的好幫手 - SIKULI

一個具有一定規模的網路服務在新版本的上線前,一定會進行詳細的QA測試,但目前的測試工具大多是以程式碼的測試為主,只有少數的工具能夠支援UI上的測試,而SIKULI便是自動化UI測試的好幫手。
評論
評論

一個具有一定規模的網路服務在新版本的上線前,一定會進行詳細的 QA 測試,但目前的測試工具大多是以程式碼的測試為主,只有少數的工具能夠支援 UI 上的測試,而 SIKULI 便是自動化 UI 測試的好幫手。

為什麼我們需要自動化測試?

曾經開發過網誌或者是軟體的朋友都會知道,在軟體正式釋出之前進行測試是相當重要的,除了要避免軟體出現錯誤當機的狀況之外,也須要確定各項操作流程是否如同預期。

然而,許多網路創業者在初期的產品開發過程中往往沒有辦法進行詳盡的測試,這可能是因為資源的有限(沒有錢僱請專門的 QA 測試人員),或者是時間上有限(產品馬上就要釋出)。

因為前期的測試不夠周全,往往我們在後續發生錯誤時可能會需要花費掉更多的時間和成本來修復,可以說是因小失大。

所以透過自動化的測試工具,可以達成許多優點:

  • 有效減低測試成本,只要當初期的測試腳本撰寫完畢後便可以自動執行
  • 確保大多數測試都可以自動運行並且重製可能的錯誤
  • 因為自動化測試是由電腦進行實作,所以人員下班後仍舊可以測試,隔天早上再觀看結果即可

然而,自動化測試礙於技術的發展,目前大多數只能進行程式碼的測試,但針對 UI 介面的操作測試往往才是大多數人關注的重點。

SIKULI

SIKULI 是在 2010 年初的時候由 MIT CSAIL 實驗室所釋出的開放原始碼專案,標榜透過圖片的辨識來進行自動化的 UI 測試,底層是透過 Java 和 Python 所撰寫,支援跨平台包含 Windows/OS X/Linux。

值得一提的是,SIKULI 的作者之一是台灣知名的程式開發者 vgod,目前正在 MIT 攻讀博士學位中。

SIKULI 其背後的原理技術主要是透過電腦視覺(Computer Vision),電腦視覺從上個世紀 1970 年代開始發展,大多數用來辨識現實生活中的圖片和照片,像是 Picasa 所提供的人臉辨識等,而 SIKULI 的創新之處,便是用了電腦視覺辨識系統來辨識電腦本身的畫面,進而實現跨平台的自動化操作。

如同作者在其部落格上所說的:

SIKULI 帶來的意義與無限的潛力 | vgod’s blog

Sikuli 把電腦視覺的研究領域,從真實世界延伸到電腦的桌面上。這點說起來真是很有趣,電腦視覺的研究人員數十年來嘗試想讓電腦能像人一樣「看」這個「真實世界」,可以像人一樣認得別人的臉,或是認得馬路長什麼樣才能讓電腦自動開車,但卻沒什麼人想到讓電腦「看」電腦自己輸出的畫面。

官方網站上的範例影片便是透過撰寫一個簡單的 SIKULI 腳本來進行自動化的 OS X 網路設定:

而在網路上也可以看到有人透過 SIKULI 來進行 Android 軟體的自動測試:

官方部落格 上也有許多應用的教學,包含 Eclipse IDE 的自動操作、自動接 Skype 的來電、自動登入 Twitter 並發表訊息等等,適合入門的學習者參考。

跟按鍵精靈的差別

或許會有人問,那這跟我們早期許多人玩線上遊戲會用的按鍵精靈有什麼差別呢?按鍵精靈主要的工作原理是透過定時、記錄座標位置來點擊,所提供的彈性比較低。

而 SIKULI 是透過視覺辨識的方式來進行自動化的操作,除此之外還可以:

  • 加入邏輯的判斷(像是出現 A 畫面則輸入帳號密碼、B 畫面則註冊新的會員)
  • 不因為畫面的大小、位置改變而找不到點擊目標
  • 將操作的步驟模組化在不同測試案例中使用

其他的用法

除了自動化測試 UI 這種比較嚴肅的使用方式之外,也有許多人透過 SIKULI 來簡化生活中的各種電腦操作。

噗浪自殺(透過反覆開關假期模式降低 Karma 值):

電腦幫你玩寶石方塊:


甚至是讓電腦幫你玩星海爭霸 2!請參考以下 Dropbox 辦公室的參觀影片,其中五分鐘左右的有工程師展示用 SIKULI 玩 SC2!

參考資源