Android 基本测试工具的使用
Android 基本測試工具的使用和無線學習介紹
1,日志查看工具
1)DDMS
Android測試中,使用最多的日志查看工具就是DDMS了。
ddms可以從兩個地方打開,1,Eclipse的的ddms插件(屬于Eclipse 的SDK插件),2在Android SDK安裝目錄下的tools文件夾下面。
DDMS功能非常齊全,不僅僅可以查看日志,還可以截圖,打開文件目錄,終止進程等等功能,這里先直說查看日志
看日志就靠這一塊了。
日志的過濾等級
Error :error為最嚴重的錯誤,如果是拋到虛擬機的系統錯誤,就可能引起客戶端崩潰,比如最為常見的空指針異常。
Warning :警告,一般嚴重,比如網絡異常什么,一般不會有crash,但需要引起注意,過濾warning異常的時候,會同時過濾出error錯誤。
Info :信息,也就是一些系統的信息,比如頁面切換時間,手機信號量等等、過濾info信息同時會過來出warning和error信息
Debug :debug信息,系統的一些debug信息,包括所有error,warning和info。
Verbose:詳情,包括所有error warning info和debug,還有其他的一些詳情
Assert:斷言,沒見過,可能跟單元測試有關。
日志的顯示
一條日志分為7部分
1,level 等級,即上文說的error,warning等,有系統決定,開發打印的日志也可自行決定等級。
2,time時間,日志時間。
3,pid進程ID
4,tid線程ID
5,application應用,有時候會打印出所屬的應用名稱,如com.taobao.taobao
6,tag標簽,開發可以自行設定log的標簽,便于過濾,
7,text文本,即日志內容
DDMS的其他日志功能
日志清空,日志保存,日志過濾,日志暫停
日志過濾:
DDMS的詳細使用可以參考http://developer.android.com/tools/debugging/ddms.html
中文版
http://wiki.eoeandroid.com/Using_DDMS
2)Logcat命令
一般使用的不多,僅僅在ddms啟動不了,或者識別不了手機的時候才會使用。前提條件,安裝了Android SDK。
使用方法,直接在命令行下輸入adb logcat,如果日志非常多,強烈建議將文件重定向到文件里面。
或者先輸入adb shell ,再使用logcat命令,日志多的話,可以加管道操作進行過濾,即logcat|grep XXXX。
具體使用和ddms差不多,不多由于日志很多,用這種方法常年看不過來。日志內容和ddms一致
3)Wmock
如果不需要關注客戶端本地日志,只需要看客戶端應用層的網絡請求的話。
可以之間用wmock來抓取網絡中的HTTP請求,具體見
http://m.taobaotest.com/wmock/
不在贅述。
4)Wireshark和tcpdump
如果遇到一些比較難以解決的bug,需要深入TCP請求甚至IP請求,就需要用tcpdump對客戶端的進行抓包(如TCP的keepalive包),具體操作如下:
4_1,root手機,手機需要root權限,否則無法使用tcpdump。
4_2,下載tcpdump的Android版本,用push命令將文件推到手機中。不建議推送到SD卡,會有權限問題,可以放到手機的data文件夾下,。
(adb push [PCPATH][mobilPATH])
4_3,提升tcpdump的權限。用adb shell進入android bash后,需要手機使用root權限,先提升權限,然后chmod777 tcpdump。
4_4,抓包,啟動你要測試的APP后,適當的時間就可以開始抓包可,在tcpdump當前目錄下,直接使用tcpdump -p -vv -s 0 –w[pcapfilePath] 就可以實現抓包,使用ctrl + C停止。
4_5,導出.pcap文件。退出adb bash , 使用pull命令將.pcap文件導出到PC(adb pull[mobilPath] [PCPATH])
4_6,使用wireshark將日志文件打開,即可以看到所抓到的包了。
5)使用fiddler軟件抓取網絡請求,具體用法和wmock類似,只是fiddler使用自己的機器作為代理服務器,而wmock使用專用的代理服務器。
2,性能工具
1)monkey工具
Monkey可以運行在模擬器或真實設備上,并產生一系列隨機的用戶事件(點擊、觸摸、手勢以及系統級別的事件)。
Monkey一般用來進行壓力測試或穩定性測試。
Monkey通過 adb shell monkey [options] 命令來啟動
常用的參數包括
–p [package name]:指定測試包,參數即為包名,如主客戶端就是com.taobao.taobao
–s [seed]:指定事件隨機參數,參數即為隨機數的種子值。如果這個參數相同,理論上能夠復現所有事件。
- v[number] number:制定發送偽隨機事件的次數。注意,這個隨機事件并非一個時間點只發送一個隨機時間,有可能同時發送幾個事件。
--throttle [milliseconds]:每次發送事件的時間間隔,單位為毫秒,測試的時候常常設定為1000~500之間。如果不設置,點擊間隔會非常短。
下圖就是客戶端monkey的一些點擊日志,如果需要系統輸出的日志。請使用logcat命令收集,并進行重定向。
具體參數情況,請查看幫助文檔http://developer.android.com/tools/help/monkey.html
缺點:遍歷深度優先,部分頁面(需要登錄的頁面無法遍歷到)
性能監測工具
2_1,top工具
使用adb shell進入Android bash下面,然后,和linux下的top一樣。
不懂的話,top –h。具體這里不在細說。
2_2,android的dumpsys命令
通過dumpsys命令也可以獲取手機中一些APK包的系統信息,可以直接通過cmd命令行,輸入adb shell dumpsys [options]就可以了
參數包括:
2_3,ddms的系統檢測
用ddms也可以用來檢測性能,通過選項device和進程,就可以查到app的內存消耗,堆棧消耗,CPU消耗,網絡消耗等等信息,以及控制模擬器(只有模擬器,真機不行)。
下圖為網絡消耗
下圖為內存消耗
具體使用,還是看http://developer.android.com/tools/debugging/ddms.html
3,文件查看工具
1)手機軟件
各種手機助手,比如91手機助手,豌豆莢等等,都有很好的查看手機文件系統的工具。但是這些手機助手只能看SD卡里面的。只能應付日常最基本的使用。
2)DDMS
能夠查看Android文件系統的大多數目錄,但部分沒有相關權限的目錄(貌似是所有用戶的讀權限),無法查看。啟動方法為,通過device->File Explorer,出現下圖頁面
優點是ddms可以方便的導入導出數據到這些不需要root權限的目錄里面。使用方法:左上角的圖標,應該都能看懂吧
3)Adb bash 查看
Adbbash其實可以看成一個閹割版的linux bash系統,用adb shell進入adb bash后其他操作與linux系統基本無差異,但部分命令會無法使用。如下圖,感覺一切都非常熟悉吧。
只要你的手機是root過的,OK,暢游手機的系統文件。
4)RE瀏覽器(rootexplorer)
一句話,神器,但前提是你的手機必須root。在手機上裝上RE后,很多操作就可以在手機上以可視化界面完成了,甚至可以增刪改系統文件。由于權限很高,務必小心操作。比如說,一些app內部文件,可以直接通過RE瀏覽器來查看并修改,確定是文件的哪個值發生了錯誤引起客戶端的bug。
最后,針對這一塊注釋一下一些常用的文件存放地址
自己安裝的APK存放地址:/data/app下,
淘寶客戶端臨時文件(緩存,如圖片等):/sdcard/taobao,這個各個客戶端不一樣,有沒有SD卡也有影響
APP的私有文件(即需要到系統中清除緩存的APP):/data/data/<packageName>下面
APP的ANR日志 :/data/anr 下面
系統預裝的APP:/system/app下面(注意,慎刪,誤刪掛了什么別怪我沒提醒)一般只有預裝包和我們測試的APP出現了沖突的時候,才回去刪除
Adb命令: /system/bin 下面
Android系統源代碼目錄 /system/framework 下面
系統配置文件:/etc 下面
4,打包及簽名
打包過程介紹(為了解決打包過程中的問題而介紹一下)
1,生成R文件,使用aapt.exe程序生成R.java文件,如果Eclipse打開了build AutoMatically,就會在打開工程的時候完成。
2,生成aidl文件,使用aidl.exe程序,把.aidl文件轉化為.java文件。這步如果打開Eclipse的build AutoMatically的功能的話,也會自動生成
3,將.java文件生成.class文件,使用javac將.Java變成.class。
4,將class文件打包生成class.dex文件,使用dx腳本,class文件打包生成class.dex文件
5,打包資源文件,包括所有的res,asserts, Androidmanifest.xml等等文件,使用aapt.exe文件打包
6,生成未簽名的APK安裝文件,使用apkbuild打包成未簽名的apk包
7,簽名,使用jarSigner.jar進行簽名。
8,(優化對齊)
這邊注意兩點:
1,如果打包需要混淆,需要在第3和第4步之間將className進行替換,達到混淆的效果。
2,用Eclipse run出來的包默認保存在工程的bin目錄下面,這個包默認使用的是debug的簽名,如果覆蓋安裝我們自己簽名的APK包,會造成簽名不一致的沖突。
打包工具:
ANT
Maven
5,自動化測試框架
Sword
6,內存的查看
內存的查看工具使用的是Eclipse 下面的mat插件
內存文件查看的過程:
1,導出內存文件
從ddms上面,選擇需要查看內存的進程,然后,把hprof文件dump下來,dump成功后,將生成一個命名為<app包名>.hprof的文件
2,hprof文件進行轉換。
由于android的hprof文件mat文件無法打開,需要使用androidSDK的自帶工具進行轉碼操作。
具體命令為hprof-conv [path] [path]
3,在mat中打開文件
出現上圖后,就可以根據內存地址,找到泄漏的點,或者客戶端內非常消耗的內存模塊了
7,其他常用工具
1,Host修改
在日常測試過程中,經常需要修改手機的host,使其能夠訪問特定的機器。Android的host文件和linux系統一樣,處在/etc/hosts文件當中。但文件需要root權限才能夠查看,且文件是只讀的,即使有root權限,你也無法覆蓋。目前的修改辦法是在手機上裝上RE瀏覽器,然后強制修改host文件,保存退出后生效。
2,強制Kill進程
使用DDMS的進程終止工具
選擇一個進程(要求APP是debug包,否則找不到這個進程),這個按鈕會變成紅色,點擊就可以kill進程了。
3,內存回收(GC)
強制回收內存,還是靠DDMS,如下圖按鈕。
內存“Cause GC”按鈕,強制觸發GC,之后就可以不用按了,他會自動觸發內存的回收,如果隨著APP的使用dataObject持續出現變大的情況,說明APP有內存泄漏的情況(現在的客戶端也會報警)。
如果需要導出需要通過ddms 將heap dump生成出來,用來分析
4,網絡延時和降低帶寬
網絡延時可以通過wmock來實現,當然,更加簡單的方法就是通過更換sim卡來實現,用2G網絡就可以達到網絡延時提高和網絡帶寬的目的兩個目的。
5,APK打包解包命令
aapt 命令 :
如aapt dump xmltree [apk path] AndroidManifest.xml 或者aapt dbadging 命令,可以檢查APK包中的信息
轉載于:https://blog.51cto.com/lilier/1335073
總結
以上是生活随笔為你收集整理的Android 基本测试工具的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qtp:exit 函数
- 下一篇: bfs+优先队列(hdu1242)