测试人员遇到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:~,%-%dt:~,%-%dt:~,%_%dt:~,%-%dt:~,%-%dt:~,%
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:~,%-%dt:~,%-%dt:~,%_%dt:~,%-%dt:~,%-%dt:~,%
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;无需开发环境支持;方便保存、查找日志;操作简单。
以上就是捕获报错日志的操作步骤了,希望对有需要的博友有所帮助。
测试人员遇到Android APP崩溃和无响应手足无措?的更多相关文章
- android app崩溃日志收集以及上传
源代码获取请到github:https://github.com/DrJia/AndroidLogCollector 已经做成sdk的形式,源代码已公开,源代码看不懂的请自行google. 假设想定制 ...
- monkey测试===如何获取android app的Activity
方法一(推荐): 手机连接adb,手机界面在需要取得activity的界面. 推荐使用该命令: adb shell dumpsys activity top | findstr ACTIVITY 获取 ...
- Android APP 性能优化的一些思考
说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...
- Android app 性能优化的思考--性能卡顿不好的原因在哪?
说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...
- App崩溃监控
常见马虎导致崩溃 1 数组越界: 2 多线程问题,在子线程刷新UI: 3 主线程无响应,主线程超过系统规定的时间没有响应,就会被watchdog杀掉: 4 野指针: 崩溃信息的收集却并没有那么简单.因 ...
- IE8浏览器总是无响应或卡死崩溃怎么办
IE8浏览器总是无响应或卡死崩溃怎么办 2016-05-11 11:22:31 来源:百度经验 作者:qq675495787 编辑:Jimmy51 我要投稿 IE在打开某些网页的时候经常崩溃或无响应, ...
- Android APP压力测试(三)之Monkey日志自动分析脚本
Android APP压力测试(三) 之Monkey日志自动分析脚本 前言 上次说要分享Monkey日志的分析脚本,这次贴出来分享一下,废话不多说,请看正文. [目录] 1.Monkey日志分析脚本 ...
- Android APP压力测试(一)之Monkey工具介绍
Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...
- Android app主线程UI更新间歇性崩溃的问题
对App进行开发测试时,偶尔出现app崩溃的问题.日志如下: 10-25 18:44:52.935 15290-15290/com.zzq.cnblogs E/AndroidRuntime﹕ FATA ...
随机推荐
- Verilog代码和FPGA硬件的映射关系(二)
大家可能会有这样的疑问,我们编写的Verilog代码最终会在FPGA上以怎样的映射关系来实现功能呢?我们以一个最简单的组合逻辑与门为例来向大家说明.RTL代码如下所示: //------------- ...
- Kivy主窗体大小的控制
1. 引入依赖模块 主窗体大小的控制,需要使用到kivy.core.window中的Window模块 from kivy.app import App from kivy.core.window im ...
- [安全] HTTPS的理解
一.概述 在下面的章节,我们要搞明白以下几个问题: HTTP和HTTPS的区别,为什么要使用HTTPS HTTPS如何解决加密问题 HTTPS如何避免中间人攻击 CA证书是什么 CA证书是如何申请和颁 ...
- 剑指Offer之旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转 ...
- [JavaWeb基础] 014.Struts2 标签库学习
在Struts1和Struts2中都有很多很方便使用的标签库,使用它可以让我们的页面代码更加的简洁,易懂,规范.标签的形式就跟html的标签形式一样.上面的篇章中我们也讲解了自定义标签那么在如何使用标 ...
- excel操作数据实用技能
写代码写习惯了,在做数据预处理时也总是习惯性地用python.pandas来做处理,但其实有时候根本不需要写代码,用excel也能达到目的,甚至比写代码快很多,写代码要半天,excel只要几秒钟.下面 ...
- 学习Pytorch遇到的一些问题(一)
基本介绍 这周开始学习深度学习的部分知识,参考的书是<动手学深度学习>(PyTorch版),在操作过程中遇到一些小问题,记录一下问题和解决办法. PyTorch下载过慢 安装步骤 PyTo ...
- Rocket - debug - Example: Read Memory
https://mp.weixin.qq.com/s/ChXNTbx94WDC72GvmE9bGA 介绍riscv-debug的使用实例:使用三种方法读取内存. 1. Using System Bus ...
- 第十届蓝桥杯JavaC组省赛真题
试题 A: 求和 本题总分:5 分 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包 括 1.2.9.10 至 32.39 和 40,共 28 个,他们的 ...
- Java实现 LeetCode 647 回文子串(暴力)
647. 回文子串 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串. 示例 1: 输入: "a ...