目前大部分的Monkey測試的方式大都無法對獨立的模塊進行穩定性測試,而每個業務線的入口在測試階段很難通過原生的Monkey測試(隨機性較強)來發現自己模塊內crash的問題,針對這個問題,在網上查找資料
偶然在網上查看到這個技術,感興趣,就記錄下【感謝博主分享】
1.原文再此:https://blog.csdn.net/liyu520131414/article/details/69357777?utm_source=blogxgwz3
2.下載工具
鏈接:https://pan.baidu.com/s/1tIrgtzOz6wgsc8MJp1KqvA
提取碼:h023
3.工具包下載好后,解壓打開config.xml文件,
第一步,獲取並輸入app的package:aapt d badging apk的路徑【找到apk,鼠標長按拖進去,回車】,以及第二步的命令,也可以獲取到package
第二步,獲取並輸入app的起始activity:
①:adb shell dumpsys window windows | findstr "mCurrent"
②:adb shell dumpsys activity | findstr "mFocusedActivity"
第三步,獲取並輸入activity白名單:
①.也可以使用adb logcat -v time -s ActivityManager,點擊app功能跳轉想要測試的頁面,cmd頁面就可以刷新獲取到跳轉頁面的activity,然后把activity輸入到白名單內
【注:當白名單內的activity的數量大於1的時候,每個activity后面都需要添加英文逗號 “,” ,最后一個不需要添加,否則多個白名單的activity的value就會鏈接在一起,導致程序檢測到與當前頁的activity不一致,就一直返回到主頁面activity上,影響測試】
第四步,cmd進入工具包所在的路徑,執行命令:java -jar monkeyTest.jar
第五步,再開啟一個cmd,執行monkey命令:www.baidu.com,命令和平時測試不需要變化,根據自己需要輸入參數執行並保存log,等待monkey執行結束,OK結束
----------------------------------------------------我的分割線----------------------------------------------------
填坑一:之前一博客好友反饋,當前頁面在activity里,但是仍然跳轉到主入口,我今天2019-07-29有復現到,后來瞎搗鼓,就好啦,沒有找到原因,以后發現再記錄吧【初步分析是白名單內的activity的“ / ”,導致的】
填坑二:當前apk頁面,不在白名單內,應跳轉到主入口頁面,但無法跳轉到主入口頁面,后來分析,是主入口的activity寫法不對,錯誤的寫法com.zhihu.android/.app.ui.activity.MainActivity(使用命令查看,是正確的)
,但是跳轉有問題,應是com.zhihu.android.app.ui.activity.MainActivity,
activity的“ / ”導致重復使用com.zhihu.android,所以去掉“ / ”,就解決了。
缺陷:
每個頁面都會有個activity,而且,會出現多個頁面共有同一個activity的現象,這樣的話,就有個缺陷,如果有個A頁面下的B頁面,他們的共用同一個activity,我只是想在A頁面跑monkey,B頁面不跑monkey,這個需求是無法通過這個方法達到的,所以,A、B頁面都會測試到,原因就是,他這個是針對activity的測試,只要是白名單里的activity,都是可以測試到的,除非A頁面、B頁面不共用一個activity。這個技術只是比基本的monkey更細化一點,還無法真正達到指定A頁面moneky測試,希望以后有大神,可以改善下,我幫忙搬磚,前提是moneky不會過時。