34
Mark Chang 測試開發部 應用 Sikuli Android 設備上執行自動化測試

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

Embed Size (px)

Citation preview

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

Mark  Chang  -­‐  測試開發部 �

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

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

•  What  is  GUI  Testing?  

•  Sikuli  

•  Apply  Sikuli  to  Android  automation  testing  

•  Demo:  Android  pattern  unlock  

•  Conclusion  

•  Q  &  A  

 

Outline

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

•  GUI  testing  is  a  test  of  the  application’s  user  interface  and  verification  if  the  application  functions  work  correctly.  

What  is  GUI  Testing?

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

•  UI  自動化測試會抓取元件的 text、content-­‐desc  等資料來抓取某個元件後,再對此元件做操作  

How  to  do  GUI  Testing

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

•  但有時候某些元件可能沒有這些明確的資料,在實作上確實不好處理  

Problem

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

•  我們只能抓取到整個元件,但不能調整一點聆的年代範圍  

Problem

只能抓到整個 slider 但我們希望

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

How  do  we  solve  this  problem?  

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

•  一種以「影像辨識」為基礎的測試工具,它可以用來自動化的在一個 GUI 圖形界面上進行操作和測試  

•  Sikuli  不用知道元件的屬性值  

•  透過截圖方式幫助我們自動操作電腦的一種方式  

•  Sikuli  腳本就是實現這一過程的一種腳本語言

Sikuli

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

•  作者: 張琮翔 Tsung-­‐Hsiang  Chang  •  教育背景  

–  博士: 麻省理工學院,電腦科學與人工智慧實驗室  –  碩士與學士: 台灣大學資訊工程研究所

•  Sikuli 論文發表在「User  Interface  Software  and  Technology」會議上(人機互動領域)  

•  Sikuli:  Using  GUI  Screenshots  for  Search  and  Automation  

Sikuli

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

•  可執行於 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

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

•  Click  on    

•  Which  row?  •  Which  column?  •  Which  component  ID?  •  Which  name?  •  Which  label?  

Think  Programmingly

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

Think  Sikuli

•  What  you  see  is  what  you  script  

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

開啟應用程式

等待圖示出現

點擊圖示後,鍵盤輸入 www.google.com

鍵盤控制

檢查圖示是否出現

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

What’s  wrong?

?

Turn  on  the  bluetooth

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

Solution

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

1. 直接透過使用者介面操作    

Execute  Sikuli  Script

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

Execute  Sikuli  Script

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

2. 透過 command  line  來執行  –  撰寫好的 script  儲存檔案的附檔名為 sikuli  

–  Example:    

Execute  Sikuli  Script

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

Execute  Sikuli  Script

•  Sikuli  預設辨識圖片時間為  3  秒鐘,如果沒找到會拋出 FindFailed  的  exception

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

Execute  Sikuli  Script

•  捕抓 FindFailed  的  exception

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

How  to  apply  Sikuli  to  Android  automation  testing  

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

How  to  operate  android    smartphone  through  the  computer  

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

•  免 root 即可透過輸出到電腦螢幕的模擬器來控制手機  •  能透過電腦的鍵盤或滑鼠操作手機  •  可透過 USB、Wi-­‐Fi、3G/LTE  等連接方式至電腦端  

Why  Mobizen?

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

•  透過 Sikuli  來做圖形解鎖操作  

Demo:  Android  pattern  unlock

無法抓取到 9 個解鎖點元件的屬性

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

1

2

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

•  Sikuli  系統預設選取的位置為圖片中心點  •  我們須調整點選目標元件的目標位置偏移  

Demo:  Android  pattern  unlock

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

•  可調整圖片辨識相似度  

Demo:  Android  pattern  unlock

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

Demo:  Android  pattern  unlock

Pattern

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

Demo:  Android  pattern  unlock

Demo

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

•  透過「抓取元件的屬性值」與「影像辨識」執行自動化測試,兩種各有所限制  

1. 「抓取元件的屬性值」缺點  –  自己刻的  UI  元件比較不好操作  

 2. 「影像辨識」缺點  

–  不同解析度螢幕的問題、執行速度較慢  

Comparison

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

抓取元件屬性值

影像辨識

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

•  Sikuli  顛覆原本我們使用的方式,而變成直接透過影像辨識定位某個元件後再對它操作  

•  只需要簡單的擷圖工具,把要控制的物件擷圖下來,直接放在語法編輯區中,就可以設計你要進行的動作  

•  「抓取元件的屬性值」與「影像辨識」兩種方式混合使用才是王道!  

Conclusion

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

 Q  &  A  

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

Thank  You