首页 > 代码库 > app测试

app测试

App测试

                                                                                             2016/9/14整理

一、环境搭建

1、安装jdk(java development kit)版本:jdk_8u91_windows_i586_8.0.910.15

——新建系统变量:

名称:JAVA_HOME

变量值:C:\Program Files\Java\jdk1.7.0_79

——添加到path:

变量值: ; C:\Program Files\Java\jre7\bin

2、安装 android sdk 模拟工具包

——添加到path:

E:\Setup\android-sdk\platform-tools

E:\Setup\android-sdk\tools

——新建系统变量:

名称: ANDROID_SDK_HOME

变量值: e:\setup\android-sdk

3、安装genymotion 模拟器 版本:genymotion-2.7.1

1帐号注册:http://www.genymotion.net

fuyongming,密码:tenson888

2设置ADB,否则ADB无法使用。如下图,设置路径为:

 C:\Users\sks\AppData\Local\Android\android-sdk

3加一个模拟器设备

       拷贝文件Genymobile.rar到用户目录

       C:\Users\Administrator\AppData\Local,

       并在这个目录下解压文件Genymobile.rar,

       点击Add出现如图界面,从Available virtual

       devices中选设备Custom Phone-4.1.1-API16

       进行安装,安装需要网络稳定。

4如果运行模拟器出现右图的错误,需要修改windows

      主题文件文件。如果是32位的系统,需要把文件

      themeservice.dll.backup、themeui.dll.backup、

      uxtheme.dll.backup拷贝到windows的目录

      C:\Windows\System32下,并运行

      UniversalThemePatcher-x86,如右下图,全部选

      恢复来还原这3个文件,变成未破解状态。

      然后重新start模拟器设备。

 

4、安装virtualbox虚拟机 版本:VirtualBox-4.3.12-93733-Win

5、无法安装app

需要genymotion-arm-translation_v1.1

 

 

 

二、adb(android debug bridge)

介绍adb

当启动一个adb客户端时,客户端首先确认是否有一个adb服务器进程在运行。如果没有,则启动服务器进程。当adb服务器运行,adb服务器就会绑定本地的TCP端口5037,并监听adb客户端发来的命令。

接着服务器将所有运行中的模拟器或设备实例建立连接。它会扫描所有5554到5584之间的端口来定位所有模拟器或设备。一旦服务器与所有模拟器实例建立连接,就可以使用adb命令控制和访问该设备。

 

adb devices                                >>查看当前的设备

adb -s                                           >>设备名 命令>>指定设备执行命令

adb install 路径                        >>为设备安装应用

adb uninstall                               >>安装包名>>卸载应用

adb pull   设备目录 本地目录>>从设备下载文件

adb push 本地目录 设备目录>>从本地上传文件到设备

adb help                                        >> 帮助信息

adb version                                 >>查看adb版本号

adb logcat |findstr ""

adb remount                                >>重新挂载文件系统

adb get-serialno                        >>设备序列号

adb get-state                              >>设备状态 device连接 offline无响应

adb logcat                                    >>查看日志

adb start-server                         >>开启adb进程

adb kill-server                              >>关闭adb进程

adb bugreport                             >>启动各种信息

         memor info:系统内存使用状态

         cpu info:cpu使用状态

         procrank:应用使用内存状况

         virtual memory stats:虚拟内存分配

         vmalloc info:虚拟内存使用

         process:进程状态信息

         system log:系统当前状态

         event log:时间日志

         radio log:网络相关日志

         system properties:系统属性

adb get-serialno                        >>获取设备序列号

adb get-state                              >>查看模拟器设备状态
         device:设备连接

         offline:没有连接

抓取各种log

    1、logcat 

 (四类logbuffer是main,radio,system,events)

adb wait-for-device logcat  

adb logcat -v time > logcat.txt      //默认是-bmain -b system

adb logcat -v time -b main       //main log

adb logcat -v time -b radio       //radio log

adb logcat -v time -b system       //system log

adb shell dmesg                      //kernel log

adb logcat -v time -b events

2、anr log

