APP专项测试之日志分析
本节目标
1、adb? 掌握常见adb命令
2、了解android系统日志文件
3、实例分析ANR & crash日志
ADT、SDK、ADB
ADT(Android development tools)—— Android开发工具。在 Eclipse上调用各种与android有关
的插件,便要ADTSDK(software development kit)——软件开发部件。要用到各种android平台,好比
android2.3等,便要有SDKADB(Android debug bridge)是用来连接安卓手机和PC端的桥梁,通过adb服务,在PC端命
令行界面对手机或者模拟器进行全面的操作
adb连接真机
1、USB连接调试:
1)usb数据线连接好电脑,手机打开调试模式;
2)勾选usb调试模式
3)输入adb devices检测手机注意:若连不上,则安装适配手机的手机助手-->连上后,卸载手机助手

2、Wifi连接调试:
Android 设备与将运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。1)USB连接手机和电脑;2)运行 adb devices,测试是否连接成功,能出现设备列表即可;3)运行adb tcpip 5555,然后断开 USB 连接;4)通过手机状态信息,查看手机的IP地址,一般会在设置-关于手机-状态信息-找到IP地址。5)运行 adb connect 192.168.2.216(ip地址),若出现:connected to 192.168.2.216:5555 说明连接成功;6)输入adb devices检测手机

adb 常见命令
adb --help 查看帮助手册adb devices 检测连接到电脑的安卓设备,这个是我们会经常用到的检测命令。adb connect/disconnect ip:端口号 通过wifi进行远程连接手机进行调试,手机和电脑在连接同一个路由器adb shell----登录设备shell(命令行的人机界面),ll ls命令都可以用,进入到 linux命令环境了,相当于执行远程命令! --- ll cdadb pull <手机文件路径> <本机路径> 从手机中拉取信息放到本地电脑上
--- adb pull /data/log.txt D:\Worksadb push <本机文件路径> <手机路径> 从本地推送信息到手机上去
---- adb push D:\Works\monkey.txt /data
adb install xxx.apk -----为了获取apk的安装包所在地址,可以直接把apk拖到cmd的窗口获取,返回 success就说明安装成功了!adb uninstall com.tencent.mobileqq ---应用包名android7.0及以下查看前台应用包名
---> adb shell dumpsys activity | findstr "mFocusedActivity"android 8.0上dumpsys activity的信息已经有变化,用此命令进行查看包名
---> adb shell dumpsys activity | findstr "mResumedActivity"获取设备的当前app的waitActivity
---> adb shell dumpsys window windows | findstr "mCurrent",回车即可adb logcat 打印log信息 adb logcat -v time > d:\logcat.txt
logcat日志文件
android日志系统提供了记录和查看系统调试信息的功能,日志都是 从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用使用方式:[adb] logcat [

logcat日志文件分析
输出的日志格式如下所示:685 01-11 09:39:35.209 I/ActivityManager( 491): start proc com.android.systemui for service686
686
687 com.android.keyguard/ .Keyguardservice: pid=547 uid=10010 gids=(50010,1028,1015,1023,1035,302,3001)
由五部分组成:1. 写下日志时的时间,如上中01-11 09:39:35.209。2. 优先级,在Android中,日志的优先级从低到高分以下几种:V—Verbose(最低级别,开发调试中的一些详细信息,仅在开发中使用,不可在发布产品中输出)D—Debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见)I—Info(信息,一般提示性的消息)W—Warning(警告)E—Error(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)3. 标签(tag),标明日志发起者和方便日志的过滤筛选,如上中ActivityManager,类和模块。4. PID(进程ID),如上中491。5. 正文:本日志的主体内容
发生crash如何分析
发生crash,adb logcat获取日志分析:1、搜索exception关键字,根据时间,包名定位2、搜索fatal / caused by关键字3、搜索force finish找到具体到java层的报错日志(at缩进),贴到bug里,提交给开发!!!
ANR是什么
ANR全名Application Not Responding,也就是应用无响应当操作在一段时间内系统无法处理时,系统层面会弹出右图那样的ANR对话框为用户在主线程长时间被阻塞时提供处理交互,提高用户体验Android系统一种自身检测机制

发生ANR如何分析
系统在发生ANR时,会通过三种方式记录信息:Logcat日志Trace文件DropBox服务
通过Logcat日志进行分析:
日志格式1) ActivityManager:ANR in [进程名]([部件名])2) ActivityManager:PID:[应用进程ID]3) ActivityManager:Reason:[原因提示]4) [Process CPU state]通过搜索anr关键字,若无具体java报错信息,继续 另一种方法获取日志

