Fastbot:行進中的智能 Monkey
背景:
Fastbot是位元組跳動基于Monkey進行二次開發的一款工具,相對與Monkey來說會更加智能。
原理和源檔案參考:
傳送:https://juejin.cn/post/6877360102123241480#heading-0
https://github.com/bytedance/Fastbot_Android
随機方法:
使用方法:
1.模拟器或者真機連接配接電腦,用adb devices檢測是否連接配接成功;
下面是基于真機(小米)模拟
C:\Users\Administrator>adb devices
List of devices attached
0a1e0f3d5 device
注意:手機需要開啟開發者模式和usb授權;手機連接配接為檔案夾模式
2.把兩個附件: framework.jar , monkeyq.jar push 到手機上某個目錄中,建議/sdcard
adb push framework.jar /sdcard
adb push monkeyq.jar /sdcard
備注:真機可能會有權限問題,提示無權限;
解決:使用adb指令:adb shell ls /sdcard 列印所有檔案,發現這個檔案夾就是與電腦傳送預設檔案夾;
可以通過手機連接配接電腦,設定為:檔案模式,右鍵兩個附件選擇發送到手機,就預設到sdcard這目錄
不知道adb 指令可以參考adb日常使用方法 :https://www.cnblogs.com/shoebill/p/14430554.html
C:\Users\Administrator>adb shell ls /sdcard
3. 運作随機腳本指令:
adb -s 裝置号 shell CLASSPATH=/sdcard/monkeyq.jar:/sdcard/framework.jar exec app_process /system/bin com.android.commands.monkey.Monkey -p 包名 --agent robot --running-minutes 周遊時長 --throttle 事件頻率 -v -v
執行個體
adb shell CLASSPATH=/data/monkeyq.jar:/data/framework.jar exec app_process /system/bin com.android.commands.monkey.Monkey -p com.test.today --agent robot --running-minutes 10 --throttle 500 -v -v
包需要特别打才能運作執行正常;
建議:執行指令前,先進行登入,随機的場景遇到需要登入的功能,基本跳不過去,登入後可覆寫的功能點能加大,相對Monkey随機覆寫,此工具覆寫更大;
自定義腳本:
腳本的設計也是基于xpath,結合每個activity,定位到目前的xpath,最後結果發現并不能按照自定義的腳本執行,更加偏向于随機跑,
把自定義命名為:并放到sdcard 目錄,執行指令:
adb shell CLASSPATH=/data/monkeyq.jar:/data/framework.jar exec app_process /system/bin com.android.commands.monkey.Monkey -p com.test.today --agent robot -v 1#1代表執行次數
分析:
通過列印每個頁面的activity和元素發現,發現有些頁面的activity不一樣的,還是id,name等元素的clickable = false,
懷疑以上兩個原因導緻自定義腳本不能如實跑,例如:activity跟腳本不一緻,xpath的元素是不可點選導緻,
反思:如果是元素不可點選,随機腳本應該也不能正常跑,這裡有點沖突,
有哪位大神有研究,并能正常執行,請指點一下迷津,跪謝!!!
教程的列子:
實際:
遇到查找activity 與 定位元素問題,可以使用下面指令:
#找activity的方法:
#能找到包名和activities,但activities可能是廣告的
aapt dump badging D:news.apk
#在啟動app過程 執行下面指令能提過廣告的activities
#例如有啟動頁的情況下,需要那打開a跳過該廣告頁,可以在跳過廣告頁,執行下面的指令即可
adb shell dumpsys window w | findstr \/ | findstr name=
#下載下傳目前頁面的定位和activity資訊
adb shell uiautomator dump
總結:
通過fastbot 結合手機的性能監控工具,可以運用于穩健性測試與偶現的閃退問題(配合日志捕捉)的發現;