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