Android 基本测试工具的使用和无线学习介绍

1,日志查看工具

1)DDMS

Android测试中,使用最多的日志查看工具就是DDMS了。

ddms可以从两个地方打开,1,Eclipse的的ddms插件(属于Eclipse 的SDK插件),2在Android SDK安装目录下的tools文件夹下面。

DDMS功能非常齐全,不仅仅可以查看日志,还可以截图,打开文件目录,终止进程等等功能,这里先直说查看日志

看日志就靠这一块了。

日志的过滤等级

Error :error为最严重的错误,如果是抛到虚拟机的系统错误,就可能引起客户端崩溃,比如最为常见的空指针异常。

Warning :警告,一般严重,比如网络异常什么,一般不会有crash,但需要引起注意,过滤warning异常的时候,会同时过滤出error错误。

Info :信息,也就是一些系统的信息,比如页面切换时间,手机信号量等等、过滤info信息同时会过来出warning和error信息

Debug debug信息,系统的一些debug信息,包括所有error,warning和info。

Verbose:详情,包括所有error warning info和debug,还有其他的一些详情

Assert:断言,没见过,可能跟单元测试有关。


日志的显示

一条日志分为7部分

1,level 等级,即上文说的error,warning等,有系统决定,开发打印的日志也可自行决定等级。

2,time时间,日志时间。

3,pid进程ID

4,tid线程ID

5,application应用,有时候会打印出所属的应用名称,如com.taobao.taobao

6,tag标签,开发可以自行设定log的标签,便于过滤,

7,text文本,即日志内容

DDMS的其他日志功能

日志清空,日志保存,日志过滤,日志暂停

日志过滤:

DDMS的详细使用可以参考http://developer.android.com/tools/debugging/ddms.html

中文版

http://wiki.eoeandroid.com/Using_DDMS


2)Logcat命令

一般使用的不多,仅仅在ddms启动不了,或者识别不了手机的时候才会使用。前提条件,安装了Android SDK。

使用方法,直接在命令行下输入adb logcat,如果日志非常多,强烈建议将文件重定向到文件里面。

或者先输入adb shell ,再使用logcat命令,日志多的话,可以加管道操作进行过滤,即logcat|grep XXXX。

具体使用和ddms差不多,不多由于日志很多,用这种方法常年看不过来。日志内容和ddms一致

3)Wmock

如果不需要关注客户端本地日志,只需要看客户端应用层的网络请求的话。

可以之间用wmock来抓取网络中的HTTP请求,具体见

http://m.taobaotest.com/wmock/

不在赘述。

4)Wireshark和tcpdump

如果遇到一些比较难以解决的bug,需要深入TCP请求甚至IP请求,就需要用tcpdump对客户端的进行抓包(如TCP的keepalive包),具体操作如下:

4_1,root手机,手机需要root权限,否则无法使用tcpdump。

4_2,下载tcpdump的Android版本,用push命令将文件推到手机中。不建议推送到SD卡,会有权限问题,可以放到手机的data文件夹下,。

adb push [PCPATH][mobilPATH]

4_3,提升tcpdump的权限。用adb shell进入android bash后,需要手机使用root权限,先提升权限,然后chmod777 tcpdump。

4_4,抓包,启动你要测试的APP后,适当的时间就可以开始抓包可,在tcpdump当前目录下,直接使用tcpdump -p -vv -s 0 �Cw[pcapfilePath] 就可以实现抓包,使用ctrl + C停止。

4_5,导出.pcap文件。退出adb bash , 使用pull命令将.pcap文件导出到PC(adb pull[mobilPath] [PCPATH])

4_6,使用wireshark将日志文件打开,即可以看到所抓到的包了。

5)使用fiddler软件抓取网络请求,具体用法和wmock类似,只是fiddler使用自己的机器作为代理服务器,而wmock使用专用的代理服务器。


2,性能工具

1)monkey工具

Monkey可以运行在模拟器或真实设备上,并产生一系列随机的用户事件(点击、触摸、手势以及系统级别的事件)。

Monkey一般用来进行压力测试或稳定性测试。

Monkey通过 adb shell monkey [options] 命令来启动

常用的参数包括

�Cp [package name]:指定测试包,参数即为包名,如主客户端就是com.taobao.taobao

�Cs [seed]:指定事件随机参数,参数即为随机数的种子值。如果这个参数相同,理论上能够复现所有事件。

- v[number] number:制定发送伪随机事件的次数。注意,这个随机事件并非一个时间点只发送一个随机时间,有可能同时发送几个事件。

--throttle [milliseconds]:每次发送事件的时间间隔,单位为毫秒,测试的时候常常设定为1000~500之间。如果不设置,点击间隔会非常短。

下图就是客户端monkey的一些点击日志,如果需要系统输出的日志。请使用logcat命令收集,并进行重定向。

具体参数情况,请查看帮助文档http://developer.android.com/tools/help/monkey.html

缺点:遍历深度优先,部分页面(需要登录的页面无法遍历到)



性能监测工具

2_1,top工具

使用adb shell进入Android bash下面,然后,和linux下的top一样。

不懂的话,top �Ch。具体这里不在细说。

2_2,android的dumpsys命令

通过dumpsys命令也可以获取手机中一些APK包的系统信息,可以直接通过cmd命令行,输入adb shell dumpsys [options]就可以了

参数包括:

2_3,ddms的系统检测

用ddms也可以用来检测性能,通过选项device和进程,就可以查到app的内存消耗,堆栈消耗,CPU消耗,网络消耗等等信息,以及控制模拟器(只有模拟器,真机不行)。

下图为网络消耗

下图为内存消耗

具体使用,还是看http://developer.android.com/tools/debugging/ddms.html


3,文件查看工具

1)手机软件

