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 

 (四类log
buffer是main,radio,system,events)

adb wait-for-device logcat  

adb logcat -v time > logcat.txt      //默认是-b
main -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、kernel
log(只有从当前时间起的很少的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 am
force-stop  com.android.camera 关闭

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

pm 命令                                      >>查询设备应用

pm list packages列出所有应用

 

四、aapt (android asset
packaging 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 -v
100         v 显示级别 >>三个v

adb shell monkey -p
com.android.calendar  –v  –v 
–v  100

选项

-s

--throttle
300  延迟300毫秒

--pct-touch
10 触摸事件百分比

--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 shell
monkey -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,忽略许可错误,指定信息级别为Level
2

测试最后把信息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)等待

时间: 2024-10-01 06:49:16

app测试的相关文章

手机APP测试几个要点

移动互联网App测试点包括: 1.安全测试 1)软件权限 -扣费风险:包括发送短信.拨打电话.连接网络等 -隐私泄露风险:包括访问[url=]手机[/url]信息.访问联系人信息等 -新增风险项 2)开发者官方权限列表信息比对分析 2.安装.运行.卸载测试 验证App是否能正确安装.运行.卸载,以及操作过程和操作前后对系统资源的使用情况,主要包括: 1)检测软件是否能正确安装.运行.卸载: 2)安装.卸载.更新错误报告: 3)其他辅助信息: -位置和文件夹是否合理: -组件是否正确注册或删除:

APP测试走过的那些坑

我现在的工作有一大部分也是app测试,虽然自己是app开发出身,但是在测试上还是跌入了很多大坑,毕竟二者还是有很大不同,所处的角度也是不一样的.而开发转测试中,我认为较难的也是一个角度的转换,以一个开发者的角度去测试,往往会忽略很多问题. 在记录app测试走过的那些坑之前,先总结下app测试的工作主要有哪些. 1.功能测试,无论是什么软件产品,必不可少的就是功能测试.我们需要测试这款app产品的功能是否完善,是否符合客户需求,是否符合用户正常体验.而功能测试最重要的一点也是测试案例的设计,这个抽

高新诚聘JAVA /.NET/APP测试/PHP开发

Java开发 1.3年以上JAVA软件开发相关工作经验 2. 熟悉J2EE架构,并熟练掌握Java编程语言 3. 熟悉Oracle数据库,熟练掌握数据库编程技术 4. 精通Spring/Hibernate应用框架 5.富有责任心,良好的沟通能力及团队合作精神 6.熟悉ZK框架使用优先 .net 中高级.Net(要求BS) 1. 工作仔细踏实,具备很强的工作主动性和团队合作的意识. 2. 良好的沟通能力.学习能力.独立解决问题的能力. 3. 具有4年以上.NET及数据集成方面的开发经验. 6. 熟

web测试与app测试的区别

看过了千里大腿的blog,再加上最近也有一些同学问我web与app测试的区别.所以在这里也献丑,写一篇随笔.希望对大家有所帮助. 笔者做了快三年的测试了.大部分时间都在做app的测试,web测试也做了半年左右.其实我觉得这两者并没有什么大的区别. 仅仅从功能测试的层面上来讲的话,在流程和功能测试上是没有区别的.那么区别在哪里呢? 我个人觉得就是由于载体不一样,所以系统测试和一些细节可能会不一样. 那么我们就要先来了解,web和app的区别. web项目,一般都是b/s架构,基于浏览器的,而app

APP测试功能点总结

1.功能性测试:   ——根据产品需求文档编写测试用例. ——软件设计文档编写用例. 注意:就是根据产品需求文档编写测试用例而进行测试. 2.兼容性测试:   ——android版本的兼容性 ——手机分辨率兼容性 ——网络的兼容性:2G\3G\4G\WIFI,弱网下.断网时 ——app跨版本的兼容性 1.适配性测试: 1>.手机不同分辨率支持:客户端支持的分辨率等 2>.手机不同版本的支持:2.34.04.4等:在测试计划中:需要安排单独的时间用于android不同系统的兼容性测试,包括2.0

【转】移动App测试中的最佳做法

一说起软件测试,测试员想到肯定是去检查文件,功能,API,性能并确定软件是否安全,以及关于软件特定部分的其他事项.但是对于移动测试,测试员不得不基于用户移动使用模式考虑移动相关的功能. 本文是基于我的工作经验而写的.作为一名敏捷软件开发团队的软件质量保证经理,我一心投入iPhone,Android,WindowsPhone7的移动apps和移动webapps.在XING移动团队的日常工作以及与其他移动测试专家交流的过程中,我深刻了解了移动测试工作的困难.渐渐地,我明确了什么是帮助改进同事们和我的

黑盒测试之从系统测试到app测试

从8月15-至今,由系统测试转向app测试已有4月,怕忘记了短暂的系统测试所得,在此对比下二者的异同 一.侧重点不同 系统测试:1.系统内置app功能稳定可用,不出现闪退等恶劣现象2.系统稳定,不出现黑屏.死机.卡顿现象,使用流畅3.响应时间.功耗满足要求4.开机启动时间5.系统自带设置项功能正常可用,测试时要注意设置项与内置app等功能不冲突6.可正常开关机,测试时要考虑异常断电,关机重启,锁屏重启等现象7.系统需要做性能测试,之前经常用安兔兔等软件做性能测试8.简单的压力测试(以点击次数为准

APP测试流程

1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先向主管确认项目排期. 1.3测试资源 测试任务开始前,检查各项测试资源. --产品功能需求文档: --产品原型图: --产品效果图: --行为统计分析定义文档: --测试设备(ios3.1.3-ios5.0.1:Android1.6-Android4.0:Winphone7.1及以上:Symbian 

谈谈对移动app测试的了解

谈谈对移动app测试的了解 由于在做一个移动互联网app,虽然负责的是服务端,而公司有没有专业专门的测试人员(也许很多公司这种情况),现在面临如何测试产品测试的问题.由于之前对这块可以说完全不大了解,原来做开发的时候也只做过单元测试,于是临时抱佛脚到处找资料以便确定一种现阶段可行的测试方案. App最终交付的是用户,所以测试的目的让用户获得最好的体验.从功能上来说满足客户的使用需求,从操作上来说简单易用.用起来赏心悦目,这样你的app才会有市场,有生命力. 目前主流的app主要是基于androi

关于App测试的重点

近年来,手机app也时持续大热.基于安卓和ios的手机app,更是受到众多投资者的青睐.而手机软件测试行业也是如此. 现在听的最多的是web测试和App测试,但实际上两者本质上没有什么区别,性质都一样! 手机上的app分为基于HTML5的app(类似于pc上的b/S应用)和本地app(类似于C/S结构).因此测试上是完全结合web的b/s和c/s测试经验. 二者在实际的测试工作中,很大的差异来自于考虑的兼容性因素. 1.web测试需要考虑自身功能的实现与浏览器的兼用性: 2.终端App测试除了要