對於很多硬體業者來說,當產品即將完成,運用自動化的方式來進行測試並不陌生。就硬體自動化測試來說,因產品規格類似,自動化測試設計不須經常調整,且經過短時間教育訓練後,測試人員,甚至作業員就可透過既定步驟,快速進行測試。
然而,對於產品設計彈性較大的軟體來說,隨著產品設計的變化與更新,每樣產品的自動化測試幾乎都須進行客製化調整。軟體測試的範圍廣、深度與組合眾多複雜,唯對特定領域軟體測試熟悉度較高的人,較能快速地進行效益高的測試。
應用程式測試邁向自動化
以當今受到歡迎的智慧手機與平板的應用程式(以下簡稱APP)來說,由於APP類型眾多(圖1),對於難度較高者,測試項目多、重複測試的頻率也較高,開發商在初步測試規畫時,就應針對重覆率高的測試項目進行自動化測試設計。
|
圖1 APP類型與使用者行為分析 |
APP的自動化測試設計,大多針對重複測試次數多的回歸測試來進行。雖然自動化測試設計在初期花較多時間製作腳本,但長期可以大幅縮短測試時間;同時,大多的測試都可以自動運行並重製錯誤。再者,與人工測試相較之下,自動化測試可以提高測試的精準度,並可讓測試人員在下班後,由電腦進行自動化測試,隔天再確認測試結果。
大致來說,APP自動化測試工具的進行與運用,可簡單分成兩類方式,一類是具備程式撰寫能力的測試人員,透過程式語言整合APP測試工具,進一步撰寫出合乎程式語言語法的腳本(Script)來進行測試。這類APP自動化測試比較常用的程式語言有Java與Python,而開放原始碼的APP測試工具有Uiautomator、Robotium與MonkeyTalk(此指的是免費使用版,該軟體近期將提出專業付費版,付費版主打APP雲端測試,目前正提供免費公共測試版)等。
另一類APP測試工具,則是以套裝軟體、較友善的介面操作,運用較簡化、圖像的方式,讓較無程式撰寫背景的測試人員,能夠快速上手,撰寫測試腳本。這類的測試工具有EggPlant、Perfecto與Sikuli等。以下分別就幾項常見的測試工具進行介紹。
Uiautomator專攻使用者介面測試
Uiautomator為圖形介面工具,主要用於使用者介面(UI)自動化測試,透過模擬使用者單擊、滑動、輸入等操作,確認操作的結果是否符合預期。Uiautomator有項特色,它可對APP畫面的UI元件組成進行解析並儲存為xml檔案。而xml檔案在整理後,將方便自動化程式撰寫時,在不同頁面的同樣物件進行控管與連結,加速自動化程式的撰寫;換言之,不同頁面出現多次的同樣物件,在撰寫腳本時,將不用一頁一頁的進行物件連結設計。
由於Uiautomator是Google在Android 4.1發布時,才一併發表的測試工具,因此,此工具僅能針對Android 4.1版以上的APP進行自動化測試,且設計人員在撰寫程式時須使用Android SDK Tool--Uiautomatorviewer。
Uiautomator另一項特點是,以物件為導向進行腳本撰寫,而不是座標位置(x=450,y=550)。因此,它所撰寫出的腳本,可於任何解析度顯示器使用,且能在不同裝置收集效能標準,適合做重複性高與複雜的測試,例如穩定性測試與效能測試。但本工具不能進行錄製動作且僅支援Android系統。
另外還有Robotium提供一個測試框架(圖2),讓測試者不需要APP程式碼,就可針對Android版本的APP進行黑箱測試。由於Robotium提供的應用程式介面(API)相當明確又容易理解,故現在有許多測試人員透過撰寫腳本,使用它在Eclipse IDE上結合Junit,進行長時間重播測試之穩定性測試。
|
圖2 Robotium工具截圖 |
MonkeyTalk可自動錄製測試腳本
MonkeyTalk為Open Source測試工具(圖3),由Gorilla Logic公司所開發,主要特色係可以自動錄製測試腳本,同時支援iOS和Android兩大平台。該工具結合Eclipse IDE介面,方便使用者進行測試腳本的建立和管理,並可以在測試腳本中插入由MonkeyTalk自身錄製好的腳本,且測試時須擁有APP的Source Code。該工具測試的實機,如手機、平板和模擬器不需要Root。
|
圖3 MonkeyTalk工具截圖 |
此工具支援自動化腳本錄製,可以快速生成測試腳本程式,故適合腳本複雜功能測試或長時間穩定性測試。
EggPlant支援跨平台自動化測試
EggPlant為一個跨平台自動化測試工具,同時支援Android、iOS及Windows作業系統平台,為知名APP測試商業套裝軟體。該軟體考慮商業、專業測試和測試人員的需求,適用於圖形介面自動化測試和黑箱測試。
EggPlant不需要APP原始檔,即可模擬使用者的操作方式,直接對APP進行自動化測試。同時,它也支援資料比對功能使用,及csv/xml檔案格式進行大量測試資料之匯入/匯出。
EggPlant有一些特點,如圖像識別能力強、快速創建腳本、腳本管理、排程與字元辨識(Optical Character Recognition)等,簡易上手的直覺式腳本撰寫,因此相當受到品保人員青睞,其特色說明如下:
|
圖4 EggPlant的快速創建腳本圖 |
Perfecto Mobile獨創遠端測試方案
|
圖5 EggPlant字元辨識可讀出圖像的更新驗證碼 |
不同於其他以個人電腦為主進行測試的軟體,Perfecto Mobile是一間以色列公司所開發的APP測試軟體,最大特色就是可透過遠端連結智慧型裝置的環境進行測試(圖6)。此軟體支援目前市場上各式智慧型裝置系統,包括Android、iOS、 BlackBerry與Windows Phone等,測試者可在平台撰寫自動化腳本,並在各系統運行。
Perfecto Mobile為付費測試軟體,使用者可透過網路使用遠端Perfecto Mobile所提供的各式測試手機或平板裝置來進行測試。它基於Web based,測試者任何操作皆透過瀏覽器進行,這與市面上免費測試工具大多需測試者自行準備各式待測裝置有明顯的差異;此種遠端測試服務,正好解決預算有限、無法購買大量測試裝置的問題。與Perfecto Mobile類似的測試軟體,還有Keynote Mobile Testing。
|
圖6 Perfecto Mobile行動雲端測試架構圖 |
在自動化腳本的支援,Perfecto Mobile支援以文字辨識、圖片辨識、抓取物件共三種主要方式提供測試者使用。另外,為讓過去熟悉其他大廠自動化工具的使用者,更快熟悉APP測試腳本撰寫,Perfecto Mobile開發商更與惠普(HP)、微軟(Microsoft)和IBM等重量級業者攜手投入自動化測試工具整合方案。
Sikuli簡化GUI測試流程
至於Sikuli為開放程式碼軟體,由麻省理工學院學生所發表,其運用電腦視覺辨識系統來辨識電腦本身的畫面,進行跨平台的自動化操作,達成APP測試。使用Sikuli可以在一個圖形使用者介面(GUI)上進行操作和測試。
Sikuli提供指令相當簡單,測試者只需在IDE上寫幾個簡單指令即可撰寫自動化腳本(圖7),沒有程式基礎的測試人員也可以快速上手使用。它利用圖像的辨識,達到眾多繁雜指令自動化的效果;同時,由於它的螢幕截圖被直接放在程式碼裡面,讓使用者能直接「看到」想控制的東西,使用非常便利。此工具的缺點是,僅限於針對圖形介面的控制,無法針對圖形介面以外的物件作控制。
|
圖7 Sikuli工具截圖 |
物件式/影像辨識方案並用 APP自動化測試效率大增
上述介紹眾多APP自動化測試軟體,除Perfecto Mobile外,其他測試軟體都是以單機電腦為環境,而一般行動自動化測試的設立大致如圖8所示。測試者在使用軟體時,通常會透過無線區域網路(Wi-Fi)或通用序列匯流排(USB)連接行動裝置,測試時可選擇操作實機,或是透過模擬器在電腦畫面上直接操作、撰寫腳本。
|
圖8 單機電腦環境行動自動化測試設立圖 |
近年,愈來愈多以影像辨識為主的測試軟體大受歡迎,如EggPlant、Silkuli。影像辨識的優點為:不受APP開發方式影響、可相容於不同行動系統與版本;同時測試者可較快熟悉測試工具,且只要使用介面未改變,測試腳本都可重複使用。但它的缺點則是當UI改變時,腳本就無法重複使用,且物件部分將無法使用圖像進行測試。
整體而言,影像辨識測試軟體須花費較多成本,以長期維護測試腳本;而以物件為主的測試軟體,如Uiautomator、Robotium與MonkeyTalk等,其實在隨著潮流改變下,操作也被調整得愈來愈簡易。隨著APP測試工具日漸多元,測試者如果能了解各工具的優缺點,交叉搭配自動化工具使用,相信將可更加提高APP整體測試效益。
(本文作者任職於資策會智通所)