一、目的
1、降低用例維護成本
2、盡可能的自動化覆蓋回歸業務
二、常見遍歷工具與技術
- google android原生monkey、app crawler
- 百度smartmonkey
- 騰訊newmonkey
- vigossjji smart monkey
- macaca的NoSmoke
- 頭條的zhangzhao maxim
- seveniruby appcrawler
三、android monkey
是一個在模擬器或設備上運行的程序,用於生成用戶事件的偽隨機流
優點:運行速度快、需要的編碼少
缺點:隨機事件不受控制
常用命令
adb shell monkey 100 對所有包隨機操作
adb shell monkey -p com.xueqiu.android 100 對指定包
adb shell monkey -p com.xueqiu.android -s 20 80 時間種子(相同參數執行的動作一樣,可用於回溯問題)
adb shell monkey -p com.xueqiu.android -vv -s 20 80 記錄詳細日志
adb shell monkey -p com.xueqiu.android --throttle 5000 100 時間延遲
adb shell monkey -p com.xueqiu.android --pct-touch 10 1000 指定事件時間百分比
adb shell monkey -p com.hundsun.winner.pazq -vvv --pct-touch 80 200 >monkey.txt 輸入日志信息
常用事件
--pct-touch:觸摸事件,比如點擊
--pct-motion:動作事件,比如滑動(直線)
--pct-trackball:軌跡事件,比如移動+點擊,曲線滑動
--pct-majornav:主要導航事件,比如回退按鍵、菜單按鍵
用bash腳本自動執行
#monkey.sh
#! /bin/bash #用``反引號包含的當做命令運行 devices=`adb devices | grep 127.0.0.1 |awk '{print $1}'` for device in $devices; do { nohup adb -s $device shell monkey -p com.hundsun.winner.pazq -vv --throttle 200 400 >result.txt & } done
然后在git bash命令行窗口中執行:bash -x monkey.sh
四、maxim
項目地址:https://github.com/zhangzhao4444/Maxim
簡單使用:
- 支持 Android 5,6,7,8,真機及模擬器; Android 5不支持 dfs mode
- 將 framework.jar , monkey.jar push 到手機上某個目錄中,建議
/sdcard
adb push framework.jar /sdcard adb push monkey.jar /sdcard
cmd 命令 : adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.panda.videoliveplatform --uiautomatormix --running-minutes 60 -v -v
tv.panda.test.monkey.Monkey
: monkey入口類,不要修改com.panda.videoliveplatform
: 被測app包名,需要修改--uiautomatormix
: 遍歷策略
策略
-
模式 DFS --uiautomatordfs 增加深度遍歷算法
-
模式 Mix --uiautomatormix 直接使用底層accessibiltyserver獲取界面接口 解析各控件,隨機選取一個控件執行touch操作。 同時與原monkey 其他操作按比例混合使用 默認accessibilityserver action占比50%,其余各action分剩余的50% accessibilityserver action占比可配置 --pct-uiautomatormix n
-
模式Troy --uiautomatortroy 控件選擇策略按max.xpath.selector配置的高低優先級來進行深度遍歷
-
保留原始monkey
-
總運行時長 --running-minutes 3 運行3分鍾
-
--act-whitelist-file /sdcard/awl.strings 定義白名單 --act-blacklist-file
其他參數與原始monkey一致
其他
1、對於需要登錄才能進入的app,可以先手動進行登錄;
2、登錄后可能會自動退出,可以屏蔽掉登出按鈕,或者通過腳本方式執行,屏蔽掉該登出坐標。
五、appcrawler
開源地址:https://github.com/seveniruby/AppCrawler
1、下載最新版本的appcrawler包;
2、啟動appium,啟動並連接模擬器
3、基礎使用
java -jar appcrawler-2.4.0-jar-with-dependencies.jar命令用於查看幫助文檔
啟動已經安裝過的app,這里以平安證券app為例
java -jar appcrawler-2.4.0-jar-with-dependencies.jar --capability "appPackage=com.hundsun.winner.pazq,appActivity=.ui.home.activity.MainContainerActivity"
執行完成后會生成以執行時間命名的日志文件,日志中包含每一步的截圖,會用紅框標識出點擊的位置:
其中log日志文件中可以按照index索引進行解讀,包含每步的動作、頁面名稱等信息
4、進階使用(官方社區上有完整的說明https://ceshiren.com/t/topic/3788)
在步驟3中命令后加上--demo參數生成配置模板文件, java -jar appcrawler-2.4.0-jar-with-dependencies.jar --capability "appPackage=com.hundsun.winner.pazq,appActivity=.ui.home.activity.MainContainerActivity" --demo