1. 程式人生 > >測試人員遇到Android APP崩潰和無響應手足無措?

測試人員遇到Android APP崩潰和無響應手足無措?

這2天,在測APP相容性時,遇到APP奔潰閃退的情況。將問題反饋給開發後,開發自己除錯後,沒有復現。由於又是遠端,base地不在一塊,我總不能把手機寄過去吧,那也太費事了。

所以就想到,提供明確的報錯日誌,讓開發定位問題,豈不是就很方便了,也解決了遠端的問題。

那如何抓取到Crash日誌呢,我又沒開發除錯工具,也不可能在短時間內搭建一套開發環境。尋思答案後,最終得到了完美解決,且聽細細道來。

瞭解Crash

我們先來簡單瞭解下Crash:Crash,就是崩潰。anr(Application Not Responding -- 程式無響應)是Crash的一種。程式正常執行中,可能會出現未捕獲到的異常,這就會造成崩潰。

常見Crash異常

NullPointerException  空指標

ClassCastException  型別轉換異常

IndexOutOfBoundsException  下標越界異常

ActivityNotFoundException Activity  未找到異常

IllegalStateException  非法狀態異常

ArrayIndexOutOfBoundsException  陣列越界異常

SecurityException  安全異常

NoSuchMethodException  方法未找到異常

SQLException  操作資料庫異常

抓取奔潰和無響應日誌

對於開發人員來說,抓取日誌是很方便的,但對於測試人員來說,就不是太方便了。大多都是直接dos視窗下執行adb命令來抓取日誌,而每次都敲命令也是很麻煩。

所以通過adb程式與bat命令組合使用來抓取日誌,就要方便很多了,短短几秒鐘,可以輕鬆搞定日誌的抓取,期不期待。

環境準備

安裝JDK和ADB,這個安裝很簡單,可參見以前的博文,基於Python的Appium環境搭建合集。

bat檔案製作

環境準備好後,就來寫bat檔案了。

捕獲Crash異常的bat檔案命令

命令參考如下,製作成logcat.bat檔案,logcat.bat檔案可以放置任意位置。注意:如果adb沒有配置到環境變數中,則需要將logcat.bat檔案放到adb對應資料夾中。

@ECHO OFF
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"

SET timeStamp=%dt:~0,4%-%dt:~4,2%-%dt:~6,2%_%dt:~8,2%-%dt:~10,2%-%dt:~12,2%
SET mutID=_mut

@ECHO ON
adb logcat -v time > .\"%mutID%_%timeStamp%_logcat.log"

pause

上述命令實現原理:該工具的原理是bat檔案呼叫adb工具,將手機執行日誌拉到本地,並將實時日誌也記錄到本地。

當手機需要重現Crash、或者某一段時間內已經發生過Crash,點選我們製作的bat檔案,logcat檔案中的命令會將手機的logcat日誌拉下來並實時記錄,直到你關閉cmd視窗。

然後在拉下來的txt中尋找FATAL關鍵字,附近上下文即為Crash日誌。

捕獲ANR異常的bat檔案命令

anr:全稱為Application Not Responding,意思為程式無響應。

命令參考如下,製作成anr.bat檔案,anr.bat檔案可以放置任意位置。注意:如果adb沒有配置到環境變數中,則需要將anr.bat檔案放到adb對應資料夾中。

@ECHO OFF
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
SET timeStamp=%dt:~0,4%-%dt:~4,2%-%dt:~6,2%_%dt:~8,2%-%dt:~10,2%-%dt:~12,2%
SET mutID=_mut
@ECHO ON
adb pull data/anr/traces.txt traces_%timeStamp%.txt

實現原理與捕獲Crash異常是一樣的,只是該命令是針對發生anr的情況。

具體實踐

捕獲Crash異常具體用法:

①將android手機連線電腦,開啟開發者模式並允許usb除錯;

②執行logcat.bat檔案

③如果手機程式已經發生過crash,10秒後關閉cmd視窗;如果是想重現crash,則在手機端重現後即可關閉cmd視窗;

④在logcat.bat的同級目錄下會生成一份log檔案,從檔案中搜查FATAL關鍵字,便可找到崩潰程式碼。

檢視報錯日誌,報錯如下所示:

如上所示截圖,就是測試過程中,發生奔潰的日誌了,將日誌貼在bug裡,既方便開發排查問題,又節約協作時間。

使用優點

使用bat檔案捕獲日誌,有如下幾個有點:手機無需root;無需開發環境支援;方便儲存、查詢日誌;操作簡單。

以上就是捕獲報錯日誌的操作步驟了,希望對有需要的博友有所幫