在最新版本的測(cè)試助手中月趟,我們加入了log收集與上傳功能,簡(jiǎn)單來說恢口,就是通過測(cè)試助手來收集被測(cè)app的運(yùn)行l(wèi)og孝宗,設(shè)備無需root,使用過程無需adb和usb耕肩;
項(xiàng)目背景:
我們的測(cè)試人員因妇、行方人員在測(cè)試APP過程中發(fā)生問題后,為了能快速定位到問題點(diǎn)并及時(shí)反饋猿诸,需要在非debug的app上快速收集log婚被,常用的log收集無非有以下幾種方法:
1、使用adb logcat查看梳虽;
2址芯、安裝第三方app模擬adb shell查看;
3怖辆、在自身app中加入log查看功能是复,該功能需要一定的操作觸發(fā),如連續(xù)點(diǎn)擊某個(gè)控件后觸發(fā)竖螃;
以上幾種方法淑廊,都存在一定的局限性:
1、需要安裝adb工具特咆,需要有usb和電腦季惩;
2、Android 4.0以后的版本腻格,app使用adb logcat無法查看其它app的log画拾;
3、需要推動(dòng)開發(fā)同學(xué)寫代碼加入菜职,在線上版本中青抛,觸發(fā)log收集的操作有被破解的風(fēng)險(xiǎn),造成關(guān)鍵log信息的泄漏酬核;
基于以上幾種方法的局限性蜜另,我們提出一種較為中和的解決方案:集成我們自己開發(fā)的代碼到被測(cè)app,并通過我們開發(fā)的第三方app“測(cè)試助手”嫡意,來收集被測(cè)app的log举瑰,這種解決方案有以下幾個(gè)改進(jìn)點(diǎn):
1、無需adb環(huán)境蔬螟,無需usb此迅;
2、適用于Andorid所有版本;
3耸序、僅能通過測(cè)試助手收集被測(cè)app的log忍些,測(cè)試助手需要登錄后才能使用,被測(cè)app的log安全性得到保障佑吝;
大體功能和交互如下:
1坐昙、啟動(dòng)需要被采集的app,運(yùn)行一段時(shí)間:
2芋忿、啟動(dòng)我們的測(cè)試助手炸客,進(jìn)入"Logcat工具",選擇需要采集的app戈钢,就能收集到剛才app運(yùn)行的log:
下面簡(jiǎn)單介紹log采集的實(shí)現(xiàn)過程:
? ? ? ?采集log的核心功能是利用了Android的廣播通信機(jī)制實(shí)現(xiàn),首先殉了,需要修改被測(cè)app的源碼开仰,在被測(cè)app中注冊(cè)我們預(yù)先開發(fā)好的一個(gè)BroadcastReceiver,收集log的時(shí)候薪铜,測(cè)試助手會(huì)發(fā)送對(duì)應(yīng)的廣播到這個(gè)BroadcastReceiver众弓,這個(gè)receiver里面的邏輯是調(diào)用一個(gè)log采集的接口,收集到本app的最近500行l(wèi)og隔箍,隨后谓娃,通過顯示的intent打開測(cè)試助手的一個(gè)activity,將采集的log在測(cè)試助手的activity中顯示:
1蜒滩、注入BroadcastReceiver到被測(cè)app:
如何將這段代碼集成到被測(cè)app?
首先滨达,我們可以新建一個(gè)aar項(xiàng)目工程并加入上面的代碼,導(dǎo)出的aar包可以用gradle發(fā)布到JCenter倉(cāng)庫(kù)俯艰,具體的發(fā)布aar包教程可以參考:http://www.cnblogs.com/qianxudetianxia/p/4322331.html
隨后捡遍,我們可以通過jenkins的構(gòu)建腳本,修改被測(cè)app的gradle.build和AndroidManifest.xml文件竹握,加入發(fā)布的aar包:依賴并注冊(cè)broadcastreceiver到AndroidManifest:
這樣構(gòu)建出來的被測(cè)app就可以接收測(cè)試助手發(fā)送的廣播了画株;
2、測(cè)試助手發(fā)送廣播:
3啦辐、測(cè)試助手通過接收被測(cè)app的intent來傳遞收集的log內(nèi)容污秆,并啟動(dòng)activity展示: