压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽。要减少用于测试的资源,可运行一个称为压力器 (stressor) 的工具。
Monkey是Android SDK提供的一个命令行工具(Android平台下一个命令行自动化测试工具),可以运行在模拟器里或实际设备中。 它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey包括许多选项,它们大致分为四大类:
在Monkey运行的时候,它生成事件,并把它们发给系统。同时,Monkey还对测试中的系统进行监测,对下列三种情况进行特殊处理(自动停止):
按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件 。
这样就可以通过在CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试了
adb的全称为Android Debug Bridge,就是起到调试桥的作用。说白了就是debug工具。
adb是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的android设备(如G1手机). 它的主要功能有:
ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备.
压力测试结果
1.CRASH:崩溃,应用程序在使用过程中,非正常退出
2.ANR(Application Not Responding):等待时间过长
进入SDK所在的目录,找到SDK,将…\sdk\platform-tools;…\sdk\tools添加到变量值中,再把变量加入path中,这样就可以使用ADB命令了。
Step 1: 在手机开发者选项中,将USB调试连上
Step 2: 确认手机和电脑已经成功连接 adb devices
Step 3: 安装测试APP adb install package.apk
Step 4: 发送压力测试指令 adb shell monkey 1000(具体事件数)
Step 5: 获取APP包名 adb logcat | findstr start
Step 6: adb shell monkey-p package(包名) 1000(具体事件数)
1) 参数: -p
参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。
adb shell
cd data/data
ls
2) 参数: –throttle <毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;
示例:adb shell monkey -p com.ht.weather –throttle 3000 100
3)参数: -s
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同。
示例:
Monkey 测试1:adb shell monkey -p com.ht.weather –s 10 100
Monkey 测试2:adb shell monkey -p com.ht.weather –s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的。
4)事件: –pct- + 事件类别 + 事件类别百分比
用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)
–pct-touch +百分比
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)
adb shell monkey -p com.ht.weather --pct-touch 10 1000
–pct-motion + 百分比
调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)
adb shell monkey -p com.ht.weather --pct-motion 20 1000
–pct-trackball + 百分比
调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)
adb shell monkey -p com.ht.weather --pct-trackball 30 1000
–pct-nav + 百分比
调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)
adb shell monkey -p com.ht.weather --pct-nav 40 1000
–pct-majornav + 百分比
调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
adb shell monkey -p com.ht.weather --pct-majornav 50 1000
–pct-syskeys +百分比
调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)
adb shell monkey -p com.ht.weather --pct-syskeys 60 1000
–pct-appswitch + 百分比
调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法
adb shell monkey -p com.ht.weather --pct-appswitch 70 1000
–pct-anyevent + 百分比
调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等
adb shell monkey -p com.ht.weather --pct-anyevent 100 1000
指定多个类型事件的百分比:
adb shell monkey -p com.ht.weather --pct-anyevent 50 --pct-appswitch 50 1000
5) 参数: –ignore-crashes
用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
示例1:adb shell monkey -p com.ht.weather --ignore-crashes 1000
测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;
示例2:adb shell monkey -p com.ht.eather 1000
测试过程中,如果Weather程序崩溃,Monkey将会停止运行。
6) 参数: –ignore-timeouts
用于指定当应用程序发生ANR(Application No Responding)错误时,Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
adb shell monkey -f <Scriptfile> <event-count>
ScriptFile是编写的脚本文件。Event-Count是脚本执行的次数。
1、轨迹球事件。
DispatchTrackball(long downtime, long eventide, int action, float x, float y, float pressure, float size, int metastate, float xprecision, float yprecision, int device, int edgeflags)
2.点击事件
DispatchPointer(long downtime, long eventide, int action, float x, float y, float pressure, float size, int metastate, float xprecision, float yprecision, int device, int edgeflags)
3.输入字符串事件
DispatchString(String text)
4.启动应用
LaunchActivity(package, Activity)
5.等待事件
UserWait(1000)
6.按键事件
DispatchPress(int keycode) #keycode 66 回车键
typ=user
count=10
speed=1.0
start data >>
LaunchActivity(com.UCMobile,com.UCMobile.MainActivity)
UserWait(2000)
DispatchPointer(10,10,0,280,740,1,1,-1,1,1,0,0)
DispatchPointer(10,10,1,280,740,1,1,-1,1,1,0,0)
UserWait(2000)
DispatchPointer(10,10,0,280,700,1,1,-1,1,1,0,0)
DispatchPointer(10,10,1,280,700,1,1,-1,1,1,0,0)
DispatchString(test)
UserWait(1000)
DispatchPress(66)
UserWait(1000)
DispatchPointer(10,10,0,880,600,1,1,-1,1,1,0,0)
DispatchPointer(10,10,1,880,600,1,1,-1,1,1,0,0)
UserWait(6000)
在SDK目录下的tools有工具uiautomatorviewer.bat可以查看手机页面的分布情况。UI Automator Viewer。在手机启动app需在Androidmanifest.xml中设置exported=”true”。可被外界启动。
adb shell
cd ../../
monkey -f xx.script
adb shell monkey -f ../../xx.script count>
两种都可执行.script文件
1.查看设备
adb devices
这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示。
2.安装软件
adb install <apk文件路径>
这个命令将指定的apk文件安装到设备上。
3.卸载软件
adb uninstall <软件名>
adb uninstall -k <软件名>
如果加 -k 参数,为卸载软件但是保留配置和缓存文件。
4.登录设备shell
adb shell
adb shell <command命令>
这个命令将登录设备的shell.
后面加command命令将是直接运行设备命令, 相当于执行远程命令。
5.从电脑上发送文件到设备
adb push <本地路径> <远程路径>
用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)。
6.从设备上下载文件到电脑
adb pull <远程路径> <本地路径>
用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑。
7.显示帮助信息
adb help
这个命令将显示帮助信息。
8.在命令行中查看LOG信息
adb logcat -s 标签名
9.启动Activity
adb shell am start -n 包名/包名 + 类名
10.列出手机装的所有app的包名
adb shell pm list packages
11.列出系统应用的所有包名
adb shell pm list packages -s
12.列出除了系统应用的第三方应用包名
adb shell pm list packages -3
13.使用 findstr 来过滤
adb shell pm list packages | findstr qq
14.清除应用数据与缓存
有些时候我们测试需要清除数据与缓存,则需要用到如下命令:
adb shell pm clear
15.强制停止应用
adb shell am force-stop <packagename>
16.查看日志
adb logcat
17.重启
adb reboot
18.获取序列号
adb get-serialno
19.获取 MAC 地址
adb shell cat /sys/class/net/wlan0/address
20.查看设备型号
adb shell getprop ro.product.model
21.查看 Android 系统版本
adb shell getprop ro.build.version.release
22.查看屏幕分辨率
adb shell wm size
23.查看屏幕密度
adb shell wm density
结束语:本文仅用来学习记录,参考查阅。