adb pull /data/anr

3、tombstone log

adb pull /data/tombstones

4、core log

adb pull  /data/log/core

5、开机log

adb shell dmesg > dmesg.txt

6、logcatch

adb pull /data/logcatch

7、qxdm log

adb pull /sdcard/logs

8、 hprof log

在分析app时,我们通常需要分析app 的java heap 资料,如分析java memory leak, 追查heap
中相关变量情况等。
在android 中抓取app 的hprof 操作方式有下面几种:
第一种方式: 使用am 命令
adb shell am dumpheap {Process} file
如 adb shell am dumpheap com.android.phone/data/anr/phone.hprof
adb pull /data/anr/phone.hprof
第二种方式: 使用DDMS 命令
在DDMS 中选择对应的process, 然后在Devices 按钮栏中选择Dump Hprof file, 保存即可
第三种方式: 通过代码的方式
   在android.os.Debug 这个class 中有定义相关的抓取hprof 的method.
如: public static void dumpHprofData(String fileName)throws IOException;
这样即可在代码中直接将这个process 的hprof 保存到相对应的文件中,注意这个只能抓取当时的
process.
如果想抓其他的process 的hprof, 那么就必须通过AMS 帮忙了。
可以先获取IActivityManager 接口,然后调用它的dumpheap方法。具体的代码,大家可以参考
frameworks/base/cmds/am/src/com/android/commands/am/am.java 中的调用代码
抓取回hprof 后,就可以用hprof-conv 命令将DVM 格式的hprof 转换成标准的java命令的hprof
   hprof-conv in.hprof out.hprof
然后使用如MAT 之类的工具进行具体的分析

9、bugreport

adb bugreport >bugreport.txt

10、kernellog(只有从当前时间起的很少的log)

cat proc/kmsg >kmsg.txt

11、其他

adb shell dumpstate//各类信息,比如进程信息,内存信息,进程是否异常,kernnel的log等
adb shell dumpcrash
adb shell dumpsys  //查询所有service的状态

 

 

三、adb shell

adb shell                             >>进入设备系统

exit                                        >>退出设备系统

adb shell 命令

dumpsys battery               >> 电池情况

ac powered                       >>电源供电

usb powered                     >>usb是否供电

health电池状态:0正常1未知2良好3过热4损坏5过压

status电量等级:5为满

present当前有电池:true

leval剩余电量100%:100

voltage:电压

temperature温度:

technology电池技术:li-ion锂电池

dumpsys wifi |more                   >>wifi信息

wifi is enabled:disabled,disabling正在关闭,enabled,enabling正在打开,unknown

internal state:

dumpsys cpuinfo                         >>cpu占用信息

dumpsys power                          >>电源管理信息

dumpsys poewr|find"mScreenOffTimeoutSetting" 屏幕关闭时间

dumpsys telephony.registry    >>电话相关信息

         mcallstate呼叫状态:0待机1来电未接2电话占线

         mcallincomingnumber:最近一次来电

         mservicestate网络服务状态:0正常1没有连接2紧急拨号3电话关机

         msignalstrength信号强度:

         mmessagewaiting是否在等待无线信号:

         mcallforwarding:是否启用呼叫转移

         mdataconnectionpossible:是否有数据连接

         mdataconnectionapn:apn名字

         mcelllocation基站

设备信息查询

cat /proc/cpuinfo                      >>cpu设备信息

cat /proc/meninfo                    >>内存设备信息

memtotal:总共运行内存

menfree:剩余内存

cat /prociomem                          >>查看i/o内存分区

cat /system/build.prop | findstr"ro.product.model" >>手机型号

dumpsys window                      >>窗口管理信息

dumpsys window |findstr "Display" 当前分辨率

getprop ro.build.version.release>>手机系统版本

cat /proc/version                        >>手机内核版本

getprop gsm.operator.alpha >>运营商信息

getprop gsm.network.type  >>手机网络类型

dumpsys iphonesubinfo | findstr"Device ID">>手机串号信息

df                                                   >>手机系统各个分区信息

du                                                   >>手机所有目录情况

