Sikuli 的優勢及局限
Sikuli 為腳本賦予了人類的視角,讓計算機不單能夠去捕捉后臺的接口數據和返回值,而且能如同人眼一般,“看”到一個真實的 GUI 展現。使用者直接在腳本中引用目標 GUI 元素的截圖來獲取該對象,并指定對其所進行的操作,簡單高效。使得 GUI 自動化擺脫了對應用的內部程序實現的依賴,無需獲取 API,亦無須了解 GUI 的內部代碼實現;忽略了標準控件和非標準控件在操作和獲取上的差異性;普遍適用于所有運行在有圖形用戶界面的操作系統之上的應用,有 GUI 顯示的地方即可被獲取和操作。實時的圖形檢索定位,避免了位移和 UI 重排等位置變化造成的無法準確定位并獲取控件的問題。Python 語法兼容 +Java 內核,為其賦予了很強的擴展性,同時,Open Source 也讓 Sikuli 本身獲得了更多的發展機會和空間。使用 GUI 元素截圖所編制的 Sikuli 腳本具有良好的代碼可讀性,這一點從上述實例場景中能夠有所體會——在這種簡短的腳本中,已基本接近自然語言的表述方式。這樣的一種展現形式和特性使得手工測試用例與自動化測試腳本的距離大大縮小,使得這兩者之間的自動轉化和整合成為可能。
另外,利用 GUI 截圖進行編程的這種特性使得使用者只需要具有基本的程序設計知識即可快速上手,輕松地創建自動化腳本操作 GUI 界面完成各種操作,大大降低了程序設計的門檻。使得更多的人可以定制個性化的桌面應用。
但在實際應用中,我們也同樣發現,在現階段 Sikuli 仍具有一定的局限性:
依賴屏幕截圖,使其在不同的操作系統上,不同的瀏覽器中,甚至是不同的顯示分辨率下,需要獨立維護一套圖形源文件,對于其跨平臺的能力造成障礙。
由于對于截圖的檢索依賴于實時的桌面顯示,若出現程序邏輯之外的意外界面遮擋或焦點切換(如,彈出窗口等),則會對程序執行造成影響。
IDE 處于開發初級階段,穩定性和易用性存在一定問題。其本身僅支持初級的代碼編輯功能,對于規模較大的代碼開發和調試工作仍存在不便之處。其在 Windows 平臺和 Linux 平臺上的運行穩定性也稍遜于在 MacOSX 上的表現。
因此,現階段若要使用 Sikuli 獨立完成具有一定規模的程序還有些困難,但作為現有自動化測試工具的有效補充,已可以很好的發揮其自身的優勢,為日常工作帶來便利。
總結
本文介紹了圖形化編程技術 Sikuli,使測試人員對 Sikuli 腳本的特點和使用方法有初步的了解。同時通過實例展示如何應用 Sikuli 編寫自動化腳本進行 GUI 交互操作及驗證,分析目前 Sikuli 在應用上所具有的優勢和局限。
參考資料
學習
隨時關注 developerWorks 技術活動和網絡廣播。
訪問 developerWorks Open source 專區獲得豐富的 how-to 信息、工具和項目更新以及受歡迎的文章和教程,幫助您用開放源碼技術進行開發,并將它們與 IBM 產品結合使用。
Sikuli 官方網站提供了 Sikuli 的安裝包下載、完備的文檔和豐富的實例。
vgod's blogSikuli 的主要開發者之一張琮翔的博客。