1. 程式人生 > >騰訊優測優分享-手機應用自動遍歷的實現

騰訊優測優分享-手機應用自動遍歷的實現

摘要:

騰訊優測是專業的app自動化測試平臺,安卓平臺上的自動化遍歷如果框架嫌麻煩可以嘗試下,我在工作中也在不斷地學習探索,目前處在探索的初期階段。

關鍵詞:

安卓自動化遍歷  android適配  移動研發

在我看來,遍歷自動化的難點主要集中在以下兩個方面:

1.在不知道控制元件屬性的情況下,如何定位和識別控制元件

2.無特定業務邏輯的情況下,如何導航到目標控制元件

雖然難題在眼前,但我仍不知道遍歷後能定位多少適配問題。發此文一是記錄遍歷開發過程細節點滴,二是與大家一同分享和探討遍歷技術。

遍歷框架依託在appium基礎上,我也是一個月前剛剛瞭解,喜歡它可以使用任意的開發語言編寫你的自動化程式碼,ruby,python,java,perl等等;最重要的是,它可以滿足騰訊優測適配測試的需求。

我遍歷的前期工作主要是解決基本需求-——遍歷所有使用者介面,甚至所有可點選控制元件

我在一開始的嘗試不涉及任何業務邏輯,僅依託框架自動遍歷所有clickables,但卻遇到很多問題。通過摸索,我找到了最終的成型方案——半業務邏輯半自由遍歷。

框架的資料結構建立在graph模型上,將應用的每個activity抽象為graph的節點,每個activity之間的跳轉關聯抽象為edge,並且實現定義graph為方向向量圖。之所以這麼做主要是為了實現導航,通過graph的邊遍歷實現activity的遍歷,自增長模式的graph在遍歷每個clickable時會形成新的node和edge,新的node和edge會完成遞迴,並統一由graph管理。

半業務邏輯是指首先需要定義好應用中的activity.layout,多個layout的會導致clickable的點選失敗,在未找到更好的解決方案之前,採取預先定義的方案。

clickables是通過標準3c協議獲得的手機可點選控制元件。之所以說通過標準3c協議,主要是因為用到了webdriver,它支援xpath,通過xpath獲取到了當前頁面所有可點選控制元件,在此我為了提高效能,對clickables進行了一次過濾,去除了重複位置和focusable為true的控制元件。

遍歷的“引擎”能夠幫助我實現模擬使用者點選,通過上面的clickables點選進入不同的頁面(activity和layout)或者僅僅是改變了當前的page-source。

弄點乾貨吧,貼程式碼,只想告訴大家,appium可以做遍歷,可以做跨平臺適配(android&ios)

*—-(python實現)

*遞推呼叫find_my_nodes方法,獲取當前activity的關聯ativity,新增到grpah中,並繪製圖片


導航到新的layout,序列化當前的clickable,作為兩nodes的edge的key值,稍後呼叫可以實現點選跳轉。


*序列化和反序列化clickable


目前正處在開發階段,優化並未完成。

自生長模式的遍歷最終會得到一個png,代表當前遍歷過的所有activity,支援節點完整性的對比。


這就是我對手機應用自動遍歷實現的一點心得,希望對大家的工作有所幫助。另外,如果看後有意見建議,可以通過下面的評論功能與我交流。

文/騰訊優測 姚遠