####
夜神有windows版,也有mac版
我用的mac版,直接官網下載mac版安裝
但是夜神模擬器在我的mac安裝一直是卡在99%,所以使用了網易mumu模擬器
###
###
現在不管是用使用代碼的方式,往手機傳輸數據,
還是雲測平台,比如阿里雲測,華為雲測,
還是手機群控,兼容性測試,
還是說appium工具,
都是里面部分使用了adb的命令
##
###
什么是adb
ADB,全稱為Android Debug Bridge,它是 Android 開發/測試人員不可替代的強大工具。
只能操作安卓手機
###
###
adb的工作原理:
首先是adb client 和adb server,都是安裝在pc端的,守護進程是在app端的,
然后pc的adb client 輸入命令,adbserver會接收到這個命令,然后轉發給app端,這就是原理,
###
adb環境安裝:
去安裝安卓sdk,並且配置環境變量,這里不做介紹
###
adb連接設備查看狀態:
可以連接真機,或者模擬器,都行,
mac連接的時候需要重啟一下服務,然后再去連接,就可以了,
mac不需要安裝手機驅動,
通過adb devices,這個命令,
未授權,可能連接真機會有這個問題,
adb get-state,也可以查看連接狀態,
###
adb命令格式,和安裝卸載app
設備是一個可選項,可以不寫,
##
注意這個命令的,apk包,是在pc上面的路徑,
具體下載apk,可以去騰訊應用寶下載apk的文件,
###
如果多台設備的話,也是可以adb -s 設備名 uninstall XXX來指定設備卸載
###
實際這個安裝卸載app,比較雞肋,因為這個可以在模擬器里面安裝卸載app啊,
###
adb啟動app
###
這個命令很重要很重要!!!
adb shell "dumpsys window | grep mCurrentFocus"
知道這個就可以啟動app的這個頁面了
adb shell am start -n com.tencent.news/com.tencent.news.pubweibo.PubTextWeiboActivity
這個命令是先打開app的某一個頁面,然后執行這個命令,
###
這個命令非常的重要!!!
adb logcat ActivityMnanager:I | grep "cmp"------com.tencent.news/.activity.SplashActivity
adb shell am start -n com.tencent.news/.activity.SplashActivity
這個就是從啟動頁,開始啟動app,模擬用戶的真實操作,
這個是先打開日志這個命令,然后去操作app
###
使用adb shell 命令清理緩存
安卓的底層是使用的Linux內核的,所以Linux的命令都是通用的,
可以使用adb shell 直接進入這個安卓系統,
所有應用包名列表:adb shell pm list packages
查看所有自己安裝的app,adb shell pm list packages -3
常用的adb shell操作----文件操作
進入手機設備:adb shell ---剩下的操作和Linux一樣
列出目錄下的文件和文件夾:ls
進入文件夾:adb shell cd <folder>
新建文件夾:adb shell mkdir path/foldername
###
所有的包都在cd /data/data/這個目錄下面,
查看ls | grep news
這個是一個目錄,可以進入,
我們操作了這個app之后,發現有些問題,想要回到初始的安裝的狀態,又不想要卸載重裝,怎么辦,就可以把所有的緩存都刪除,就是剛安裝好的初始狀態了,
執行了這個命令之后,這個文件夾就只剩下lib目錄了,其他的文件夾都刪除了,
pm是package manage
am是activity manage,這兩個一個是包管理器,一個是頁面管理器,
###
####
###
手機電腦傳輸文件,
注意:導入導出要退出adb shell,
1.導入到app中,
adb push pc下文件路徑 device中目錄路徑
2.導出app中的到pc中,
adb pull device中的文件路徑 pc下的文件路徑
app中的/data/data/我們是不能操作的,這是系統目錄,
我們可以操作sdcard,這個目錄,ls /sdcard
可以使用vi,touch,這樣的命令,vim使用不了
可以把app的圖片和日志拉取出來,然后分析,
####
使用adb查看日志
###
設置成為V,會打印所有的日志,
開發人員一般是D,debug模式,
S是什么日志都不輸出,
###
這個日志不是全部的,這個日志很大的時候,會把之前的日志覆蓋,這個要注意,
###
###
###
"*:W"這個是任意tag下的warning以上的日志
'*:S' 這個已經要有,意思就是設置為靜默模式,其他的都不展示,只展示我們想要的內容,
###
通過adb命令模擬手機按鈕操作
在模擬器的設置里面,打開開發者模式,打開指針位置設置,
####
###
這個命令結合指針,很重要!!!
adb shell input tap 257 406
###
adb shell input text 312312
###
adb shell input swipe 479 769 479 1392
adb shell input swipe 479 1392 479 769 2000 ----這個是慢慢的滑動,
###
實際上是手機所有的操作都是有一個key值得,可以看這個連接查看,
###
使用adb查看性能指標
###
###
-d 1,就是每隔一秒,就打印一下性能情況
這個命令是實時的,這個更加的准確,上面的cpuinfo這個是某一個時間段內的平均值,
###
##
###
adb命令實現monkey壓力測試
###
壓力測試就是連續長時間的操作這個應用,能保證每一個按鍵,頁面都是操作到的,沒有性能問題,
比如內存泄漏,比如app無相應
為什么叫做monkey,因為是隨機性點擊操作,猴子上躥下跳的,客戶的操作也是隨機性的
我們只需要收集這個monkey的日志,然后分析,看看有沒有問題,
###
##
monkey是adb的一個應用,
###
###
adb shell monkey 100,就是100個事件,事件發送的非常的快,
下面是花費了多少時間,12s的時間就運行完了 ,
如果想要看到運行的結果,那就是設置多一些,比如設置1000個事件,就可以看到運行的過程了,
會隨機的吊起其他的應用,隨機性是非常的強的,
##
剛剛我們看到,打印的日志是非常的少的,
我么可以使用這個命令,打印更多的日志,
可以看到發送了哪些事件,比如移動,點擊,滑動輸入,等等,
####
我們可以輸入很大的事件數,比如10萬個,
我們怎么停掉他呢?
進入到設備里面,adb shell
殺掉進程,
所以monkey要停止,只有這三個情況可以停止,pc端是停止不了這個monkey的
###
一般我們就是只需要一個包壓力測試,
##
300是毫秒
適當的延長時間,可以更好的模擬用戶操作,
###
問題:
這種都是隨機的操作,出現問題了,我們怎么復現呢?
可以看到每次開啟這個monkey任務的時候,有一個種子,找到這個種子號,我們可以重現這次隨機的操作,
####
##
啟動啟動monkey的時候我們可以看到比例
###
比如有的app點擊事件比較多,比如抖音是滑動事件比較多,都可以設置的,
事件的權重合計,不能大於100%,
這個是根據產品的需求來設置的,
###
忽略異常,就不會運行是停止的了,
一般操作的時候,可以直接把這些都忽略掉,忽略崩潰,忽略超時,忽略安全異常,
###
###
第一種方式,直接輸出到pc電腦上了,執行了這個命令,頁面就不打印日志了,
這個會把每一個時間都打印出來,但是這些我們是不需要的,這個非常占據空間,有可能運行了幾天之后,磁盤都被占滿了都有可能,
第二種方式,我們可以對日志過濾,‘*E’這就是我只想關注error日志,
注意,我們可以執行運行的命令之后,再新開一個窗口執行第二個方式的命令,這種命令就會過濾日志,把我們的error輸出到文件,
###
####
8小時能執行多少個事件呢?怎么算,按照,每一個事件發送需要1毫秒算
8*60*60*1000/300=96000,不要被圖片上的誤導了,
###
###
可以在日志中搜索,
###
這個monkey,也有問題,有些時候,在一個頁面轉轉,跑不出來,而有些頁面就點擊不到,
####
==================結束=================
###
###
在移動端測試時,經常會用到adb,如果是同時多開多台設備,想要操作某個設備時就要指定設備才可以
命令:adb -s 127.0.0.1:62027 +命令就可以了 adb -s 設備 命令
###
###