1.关于android系统的基本概念
1.1权限:
每个应用都是不同的用户,每个应用都有自己单独的虚拟机,代码运行时是隔离的,默认情况下每个应用都运行在单独的进程中,应用不能访问其无权访问的功能;
在android系统中可以用ps命令查看分配的用户id;应用的数据文件存放在data/data;
通过修改xml文件分配相同id的方法,可以实现不同应用运行在相同进程中;
1.2 应用的组成和激活
a.活动activity界面中每个页面都是一个活动,activity通过intend进行通信,其上为界面控制,用于监听并对用户的事件作出响应
b.后台服务service后台没有用户界面,用于处理长时间任务,可以用来开发如监控类程序,无需交互的程序
c.内容供应组件content provider管理应用的可共享数据 ,如查询联系人信息
d.广播接收broadcast receivers响应系统层面的广播通知,如低电,可以通过通知栏显示消息
1.3清单文件
系统启动应用组件之前要读取清单文件androidmanifest.xml来获知应用中是否包含该组件;
清单文件中包括:
应用需要申请的权限
应用要求的最低版本
会用到的软件硬件功能
会用到的android非标准库
1.4 android应用单ui线程
虽然支持多线程编程,但只有ui线程也就是主线程可以操作控件;
2.1 adb命令
Adb shell进入shell命令
Adb devices列出连接设备
df显示系统中各个分区情况
dumpsys meminfo查看内存使用情况
dumpsys cpuinfo查看cpu使用情况
dumpsys battery电池情况
dumpsys telephony.registry电话使用情况
sumpsys wifi无线使用情况
Adb kill-serveradb start-server重启服务
Adb install路径包名
logcat抓包logcat –time >d:\1.txt
过滤日志:v最低级别d调试级别i信息级别w警告级别
E错误级别f严重错误级别
例如:adb –e logcat *:W过滤出警告级别及任意标签的log
monkey命令
例如:monkey –p包名–v –v 100
su查看
ls/data/app查看安装的包名
ls data/data
locgcat | busybox grep START
2.2 稳定性测试monkey命令
1).标准的monkey命令
[adb shell] monkey [options] ,例如:
adb shell monkey -v 500 --------产生500次随机事件,作用在系统中所有activity(其实也不是所有的activity,而是包含Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY的activity)。
上面只是一个简单的例子,实际情况中通常会有很多的options选项
2).四大类——常用选项、事件选项、约束选项、调试选项
1:常用选项
--help:打印帮助信息
-v:指定打印信息的详细级别,一个-v增加一个级别,默认级别为0。
2:事件选项
-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如:-s 200
--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100
--pct-touch:指定触摸事件的百分比,如:--pct-touch 5%,相关的还有以下option:
--pct-motion (滑动事件)、--pct-trackball (轨迹球事件)、--pct-nav (导航事件up/down/left/right)、--pct-majornav (主要导航事件back key、menu key)、--pct-syskeys (系统按键事件Home、Back、startCall、endCall、volumeControl)、--pct-appswitch (activity之间的切换)、--pct-anyevent (任意事件)
3:约束选项
-p:指定有效的package(如不指定,则对系统中所有package有效),一个-p对应一个有效package,如:-p com.ckt -p com.ckt.asura;
-c:activity必须至少包含一个指定的category,才能被启动,否则启动不了;
4:调试选项
--dbg-no-events:初始化启动的activity,但是不产生任何事件。
--hprof:指定该项后在事件序列发送前后会立即生成分析报告——一般建议指定该项。
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--kill-process-after-error:发生错误后直接杀掉进程
--monitor-native-crashes:跟踪本地方法的崩溃问题
--wait-dbg:知道连接了调试器才执行monkey测试。
4.一个简单的monkey命令:
adb shell monkey -p com.xy.android.junit -s500 -v 10000
但是,工作中为了保证测试数量的完整进行,我们一般不会在发生错误时立刻退出压力测试。monkey测试命令如下
代码如下:
adb shell monkey -p com.xy.android.junit -s500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000> E:\monkey_log\java_monkey_log.txt
六、monkey作用的包:com.ckt.android.junit
产生时间序列的种子值:500
忽略程序崩溃、忽略超时、监视本地程序崩溃、详细信息级别为2,产生10000个事件。
1.monkey
runner接收明确的测试脚本,使用python编写,有明确的条件判断语句
录制回放:(国产手机可能不支持)
cd到monkeyrunner.bat的目录里,运行monkeyrunner ..\..\monkey_recorder.py(绝对路径)点击屏幕即会生成坐标,还有按button,输入文本,滑动等事件,录制完毕后选择Export Actions就将脚本保存下来了,保存的时候不需要后缀名。(也可加后缀名:*.mr)回放:
cd到monkeyrunner.bat的目录里,运行monkeyrunner ..\..\monkey_playback.py ..\..\第5步中保存的文件名(均为绝对路径)
录制文件mr后缀,必须放在与monkeyrunner.bat和monkey_recorder.py,monkey_palyback.py文件夹同样路径