APP专项测试之日志分析

APP专项测试之日志分析

本节目标

1、adb? 掌握常见adb命令
2、了解android系统日志文件
3、实例分析ANR & crash日志

ADT、SDK、ADB

ADT(Android development tools)—— Android开发工具。在 Eclipse上调用各种与android有关
的插件,便要ADT

SDK(software development kit)——软件开发部件。要用到各种android平台,好比
android2.3等,便要有SDK

ADB(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 cd

adb pull <手机文件路径> <本机路径> 从手机中拉取信息放到本地电脑上
--- adb pull /data/log.txt D:\Works

adb 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 [<option>] ... [<fiter-spec>]... 

logcat是以如下开头的:
	1. -------- beginning of xxx

开发者选项,有个选项叫做“日志记录器缓冲区大小”,默认是256K,日志是循环写入环形缓冲区的。
在通常情况下,写满时最旧的日志会被删除以给新输出的日志留内存空间——真机设置,模拟器一般没有

在这里插入图片描述

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次

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值