各种手机助手,比如91手机助手,豌豆荚等等,都有很好的查看手机文件系统的工具。但是这些手机助手只能看SD卡里面的。只能应付日常最基本的使用。

2)DDMS

能够查看Android文件系统的大多数目录,但部分没有相关权限的目录(貌似是所有用户的读权限),无法查看。启动方法为,通过device->File Explorer,出现下图页面

优点是ddms可以方便的导入导出数据到这些不需要root权限的目录里面。使用方法:左上角的图标,应该都能看懂吧


3)Adb bash 查看

Adbbash其实可以看成一个阉割版的linux bash系统,用adb shell进入adb bash后其他操作与linux系统基本无差异,但部分命令会无法使用。如下图,感觉一切都非常熟悉吧。

只要你的手机是root过的,OK,畅游手机的系统文件。


4)RE浏览器(rootexplorer)

一句话,神器,但前提是你的手机必须root。在手机上装上RE后,很多操作就可以在手机上以可视化界面完成了,甚至可以增删改系统文件。由于权限很高,务必小心操作。比如说,一些app内部文件,可以直接通过RE浏览器来查看并修改,确定是文件的哪个值发生了错误引起客户端的bug。


最后,针对这一块注释一下一些常用的文件存放地址

自己安装的APK存放地址:/data/app下,

淘宝客户端临时文件(缓存,如图片等):/sdcard/taobao,这个各个客户端不一样,有没有SD卡也有影响

APP的私有文件(即需要到系统中清除缓存的APP):/data/data/<packageName>下面

APP的ANR日志 :/data/anr 下面

系统预装的APP:/system/app下面(注意,慎删,误删挂了什么别怪我没提醒)一般只有预装包和我们测试的APP出现了冲突的时候,才回去删除

Adb命令: /system/bin 下面

Android系统源代码目录 /system/framework 下面

系统配置文件:/etc 下面

4,打包及签名

打包过程介绍(为了解决打包过程中的问题而介绍一下)

1,生成R文件,使用aapt.exe程序生成R.java文件,如果Eclipse打开了build AutoMatically,就会在打开工程的时候完成。

2,生成aidl文件,使用aidl.exe程序,把.aidl文件转化为.java文件。这步如果打开Eclipse的build AutoMatically的功能的话,也会自动生成

3,将.java文件生成.class文件,使用javac将.Java变成.class。

4,将class文件打包生成class.dex文件,使用dx脚本,class文件打包生成class.dex文件

5,打包资源文件,包括所有的res,asserts, Androidmanifest.xml等等文件,使用aapt.exe文件打包

6,生成未签名的APK安装文件,使用apkbuild打包成未签名的apk包

7,签名,使用jarSigner.jar进行签名。

8,(优化对齐)


这边注意两点:

1,如果打包需要混淆,需要在第3和第4步之间将className进行替换,达到混淆的效果。

2,用Eclipse run出来的包默认保存在工程的bin目录下面,这个包默认使用的是debug的签名,如果覆盖安装我们自己签名的APK包,会造成签名不一致的冲突。

打包工具:

ANT

Maven

5,自动化测试框架

Sword

6,内存的查看

内存的查看工具使用的是Eclipse 下面的mat插件

内存文件查看的过程:

1,导出内存文件

从ddms上面,选择需要查看内存的进程,然后,把hprof文件dump下来,dump成功后,将生成一个命名为<app包名>.hprof的文件

2,hprof文件进行转换。

由于android的hprof文件mat文件无法打开,需要使用androidSDK的自带工具进行转码操作。

具体命令为hprof-conv [path] [path]

3,在mat中打开文件

出现上图后,就可以根据内存地址,找到泄漏的点,或者客户端内非常消耗的内存模块了

7,其他常用工具

1,Host修改

在日常测试过程中,经常需要修改手机的host,使其能够访问特定的机器。Android的host文件和linux系统一样,处在/etc/hosts文件当中。但文件需要root权限才能够查看,且文件是只读的,即使有root权限,你也无法覆盖。目前的修改办法是在手机上装上RE浏览器,然后强制修改host文件,保存退出后生效。

2,强制Kill进程

使用DDMS的进程终止工具

选择一个进程(要求APP是debug包,否则找不到这个进程),这个按钮会变成红色,点击就可以kill进程了。

3,内存回收(GC)

强制回收内存,还是靠DDMS,如下图按钮。

内存“Cause GC”按钮,强制触发GC,之后就可以不用按了,他会自动触发内存的回收,如果随着APP的使用dataObject持续出现变大的情况,说明APP有内存泄漏的情况(现在的客户端也会报警)。

如果需要导出需要通过ddms 将heap dump生成出来,用来分析

4,网络延时和降低带宽

网络延时可以通过wmock来实现,当然,更加简单的方法就是通过更换sim卡来实现,用2G网络就可以达到网络延时提高和网络带宽的目的两个目的。


5,APK打包解包命令

aapt 命令 :

aapt dump xmltree [apk path] AndroidManifest.xml 或者aapt dbadging 命令,可以检查APK包中的信息


更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  6. Android(安卓)so lib库远程http下载和动态注册
  7. android6.0M系统在代码中实现请求以及检查权限。
  8. Android(安卓)给应用定制皮肤-------值得一看
  9. 什么是Android(安卓)系统。

随机推荐

  1. Android培训班(46)
  2. Android如何通过https协议下载自己的http
  3. Android:手机扫描局域网所有ip,并进行sock
  4. Android中使用Gson解析JSON数据
  5. Cocos2d-x for android 使用Box2d报错解
  6. Android: 绘制的文本如何排版
  7. Android(安卓)ImageView图片自适应
  8. Android(安卓)Studio主要目录及文件简介
  9. 在Android模拟机上跑javaeye android 客
  10. android开发环境