【测试基础第十一篇】APP日志分析

时间:2024-04-16 14:14:01
    • 1、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端命令行界面对手机或者模拟器进行全面的操作。
    • 常用命令
      • 1.adb --help查看帮助手册
      • 2.adbdevices检测连接到电脑的安卓设备,这个是我们会经常用到的检测命令。
      • 3.adb connect/disconnect ip:端口号通过wif进行远程连接手机进行调试,手机和电脑在连接同一个路由器
        • 127.0.0.1本机回环地址,62001夜神模拟器默认端口

        • adb连接真机
          • 1. USB连接调试:
            • 1) usb数据线连接好电脑,手机打开调试模式:
            • 2)勾选usb调试模式
            • 3)输入adb devices检测手机.

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

      • 4.adb se---登录设备shell (命令行的人机界面),安卓手机后台就是一个Linux系统:
        • 进入安卓手机

        • 1) II详细属性, Is命令都可以用-查看文件: list

        • 2) cd: 进入目录

      • 5.adb pull <手机文件路径> <本机路径>从手机中拉取信息放到本地电脑上

      • 6.adb push <本机文件路径> <手机路径>从本地推送信息到手机上去

      • 7.adb install xxx apk ---为了获取apk的安装包所在地址,可以直接把apk拖到cmd的窗口获取,返回success就说明安装成功了!

      • 8.adb shell dumpsys activity | find "mFocusedActivity" --查看前台应用包名

      • 9.adb uninstall +应用包名

      • 10.adb logcat打印1og信息
        • logcat日志文件
          • android日志系统提供了记录和查看系统调试信息的功能,日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用
            • 使用方式:
              • [adb] logcat [<option>] .. [< fiter-spec>]..

          • logcat是以如下开头的:
            • 1. -------- beginning of xxx
            • 开发者选项,有个选项叫做“日志记录器缓冲区大小”, 默认是256K,日志是循环写入环形缓冲区的。在通常情况下,写满时最旧的日志会被删除以给新输出的日志留内存空间一真机设置 ,模拟器一般没有
        • logcat日志文件分析
          • 输出的日志格式如下所示:

          • 由五部分组成:
            • 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关键字, 根据时间,包名定位【com.zzb.memoryleak】

            • 2.搜索fatal/ caused by关键字
            • 3、搜索force finish
          • 找到对应的日志,贴到bug里,发给开发! ! !
        • ANR?
          • 何为ANR
            • ANR全名Application Not Responding ,也就是应用无响应当操作在一段时间内系统无法处理时 ,系统层面会弹出右图那样的ANR对话框
            • 为用户在主线程长时间被阻塞时提供处理交互 ,提高用户体验
            • Android系统一种自身检测机制

          • 发生ANR如何分析
            • 系统在发生ANR时,会通过三种方式记录信息:
            • ➢Logcat旧志
            • ➢Trace文件
            • ➢DropBox服务
          • ANR分析
            • 通过Logcat日志进行分析:
              • 日志格式
                • ActivityManager : ANR in [进程名]([部件名])
                • ActivityManager : PID:[应用进程ID]
                • ActivityManager : Reason:[原因提示]
                • [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指定的文件存放位置

      • 11. error: cannot connect to daemon
        • 1) 查看是否有手机助手,豌豆荚之类的软件,会占用5037端口
        • 2)使用netstat -ano | findstr 5037查看5037端口对应的进程号(因为5037是adb的默认端口号),
          • 然后用taskkill -f -pid 11100 --- 进程号即可杀死
          • adb connect
        • 3)替换文件
      • 12. offline:
        • 1) adb kill-server , 杀掉进程,重新连接 -- adb connect
        • 2) 模拟器必须启动
        • 3) 替换文件
      • 14.真机测试 ,保证步骤跟老师PPT一致之外, https://www.cnblogs.com/zymnstlm/p/12381619.html , 安装驱动
        • 1)权限 : /data -- 模拟器权限低 ,真机高 #--root, $--p普通用户 === sdcard 目录 是有权限 , cd sdcard == 注意:很少新建文件;
        • 2)电脑C盘: adb logcat -v time > C:\test\logcat.txt == 因为直接建在C盘,对于C盘根目录无权限访问
      • los APP定位日志
        • MacOS电脑: xcode工具
        • Windows: iTunes iTools
        • 使用工具将日志同步到电脑,然后贴到bug里给开发!
    • 常见面试题
      • 1、APP测试什么时候需要收集日志?怎么收集日志的?
        • 测试app时,出现异常会去收集日志,查看定位具体的一些问题,出现crash、anr无响应时一定要手机日志,帮助开发定位问题
        • 安卓手机通过adb命令连到手机里,用adblog这个命令去收集日志
      • 2、APP日志捕获的工具有哪些?
        • 安卓:adb
        • 苹果xcode、itunes、itools
    •