狠狠撸

狠狠撸Share a Scribd company logo
Mark	
 ?Chang	
 ?-?‐	
 ?測試開發部 
應用	 Sikuli	
 ?在	 Android	
 ?設備上執行自動化測試	
 ?
?? What	
 ?is	
 ?GUI	
 ?Testing?	
 ?
?? Sikuli	
 ?
?? Apply	
 ?Sikuli	
 ?to	
 ?Android	
 ?automation	
 ?testing	
 ?
?? Demo:	
 ?Android	
 ?pattern	
 ?unlock	
 ?
?? Conclusion	
 ?
?? Q	
 ?	
 ?A	
 ?
	
 ?
Outline
?? GUI	
 ?testing	
 ?is	
 ?a	
 ?test	
 ?of	
 ?the	
 ?application’s
	
 ?user	
 ?interface	
 ?and	
 ?verification	
 ?if	
 ?the
	
 ?application	
 ?functions	
 ?work	
 ?correctly.	
 ?
What	
 ?is	
 ?GUI	
 ?Testing?
?? UI	
 ?自動化測試會抓取元件的	
 text、content-?‐desc	
 ?
等資料來抓取某個元件後,再對此元件做操作	
 ?
How	
 ?to	
 ?do	
 ?GUI	
 ?Testing
?? 但有時候某些元件可能沒有這些明確的資料,在實作上
確實不好處理	
 ?
Problem
?? 我們只能抓取到整個元件,但不能調整一點聆的年代範圍	
 ?
Problem	
 
只能抓到整個	
 slider	
  但我們希望
How	
 ?do	
 ?we	
 ?solve	
 ?this	
 ?problem?	
 ?
?? 一種以「影像辨識」為基礎的測試工具,它可以用來自
動化的在一個	
 GUI	
 圖形界面上進行操作和測試	
 ?
?? Sikuli	
 ?不用知道元件的屬性值	
 ?
?? 透過截圖方式幫助我們自動操作電腦的一種方式	
 ?
?? Sikuli	
 ?腳本就是實現這一過程的一種腳本語言	
 
Sikuli
?? 作者:	
 張琮翔	
 Tsung-?‐Hsiang	
 ?Chang	
 ?
?? 教育背景	
 ?
–? 博士:	
 麻省理工學院,電腦科學與人工智慧實驗室	
 ?
–? 碩士與學士:	
 台灣大學資訊工程研究所	
 
?? Sikuli	
 論文發表在「User	
 ?Interface	
 ?Software	
 ?and
	
 ?Technology」會議上(人機互動領域)	
 ?
?? Sikuli:	
 ?Using	
 ?GUI	
 ?Screenshots	
 ?for	
 ?Search	
 ?and
	
 ?Automation	
 ?
Sikuli
?? 可執行於	
 Windows、Mac	
 ?OS	
 和	
 Linux	
 作業系統	
 ?
?? Script	
 ?language:	
 ?Jython	
 ?
?? Applications	
 ?
–? It	
 ?can	
 ?interact	
 ?with	
 ?many	
 ?types	
 ?of	
 ?UI	
 ?elements	
 ?
–? More	
 ?complex	
 ?scripts	
 ?can	
 ?respond	
 ?to	
 ?screen	
 ?events	
 ?
Sikuli
?? Click	
 ?on	
 ?	
 ?
?? Which	
 ?row?	
 ?
?? Which	
 ?column?	
 ?
?? Which	
 ?component	
 ?ID?	
 ?
?? Which	
 ?name?	
 ?
?? Which	
 ?label?	
 ?
Think	
 ?Programmingly
Think	
 ?Sikuli	
 
?? What	
 ?you	
 ?see	
 ?is	
 ?what	
 ?you	
 ?script	
 ?
開啟應用程式	
 
等待圖示出現	
 
點擊圖示後,鍵盤輸入	
 
www.google.com	
 
鍵盤控制	
 
檢查圖示是否出現
What’s	
 ?wrong?	
 
?	
 
Turn	
 ?on	
 ?the	
 ?bluetooth
Solution
1.? 直接透過使用者介面操作	
 ?	
 ?
Execute	
 ?Sikuli	
 ?Script
Execute	
 ?Sikuli	
 ?Script
2.? 透過	
 command	
 ?line	
 ?來執行	
 ?
–? 撰寫好的	
 script	
 ?儲存檔案的附檔名為	
 sikuli	
 ?
–? Example:	
 ?
	
 ?
Execute	
 ?Sikuli	
 ?Script
Execute	
 ?Sikuli	
 ?Script	
 
?? Sikuli	
 ?預設辨識圖片時間為	
 ?3	
 ?秒鐘,如果沒找到會
拋出	
 FindFailed	
 ?的	
 ?exception
Execute	
 ?Sikuli	
 ?Script	
 
?? 捕抓	
 FindFailed	
 ?的	
 ?exception
How	
 ?to	
 ?apply	
 ?Sikuli	
 ?to	
 ?Android
	
 ?automation	
 ?testing	
 ?
How	
 ?to	
 ?operate	
 ?android	
 ?
	
 ?smartphone	
 ?through	
 ?the	
 ?computer	
 ?
?? 免	
 root	
 即可透過輸出到電腦螢幕的模擬器來控制手機	
 ?
?? 能透過電腦的鍵盤或滑鼠操作手機	
 ?
?? 可透過	
 USB、Wi-?‐Fi、3G/LTE	
 ?等連接方式至電腦端	
 	
 ?
Why	
 ?Mobizen?
?? 透過	
 Sikuli	
 ?來做圖形解鎖操作	
 ?
Demo:	
 ?Android	
 ?pattern	
 ?unlock	
 
無法抓取到	
 9	
 個解
鎖點元件的屬性
1	
2
?? Sikuli	
 ?系統預設選取的位置為圖片中心點	
 ?
?? 我們須調整點選目標元件的目標位置偏移	
 ?
Demo:	
 ?Android	
 ?pattern	
 ?unlock
?? 可調整圖片辨識相似度	
 ?
Demo:	
 ?Android	
 ?pattern	
 ?unlock
Demo:	
 ?Android	
 ?pattern	
 ?unlock	
 
Pattern
Demo:	
 ?Android	
 ?pattern	
 ?unlock	
 
Demo
?? 透過「抓取元件的屬性值」與「影像辨識」執行自動化
測試,兩種各有所限制	
 ?
1.? 「抓取元件的屬性值」缺點	
 ?
–? 自己刻的	
 ?UI	
 ?元件比較不好操作	
 ?
	
 ?
2.? 「影像辨識」缺點	
 ?
–? 不同解析度螢幕的問題、執行速度較慢	
 ?
Comparison
抓取元件屬性值	
影像辨識
?? Sikuli	
 ?顛覆原本我們使用的方式,而變成直接透過影
像辨識定位某個元件後再對它操作	
 ?
?? 只需要簡單的擷圖工具,把要控制的物件擷圖下來,直
接放在語法編輯區中,就可以設計你要進行的動作	
 ?
?? 「抓取元件的屬性值」與「影像辨識」兩種方式混合使
用才是王道!	
 ?
Conclusion
?
Q	
 ?	
 ?A	
 ?
Thank	
 ?You	
 ?

More Related Content

應用 Sikuli 在 Android 設備上執行自動化測試