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	
  

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