dmesg                                           >>手机内核日志信息

dumpstate                                   >>系统当前状态

dumpsys meninfo                       >>应用占内存状况

dumpsys cpuinfo                         >>动态占用率

adb shell top -m 10 -n  5  -s  cpu

-m(显示进程数量) 10

-n(刷新次数) 5 cpu     

-s: 按什么排序

-d: 刷新时间间隔,默认为5秒。

cat /proc/net/xt_qtaguid/stats>>手机流量

         第四列:uid 应用运行的用户id

         第六列:接受数据量

         第八列:发送数据量

am 命令                                      >>模拟系统操作

adb shell am start -W com.android.camera 启动相机 –W 等待完成启动

adb shell amforce-stop  com.android.camera 关闭

am start -W com.android.camera>>启动相机

pm 命令                                      >>查询设备应用

pm list packages列出所有应用

 

四、aapt (android assetpackaging tool) 应用资源打包工具

aapt list 包                        >>列出包中文件

aapt d values 包               >>查看包基本信息

aapt d badging 包路径|findstr"launchable-activity"   查找应用启动窗口

aapt d badging gewara_v6.6.0.apk | findstr"package" 查找包名

values=badging(基本信息)

permissions(权限)

configuratioins(配置信息)

resources(应用里面的资源)

 

五、monkey稳定压力测试工具

adb shell ls /data/data                                >>应用名查询

adb shell monkey -p 应用名 100 >>指定应用实行100次测试

adb sehll monkey 100                                >>不指定应用实行100次测试

adb shell monkey -p com.android.calendar -v100         v 显示级别 >>三个v

adb shell monkey -pcom.android.calendar  –v  –v –v  100

选项

         -s

         --throttle300  延迟300毫秒

         --pct-touch10 触摸事件百分比

         --pct-motion 10 设置动作事件百分比

         --pct-trackball轨迹事件百分比

         --pct-nav基本导航事件百分比

         --pct-majornav主导航事件百分比

         --pct-syskeys系统按键百分比

         --pct-appswitch应用活动切换百分比

         --pct-rotation转屏工作百分比

         --pct-anyevent其他类型事件百分比

         --ignore-crashes忽略应用崩溃

         --ignore-timeouts忽略无响应,发生anr时

         --ignore-security-exceptions忽略许可错误

         --kill-process-after-error发生错误时保持状态

         --monitor-native-crashes监视报告应用崩溃时代码

         --pkg-blacklist-file   PACKAGE_BLACKLIST_FILE 设置黑名单

         --pkg-whitelist-file  PACKAGE_WHITELIST_FILE白名单

例子:

adb shellmonkey -s 100 --throttle 500 -p com.android.calendar  --pct-nav 40 --ignore-crashes  --ignore-timeouts   -v  -v  -v 600  > monkey_calendar.txt

说明:测试日历应用,指定伪随机种子数为100,设置每个事件间隔时间为0.5秒。设置up/down/left/right导航百分比为40%,忽略程序崩溃,忽略程序发生ANR,忽略许可错误,指定信息级别为Level2

测试最后把信息Log保存在文件monkey_calendar.txt里面。

六、测试标准

1). 无重启、冻屏、系统崩溃等严重问题

2). 应用FC(崩溃闪退)及ANR(无响应)次数少于3次

3). 相关应用FC及ANR的应用数量少于1次

4). 先在模拟器上测试,最后需要在3~5台真机上测试。

 

monkey自动化测试脚本

DispatchPointer(0,0,0,505,802,0,0,0,0,0,0,0)按下

DispatchPointer(0,0,1,505,802,0,0,0,0,0,0,0)抬起

DispatchTrackball(0,0,0,500,700,0,0,0,0,0,0,0)按下

DispatchTrackball(0,0,2,500,800,0,0,0,0,0,0,0)滑动

DispatchPress(4)

LaunchActivity(cn.com.open.mooc,cn.com.open.mooc.ui.loading.MCLoadingActivity)启动

DispatchString(1234qwer)输入

UserWait(700)等待

 

app测试