通过Trace文件进行分析: /data/anr/Dump stack trace信息Dump的进程包括:当前应用进程,父进程,主进程,persistent进程,以及CPU占用率排在前几位的(最多5个)进程ps:只能记录最后一次发生的anr的信息
data/anr/traces.txt文件里面只能保留最后一次发生ANR时的traces信息通过dropbox可以收集系统一段时间内的异常信息(包括ANR、crash)/data/system/dropbox是dropbox指定的文件存放位置若要收集10天前的日志信息,可能就收集不了
IOS APP定位日志
1、iOS手机上获取崩溃日志,打开手机设置 -> 隐私 -> 分析 -> 分析数据2、苹果电脑,通过Xcode中打开崩溃日志,打开xcode,菜单栏选择window,选择 Devices and Simulators,点击View Device Logs,可以看到日志列表3、win系统通过第三方itools,查看工具箱-获取崩溃日志使用工具将日志同步到电脑,然后贴到bug里给开发!
常见面试题-概率不高
1、APP测试什么时候需要收集日志?怎么收集日志的?1)何时收集日志? 答:在出现操作异常时,查看并定位具体问题,当出现 crash(崩溃)和 ANR(Application Not Responding:无响应)时去看日志,协助开发发现 bug。 备注:发生 ANR 可以使用三种途径记录报错信息,分别是logcat 日志分析、Trace 文件、DropBox 服务,后续介绍下这三种方式如何使用。2)怎么收集 APP 日志?答:安卓手机通过 adb 命令连到手机,再使用 adb logcat 命令去收集打印日志信息。日志收集好后,可以根据 exception、fatal、error 等关键字进行搜索,找到具体报错的信息位置,截图到 bug 中,发给开发2、APP日志捕获的工具有哪些?Logcat命令行工具Logcat是一个命令行工具,用以存贮私信日志,包含机器设备抛出去不正确时的局部变量运动轨迹,及其从您的运用中应用 Log 类载入的信息
本节课目标
抓包&弱网测试 -- fiddler
APP客户端压力稳定性测试--monkey
Fiddler --抓包定位前后端bug
允许远程连接[手机和电脑需处于同一网段]:Tools -> Options -> Connections 勾选Allow remote computers to connect

1)查看电脑端IP
2)在手机设置网络代理:设置->WLAN设置 ->选择该WiFi,长按弹出选项框,选择修改网络
3)手机端抓包https请求:打开手机浏览器输入:http://电脑IP:8888 下载并安装证书
fiddler–模拟弱网环境
1)首先需设置手机代理,确保fiddler能抓到手机端数据包
2)点击 Rules -> Customize Rules 进行设置,打开自定义脚本编辑器delay的数值:1000/速度 (上传/下载)

3)设置完成后,在fiddler里将 Rules -> Performance -> Simulate Modem Speeds
选中可是设置生效
APP压力稳定性测试–monkey
1)Android系统自带monkey程序,模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检查程序多久的时间发生异常2)monkey什么时候用? 看有无 app 压力稳定性需求3)等 app产品稳定了,没有特别多的bug时候,一般会用monkey取测试应用的稳定性、健壮性(是否会发生闪退、奔溃),手机出厂的整机测试
monkey常见命令
monkey命令格式:1) adb shell monkey {+命令参数} 随机事件次数2) adb shell monkey -help/-h
monkey案例&说明
adb shell monkey -p com.lemon.lemonban
--ignore-crashes --ignore-timeouts --throttle 1000
--randomize-throttle -s 3500 -v -v -v 100000 > D:\monkey_log.txt
-v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别-p
后面接着对应的包名,如果是整机,就不需要,用此参数指定一个或多个包(Package,即APP名字)-s
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey参数所产生的时间序列也形同。用于问题重现--throttle <毫秒>
用于指定用户操作(即:事件)间的时延,单位为毫秒--ignore-crashes --ignore-timeouts
这里是monkey参数的过程中遇到crash或timeout的情况时忽略掉,一般不设置时,出现crash或timeout时,Monkey参数会终止。这里是防止Monkey参数终止100000
这里是指点击的次数,根据测试经验,对于单个app这个次数设置在 100000次就可以了,如果是整机,一般设置在 500000次
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!