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