android ui自动化测试框架有哪些,自动化测试框架对比(UIAutomator、Appium、Robotium)...
一、原理
1.UiAutomator——基于UIAutomation的用戶界面自動化測試框架,可以跨應用工作,谷歌親生的。
Android4.3之前:使用inputManager或者更早的WindowsManager來注入KeyEvent
Android4.3之后:使用Accessibility APIs來注入事件。(AccessibilityService本來是做一些輔助功能的,提供了一系列的事件回調,幫助我們指示一些用戶及界面的狀態變化,主要給殘障人群提供幫助。)
2.Robotium——基于Instrumentation開發出來的一套測試框架
Instrumentation可以把測試包和目標測試應用加載到同一個進程中進行。既然各個控件和測試代碼都運行在同一個進程中了,測試代碼當然就可以調用這些控件的方法了,同時修改和驗證這些控件的一些項就不在話下了。
Instrumentation的運行原理:InstrumentationTestRunner會在目標應用代碼運行之前調用onCreate方法建立一個新的線程并為這個線程添加一個消息隊列,這個線程循環處理其他線程發過來的消息事件,并與之進行交互。
跨應用:Android4.3之后Instrumentation引入了getUiAutomation接口的實例進行跨應用測試。
3.Appium——跨平臺,允許采用同一套API在不同的平臺(IOS,Android)上編寫測試代碼,讓測試套件在IOS和Android平臺上實現代碼復用成為可能。
Appium的核心是一個暴露了REST API的網絡服務器。這個服務器接收客戶端過來的連接,監聽客戶端過來的命令,在移動設備上運行命令,然后把代表命令運行結果的HTTP響應包發送回客戶端。
二、優缺點對比
UiAutomator
Robotium
Appium
是否支持設備無源碼測試(黑盒測試)
是
是
是
能否進行跨應用測試
能
不能
能
是否是谷歌原生
是
不是
不是
支持編程語言
Java
Java
幾乎所有語言
是否有簽名一致的問題
否
是
否
是否需要解決中文輸入問題
是
否
是
建議開發團隊增加的控件信息
Content Description
resource-id
Content Description
是否需要API17及以上
是
否
否
Junit支持版本
Junit4
Junit3
Junit3/Junit4
是否支持webview
否
是
是
支持平臺
Android
Android
IOS
三、補充內容——Android三種注入事件的方式
1、使用內部APIs(內部API是谷歌沒有對外開放的代碼,存在一定的風險)
通過獲得WindowManager的一個實例來訪問injectKeyEvent/injectPointerEvent這兩個事件注入方法。
在應用內可正常工作,在應用外不能正常工作(INJECT_EVENTS是需要系統權限的)。
2、使用instrumentation對象(開放的API,比內部API干凈)
通過instrumentation的一個實例來訪問injectEvent,同上面的內部APIs的方法。
所以在應用內部可以正常的工作,在應用外部不嫩正常的工作。
3、直接注入事件到設備 /dev/input/eventX
linux以系統設備的方式向用戶暴露了一套統一的事件注入接口 /dev/input/eventX(其中X代表一個整數)。我們可以直接調用。
需要rooted過的設備,如:
adb shell
su
http://blog.csdn.net/lv18092081172/article/details/52123470
chmod 666 /dev/input/event3
總結
以上是生活随笔為你收集整理的android ui自动化测试框架有哪些,自动化测试框架对比(UIAutomator、Appium、Robotium)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言用define预处理命令定义,C语
- 下一篇: linux sed 找出前后三行,Lin