Android稳定性测试之Log分析】的更多相关文章

做手机自动化测试已经快两年了,很久没写Blog了.今天抽空总结一下. 用自动化做稳定性测试,主要是为了发现系统或者应用出现FC/ ANR/ Reboot/ Freeze等问题. 先详细说下各种问题对应Log的关键字: 一. FC: 所有FC在EventLog中对应的关键字是“am_crash”. 1. 常规FC,在Main/Sys.log 关键字 "FATAL EXCEPTION" 2. Native Crash,在Main/Sys.log 关键字 "backtrace&qu…
http://blog.csdn.net/fangchongbory/article/details/7645815         android 常见死机问题--log分析=================================================================================================== 一般在平时工作中,基本上很多代码可以在eclipse+ndk进行调试,但如果需要用到具体的硬件设备,如媒体播放设备无法模拟的…
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011436666/article/details/53998332 在之前的文章Android自动化测试之Monkey中我们了解过了Monkey的4大类命令和基本使用,当我们运行Monkey之后,我们会发现它的日志输出是很有规律的,因此很有必要对Monkey事件及其输出日志做一个了解. 1.Monkey事件 Monkey事件是用来模拟用户的常规操作的,对手机进行稳定性测试,主要可以分为11大类事…
1.什么是monkey? Monkey是一个命令行工具,使用安卓调试桥(adb)来运行它,模拟用户触摸屏幕.滑动Trackball.按键等随机事件流来对设备上的程序进行压力测试,检测程序多久的时间会发生异常,可以根据获取的log信息进行修复. 注:运行adb服务,需要搭建android sdk的环境,可以参考我另一篇<APP压力稳定性测试之monkey环境搭建>完成. 2.Monkey的一般使用步骤 1.先确认设备(模拟器或者真机)是否连接成功.命令:adb devices,出现设备号则表示连…
今天看到一篇关于Android 内存泄露实践分析的文章,感觉不错,讲的还算详细,mark到这里. 原文发表于:Testerhome: 作者:ycwdaaaa ;  原文链接:https://testerhome.com/topics/5822 定义 ​内存泄漏也称作"存储渗漏",用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元.直到程序结束.(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏. 内存泄漏形象的比喻是"操作系统可提供给所…
Android自动测试之Monkey工具 APP测试工作中经常会听到领导说,APP压力测试做了吗?刚入行时,不知道什么是 APP压力测试,找了半天没找到自己想要的.过了几年,回头想这个问题,发现牵扯了很多地方.下面我根据自己的理解说以下两点: APP运行稳定性 服务器高压情况下APP运行稳定性 APP运行稳定性 举个例子,我们打开APP,随便点两下,APP就停止运行,那么能说这个APP稳定吗?当然实际情况下,不会点两下就奔溃的.既然点两下不会奔溃,那么我点1万次,或者10万次呢?这个就不好做保证…
android wifi ANR问题分析总结 1 看看main进程阻塞在那里? 2 调用关系的函数阻塞在那里? 3 最终阻塞函数的阻塞前的log以及状态…
Android自动化测试之Monkeyrunner学习笔记(一) 因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyrunner.Athrun.appium,目前仍在了解学习android测试框架.CTS等.本文主要为前段时间学习总结,由于刚接触不久,故本文难免会有些肤浅,大神请绕走~ [目录] 1.Monkeyrunner简介 2.Monkeyrunner工具特性 3.Monkeyrunner工具同Monkey工…
Android四个多线程分析:MessageQueue的实现 罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 在前面两篇文章<Android多线程分析之二:Thread的实现>.<Android多线程分析之三:Handler.Looper的实现>中分别介绍了 Thread 的创建,执行,销毁的过程以及 Thread与 Handler,Looper 之间的关联:Thread 在其 run() 方法中创建和执行消息处理循环 Looper…
作者: shawnzhao,QQ音乐技术团队一员 一.前言 在 Android 中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种:其一是质量压缩,其二是下采样压缩. 前者是在不改变图片尺寸的情况下,改变图片的存储体积,而后者则是降低图像尺寸,达到相同目的. 由于本文的篇幅问题,分为上下两篇发布. 二.Android 质量压缩逻辑 在Android中,对图片进行质量压缩,通常我们的实现方式如下所示: ByteArrayOutputStream outputStream = new Byte…
系统架构分析 Android体系结构 安卓结构有四大层,五个部分,Android分四层为: 应用层(Applications),应用框架层(Application Framework),系统运行层(Libraries和android runtime)和Linux内核层. 那么我来讲讲应用层有什么? 就是一些应用软件,如首页,联系人,电话,浏览器等等:应用框架如何理解? 应用框架层是用Java写的,有事件管理器,windows管理器,内容提供,查看系统 ,消息管理器,安装包管理,电话管理,资源管理…
Android 源码目录分析 Android 4.0 |-- abi (application binary interface:应用二进制接口)|-- art (average retrieval time:平均检索时间)|-- bionic (bionic C库 Android linux内核库)|-- bootable (启动引导相关代码)|-- build (存放系统编译规则及通用类基础开发包配置)|-- cts (Android兼容性测试套件标准)|-- dalvik (dalvik…
Choreographer 的作用主要是配合 Vsync ,给上层 App 的渲染提供一个稳定的 Message 处理的时机,也就是 Vsync 到来的时候 ,系统通过对 Vsync 信号周期的调整,来控制每一帧绘制操作的时机.目前大部分手机都是 60Hz 的刷新率,也就是 16.6ms 刷新一次,系统为了配合屏幕的刷新频率,将 Vsync 的周期也设置为 16.6 ms,每个 16.6 ms , Vsync 信号唤醒 Choreographer 来做 App 的绘制操作,这就是引入 Chore…
一.BinderProxy@4479b390 is not valid; is your activity running? 原因分析: 因为使用了AsyncTask 异步线程在线程完成以后的onPostExecute方法里面操作UI.这个时候如果用户在onPostExecute调用之间跳转了页面,这时activity已经onDestory了,那么就会报出android.view.WindowManager$BadTokenException: Unable to add window -- t…
Android之打log 1.在代码中加上自己的log 2,模块编译mm -B或者./mk mm/mmm packages/apps/Contacts/ 3编译成功后install或者push生成的apk 4.然后打开adb命令窗口输入adb logcat > C:\Users\xxx\Desktop\xxx.txt,然后回车 5打开手机对应的界面执行相应的代码,然后Ctrl+C强制停止 6.此时log就是xxx.txt里面了 7.用Notepad++工具打开xxx.txt,根据自己加log的关…
从Android系统出发,分析Android控件构架 Android中所有的控件追溯到根源,就是View 和ViewGroup,相信这个大家都知道,但是大家也许会不太清楚它们之间的具体关系是什么,在Android的系统当中它们有充当着什么样的角色.那么下面就让我给大家捯饬捯饬. 其实在Android当中是这样的,每个控件在Android中都是占据一个矩形的区域,而ViewGroup相当于是一个容器(大家可以这么理解)一个专门放View的一个容器,也可以放ViewGroup,并且上层的ViewGr…
Android实时抓包分析 : 善用adb调试桥   谈到android网络抓包,很多人都能想到牛逼轰轰的神器tcpdump.方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包记录到本地,再把抓到的.cap文件导到pc上面用wireshark来分析.这里步骤非常多,在和后台联调的时候,这个效率是非常低的. 能不能在android上面启动抓包,然后直接在pc端看到实时抓包结果? 有了adb调试桥,我们就可以做到这么便捷. 一.准备工具: 1.android 系统root 2…
在 android 平台上搞开发工作,会经常用到一些 Log 输出调试信息. 众所周知,android 中有五种类型的 Log , v, d, i, w, e 这里就不再赘 述 (如果对这些不了解的朋友,推荐看 android_Tutor 的博文http://blog.csdn.net/Android_Tutor/article/details/5081713 , 上面讲的很详细) 本文主要讲一下如何统一控制 Log 的输出和关闭. 一般我们会在 debug 的版本中输出 log,而在 rele…
Android自动化测试之使用java调用monkeyrunner 众所周知,一般情况下我们使用android中的monkeyrunner进行自动化测试时,使用的是python语言来写测试脚本.不过,最近发现可以用java调用monkeyrunner Api,用java语言写测试脚本.   于是,就简单研究了一下.这里做一些总结.希望有对在研究的午饭可以有所用处. 开始时,搜素到一些零碎的教程,说使用java调用monkeyrunner时,需要导入android sdk  tools路径下的li…
相信大家在做应用调试的时候,不可能时时通过USB线连着电脑去查看log信息,所以,将应用的log信息保存到手机本地就很有必要了,有助我们从这些log信息中提取有用的部分,以解决一些bug,下面我把网上分享的代码中作了一些精简,作为开发者使用,个人觉得没必要通过用户上传给我们,用户上传的不需要这么庞大的log信息,仅仅那部分崩溃的log信息即可,可参考我的另外一篇blog:http://blog.csdn.net/weidi1989/article/details/7927273. 好了,废话不多…
Android 开发之serviceManager分析 在Android系统中用到最多的通信机制就是Binder,Binder主要由Client.Server.ServiceManager和Binder驱动程序组成.其中Client.Service和ServiceManager运行在用户空间,而Binder驱动程序运行在内核空间.核心组件就是Binder驱动程序了,而ServiceManager提供辅助管理的功能,无论是Client还是Service进行通信前首先要和ServiceManager…
from: http://blog.csdn.net/thl789/article/details/7887968 本文从开发AppWidgetProvider角度出发,看一个AppWidgetPrvodier在整个AppWidget体系中所扮演的角色.分析了AppWidgetProvider如何被AppWidget系统所识别:AppWidgetProvider何时/如何通过RemoteViews提供并更新数据:如何响应通过RemoteViews提供的PendingIntent的按钮点击操作.…
Apache的Access.log分析总结 #查看80端口的tcp连接  #netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l  1  #当前WEB服务器中联接次数最多的ip地址:  #netstat -ntu |awk '{print $5}' |sort | uniq -c| sort -n -r  231 ::ffff:127.0.0.1:8095  23 ::ffff:192.168.50.201:5…
通过前面的两篇文章<Appium Android Bootstrap源码分析之控件AndroidElement>和<Appium Android Bootstrap源码分析之命令解析执行>我们了解到了Appium从pc端发送过来的命令是如何定位到命令相关的控件以及如何解析执行该命令.那么我们剩下的问题就是bootstrap是怎么启动运行的,我们会通过本篇文章的分析来阐述这个问题,以及把之前学习的相关的类给串起来看它们是怎么互动的. 1.启动方式 Bootstrap的启动是由Appi…
通过上一篇文章<Appium Android Bootstrap源码分析之控件AndroidElement>我们知道了Appium从pc端发送过来的命令如果是控件相关的话,最终目标控件在bootstrap中是以AndroidElement对象的方式呈现出来的,并且该控件对象会在AndroidElementHash维护的控件哈希表中保存起来.但是appium触发一个命令除了需要提供是否与控件相关这个信息外,还需要其他的一些信息,比如,这个是什么命令?这个就是我们这篇文章需要讨论的话题了. 下面我…
通过上一篇文章<Appium Android Bootstrap源码分析之简介>我们对bootstrap的定义以及其在appium和uiautomator处于一个什么样的位置有了一个初步的了解,那么按照正常的写书的思路,下一个章节应该就要去看bootstrap是如何建立socket来获取数据然后怎样进 行处理的了.但本人觉得这样子做并不会太好,因为到时整篇文章会变得非常的冗长,因为你在编写的过程中碰到不认识的类又要跳入进去进行说明分析.这里我觉得应该尝试吸取著名的<重构>这本书的建…
上个月,在花了一年半时间之后,写了55篇文章,分析完成了Chromium在Android上的实现,以及Android基于Chromium实现的WebView.学到了很多东西,不过也挺累的,平均不到两个星期一篇文章.本来想休息一段时间后,再继续分析Chromium使用的JS引擎V8.不过某天晚上,躺在床上睡不着,鬼使神差想着去创建一个个人站点,用来连载<Android系统源代码情景分析>一书的内容.       事情是这样的,躺在床上睡不着,就去申请了一个域名,0xcc0xcd.com.域名申请…
Android自动化测试之环境搭建 一.Android-sdk介绍 SDK(Software development kit)软件开发工具包.被软件开发工程师用于为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件的开发工具的集合.Android是google公司推出的手机开发平台.Android-sdk就是指Android专属的软件开发工具包. Android-sdk中我们最常用的就是tools和Platformtools文件夹中的工具. 二.工具安装 1.android-sdk只需…
HandlerThread 简介: 我们知道Thread线程是一次性消费品,当Thread线程执行完一个耗时的任务之后,线程就会被自动销毁了.如果此时我又有一 个耗时任务需要执行,我们不得不重新创建线程去执行该耗时任务.然而,这样就存在一个性能问题:多次创建和销毁线程是很耗 系统资源的.为了解这种问题,我们可以自己构建一个循环线程Looper Thread,当有耗时任务投放到该循环线程中时,线程执行耗 时任务,执行完之后循环线程处于等待状态,直到下一个新的耗时任务被投放进来.这样一来就避免了多次…
使用GPA针对android应用的绘制分析 以前经常用GPA来perf端游的绘制,很多perf工具例如perfhud,pix对于加壳的程序总是束手无策,但是GPA却不受这个限制,可以自动HOOK 3D程序的子进程. 对于Perf手游的分析软件也有很多,例如AdrenoProfiler.SnapdragonProfiler.UnityProfile.Mali_Graphics_Debugger等工具,但都有诸多限制: 1.  还得找个对应芯片的真机,最好还ROOT过 2.  USB连接线不稳,总是…