HP ALM 半自動化測試工具 Sprinter 與 Sikuli 的比較

作者/葉翔騰

半自動化測試的需求
使用自動化測試工具進行軟體或系統的功能性驗證時,常會遇到的情況是: 有一些功能測試無法使用自動化測試工具來進行驗證。而無法使用自動化測試工具進行功能驗證的可能原因,概述有以下情況:
    1.設計面 ◎模組與模組之間,沒有留下任何處理過程相關資訊,因此無法進行模組個別功能驗證 ◎只有人,才有能力判讀對錯 2.技術面 ◎使用特殊物件,導致自動化測試工具無法辨識 ◎應用軟體使用特殊加/解密方式 3.其他 ◎或許該專案的特色,造成自動化測試的成本高過人工測試 ◎單元測試涵蓋度非常高 ◎或是,該專案的品管是由客戶負責
但是,如果我有一個測試工作,有一部分是重複性質的操作(如:login or點選特定按鈕),另外一部分則需要人工來處理,那麼重複的部份,我能不能藉由工具來協助進行測試? 一部分自動化,一部分人工,這就是半自動化測試工具出現的原因! 半自動化測試工具介紹
本文介紹兩種半自動化測試工具,一種是與專案軟體開發管理工具相互緊密整合,另一種是完全地獨立的軟體測試工具。 前者將以HP旗下的Sprinter產品進行介紹,它是一種半自動化測試工具,與ALM(Application Lifecycle Management)相互緊密整合;而後者,則以MIT所開發的Open Source- Sikuli為代表說明。 這兩種工具,立足點完全不同,拿來一起比,真的有失公允,本文主要的考量如下: 1.把這兩個工具拿來比,原本的動機就不是要比出個高下,而是要提供讀者有關:“那一種情況應該考慮使用那一種工具”的參考建議! 2.Sprinter 一開始是 base on ALM 的架構,但是新的版本,則提供單機版(意即:可以不用連接到 ALM Server的單機版) HP 半自動化測試工具 Sprinter
Sprinter 的基本架構,很像迷你版的 QTP (Quick Test Professional),一樣有測試腳本(Test Script)錄製的功能、有讀取測試資料的功能、連接 ALM 主機的功能(回報測試結果與填寫測試所發現的缺失之用)。 完整的 Sprinter 標準作業程序如下:
    1.測試人員在 PC開啟 Sprinter 2.連上 ALM 主機 3.挑選所要進行的測試(回報測試結果之用) 4.手動選擇先前已錄好的腳本(手動測試中,可重複執行的部份) 5.手動挑選一筆測試資料(測試資料可以儲存在 Excel 內,可以多筆,但是 Sprinter 每次只會 run 一筆, 不像 QTP 可以自動跑完所有測試資料) 6.人工判讀測試結果 or 手動測試其他無法用工具錄製腳本的測試步驟 7.自動產生測試報告(Sprinter 會自動記錄測試步驟與截圖) 8.回報測試結果(to ALM) 9.進行缺失回報(to ALM)
而Sprinter 與 QTP 最大的不同,在於:
    1.測試資料放在外部的 Excel 檔案內,而不是內建的 Data Table 2.Sprinter 一次只會 run 一筆測試資料 3.人工驅動(符合半自動化功能測試工具的定位) 4.自動產生測試報告(Word or PDF format)
MIT Sikuli Project
Sikuli 是由麻省理工學院(MIT)使用圖形辨識為基礎所延伸出來的專案,應用在錄製重複執行的電腦操作腳本。 可以用來錄製電腦操作腳本的專案不少,Sikuli之所以被世人所關注,就在於他使用不同於以往的辨識方式—圖形辨識。更特別的地方是,他連產生的腳本(Script)將辨識的標的,一併用圖形的方式呈現,真的把 WYSWYG 放到程式語言內了。 Sikuli 的 SOP 簡述如下:
    1.打開 Sikuli IDE 2.利用 Sikuli腳本指令啟動待測程式 3.點選截圖工具 & 拖拉截圖範圍 4.利用 Sikuli 腳本指令編寫對截圖的動作(如: click) 5.重複上述第3~第4步驟
舉一個描述在該專案網頁的有趣例子: 如果我想第一時間,馬上知道一個在 FaceBook 上特定的人所 update 的 status message,主要的 script 如下:

5.HP Spinter vs MIT Sikuli Project

總結
筆者認為,HP Sprinter 是拿來當功能測試的半自動化工具,比較適合給測試人員使用(QA 或是 SA 或是甲方資訊室人員);而,Sikuli 則比較適合讓程式設計師來使用,以進行比元件整合測試範圍更大的 UI 測試。 參考資料
http://www.youtube.com/watch?v=-G8C61PnlS0 http://update.external.hp.com/qualitycenter/qc110/mictools/sprinter/sprinter_11/Sprinter_User_Guide.pdf http://sikuli.org/docx/devs/system-design.html http://sikuli.org/