adb性能测试_压力稳定性

一、APP压力稳定性测试
1.android系统自带monkey程序,模拟用户触摸屏幕,滑动track ball,按键等操作莱多设备上的程序进行压力测试,检验程序多久的时间会发生异常
2.adb (android debug bridge)用来连接安卓手机和PC端的桥梁,通过adb服务,在PC端命令行界面面对手机或者模拟器进行全面的操作
用手机来操作的话,要用一个数据线连接,打开usb的开发者模式(USB调试),确认连接成功后在cmd命令行输入命令
3.monkey什么时候用?等而产品稳定了,没有特别多的bug时候,一般用monkey去测试待测试应用的稳定性,健壮性,(是否会发生闪退,崩溃)手机出厂前的整机测试
在这里插入图片描述
adb device 检测连接到电脑的安卓设备,这个是我们后期经常会用到

adb pull <手机全路径><本机路径>从手机中拉取信息放到本地电脑上

adb push<本机文件全路径><手机路径>从本地推动信息到手机上

adb start-server 当adb出现问题或者adb启动不起来的时候,先kill掉进程然后adb kill-sever 然后输入adb start-server

adb shell 登录设备shell(命令行的人机画面)ll ls命令都可以用,进入到linux命令环境,相当于执行远程命令

ctrl+c回到命令行界面

获取当前正在使用的app包名 adb shell dumpsys activity |find “mFocuseActivity”

monkey常用命令
monkey命令格式
adb shell monkey{+命令参数}次数
adb shell monkey -help/-h

-v 用于指定反馈信息级别,(信息级别就是日志的详细程度)总共分为3个程度

-p +包名 用于约束限制,用此参数指定一个或多个包(package,即app名字)

adb shell monkey -p com.wandoujia.phoenix2 -v -v -v 100
白名单:只运行这个文件里面的包
黑名单:这个文件里的包不运行

如果要运行很多包:
先把很多包名放到一个文件.txt adb push上传到手机上,然后 adb shell monkey -pkg-whitelist-file +安卓手机文件全路径

-s 用于指定伪随机数生成器的seed值,如果seed值相同,则两次Monkey测试所产生的时间序列也相同,用于问题重现

adb shell monkey -s 1505730657339(seed值) -v -v -v 100
throttle <毫秒>用于指定用户操作(即事件)见的时延,单位是毫秒 操作与操作之间的间隔

adb shell monkey -p com.wandoujia.phoenix2 – throttle 3000 -v -v -v 100
randomize-throttle 一定要与throtle绑定出现

在事件之间插入随机延迟,随即延迟范围为0到throttle设置的时间,单位为毫秒 百分比事件
adb shell monkey -p com.wandoujia.phoenix2 -throttle 3000 --randomize-throttle -v -v -v 100
百分比事件

看订阅号 --pct -touch
adb shell monkey --pct-touch 70 -v -v -v 100 操作100次点击操作占到了70%
monkey小知识
1.查找包名
adb shell 进入shell命令行界面
#cd data/data
#ls
把所有包名都罗列出来根据关键词去查找包名

如何查看前台运行的包名和应用名
adb shell dumpsys activity | grep “mFocusedActivity”
通过工具sdk–> hierarchyviewer.bat

导出日志到本地
adb shell monkey {+命令参数}次数>PC本地路径
adb shell monkey -v -v -v 1000>d:\monkey.txt

app客户端性能测试
测试时间:与功能测试必行
测试范围:产品的核心功能,用户使用最频繁,与用户交互最多
检测方向:
CPU占用
内存的占用
流量的耗用
电量的耗用
测试工具:GT 可以直接安装到手机。http://gt.qq.com
Emmgee:https://github.com/NetEase/Emmgee
itest
弱网测试
直接设置路由器限速
Network Emulator Toolkit 工具
关注:卡死,崩溃 无响应 闪退 业务交互数据的正确性
http://blog.csdn.net/no1mwb/article/details/53638681

兼容性测试
手工测试:适应市场主流手机
国内主流云测试平台
testin云测 http://www.testin.cn/
百度云MTC http://mtc.baidu.com
腾讯优测http://utest.qq.com
阿里MQC(http://mqc.aliyun.com/

APP稳定性测试实例

运行方式有三种:a.pc机上 adb shell monkey +参数 b pc机输入adb shell进入到手机的安卓设备后再monkey+参数 C手机设备上安装一个模拟器手机执行monkey+参数(手机模拟器可以通过百度搜索或360手机助手搜android terminal,安装即可,可以在模拟器的命令行中输入mokey +参数)
下面是第一种方法:
1.查看包名:查看电脑中某一位置的apk文件的包名:PC打开CMD-进入TMG目录-运行设备–查看包名aapt dump badging *.apk(apk文件的路径,可以直接拖拽)。
在这里插入图片描述
或者直接查看手机中存在的apk包,进入adb shell 命令后—手机的data/data文件夹–ls查看所有包名 找到要测apk的包名
在这里插入图片描述
2.运行monkey,对此包进行300次无规律点击。
在这里插入图片描述
或者运行monkey,对此包进行300次无规律点击后将日志导出到电脑的某一位置
adb shell -p 包名 -v 点击数 >电脑某一位置
在这里插入图片描述
3、测试停止后,查看导出的monkey日志,发现问题。
在这里插入图片描述
在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。
首先我们需要查看Monkey测试中是否出现了ANR或者异常,无响应问题(ANR问题):在日志中搜索“ANR ”(此处有空格), 崩溃问题:在日志中搜索“Exception”,快速定位到关键事件信息 。然后查看Monkey里面出错前的一些事件动作,并手动执行该动作,找出重现步骤,给开发。
在这里插入图片描述
monkey命令详解
在这里插入图片描述
monkey -pcom.tencent.mtaexample -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &
1. -p后面接着的对应的包名,如果是整机测试,就不需要 -ppackage_name
2. -s后面是对应的种子数,好像就是操作步骤,根据她们测试的经验,一般种子数在23,同步她们测试的结果,一般种子的个数固定为23,和她们选择的操作步骤就是同步的。
3. --ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,一般不设置时,出现carash或者timeout时,Monkey测试会终止。这里是防止Monkey测试终止。
4. -v 指的是Monkey测试时打印log级别。
5. 100000 这里是指点击的次数,根据她们测试的经验,对于单个应用程序这个次数设置在100000次就可以了;如果是整机,一般设置在500000次。
/data/local/tmp/log.txt测试的log记录在手机上/data/local/tmp/ 下面的log.txt里面,这个名字可以自己写。
6. 2>&1 固定的写法,这个也很重要,代表的意思是中间忽略的东东的日志一并输入到指定的文件中。
7. 最后单独的一个"&" 是一旦Monkey测试开始了,之后可以拔掉数据线,不会影响Monkey测试。
8. 测试所有模块 monkey -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &

monkey常用参数详解
-v 日志详细程度
Level 0 : adb shell monkey -p fishjoy.control.menu -v 100 最简单(默认),除了启动、测试完成和最终结果外只提供较少的信息。
Level 1 : adb shell monkey -p fishjoy.control.menu -v -v 100 提供了较为详细的测试信息,如逐个发送到Activity的事件信息
Level 2 : adb shell monkey -p fishjoy.control.menu -v -v -v 100 提供了更多的设置信息,如测试中选中或未选中的Activity信息
比较常用的是-v -v -v,一般会保存到指定文件中供开发人员查找bug原因时使用
-s(随机数种子)
指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。
示例: monkey测试1:adb shell monkey -p fishjoy .control.menu –s 10 100
monkey测试2:adb shell monkey -p fishjoy .control.menu –s 10 100
–throttle <毫秒>
指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息。
示例:adb shell monkey -p fishjoy.control.menu --throttle 3000 100
-p <允许的包名列表>
用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果不指定包,monkey将允许系统启动设备中的所有app。
–ignore-security-exception
作用:通常,当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
–ignore-timeouts
作用:通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
–ignore-crashes
作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
–pct-touch
作用:调整触摸事件的百分比.(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)比如一个应用80%的操作都是触摸,那就可以将此参数的百分
比设置成相应较高的百分比。如触摸返回、触摸签到等
–pct-motion
调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)也就是直线滑动事件如从左到有滑动解锁
–pct-trackball
作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)如不规则滑动解锁
–pct-nav 导航,现在手机基本没有导航了
—pct-syskeys 按键消息比例,主页、后退、音量增减
–pct-anyevent 其他不常用的按键比例的设置,不常用
–hprof monkey测试完成后生成内存快照,data/misc路径下生成,不常用,比较占空间
–ignore-security-exceptions 忽略权限问题的
–kill-process-after-error 当错误发生时杀进程
–monitor-native-crashes 监视崩溃时的本地代码
七、杀monkey进程
如果想中断运行中的monkey CTRL+C
adb shell ps | grep monkey 返回进程号
adb shell kill [刚才查到的进程号]
app包名查看:
a.手机安装包名查看器’
b.aapt命令 aapt dump badging *.apk
c、源码下的AndroidManifest.xml文件查看
d.adb logcat抓取当前Android机运行的app的包名( I/ActivityManager(数字): Displayed 包名/类
名: +ms )
命令行输入 adb logcat >e:\bag.txt
手机操控app,ctrl+c停止
去e:\bag.txt这个文件下搜索关键字如Displayed ,一般都能找到

Android压力测试】monkey压力测试(很全、很详细)
1.安装ADB
2.连接被测手机和电脑
3.打开CMD命令行
4.输入monkey命令
adb shell monkey -p your.package.name --pct-touch 30 --ignore-crashes --ignore-timeouts–throttle 250 -s 2 -v -v -v 5000000
一.monkey测试命令有哪些选项?
1:常用选项

–help:打印帮助信息
-v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。-v -v -v 为最详细日志。

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测试。

二.一个完整的monkey语句?
adb shell monkey -p your.package.name --pct-touch 30 --ignore-crashes --ignore-timeouts–throttle 250 -s 2 -v -v -v 5000000
触摸事件占30%,忽略crash和超时,每个事件间隔250ms,输出最详细日志,执行500万次
三.如何保存不连着电脑跑monkey?
1.输入命令进入shell环境:adb shell
2.输入monkey语句执行:monkey –p com.android.mms –s 100 --throttle 1000 –v –v –v 15000 > /mnt/sdcard/monkey_test.txt&
四.如何跑多个apk的monkey?
黑名单:执行除了黑名单中以外的apk;白名单:只执行在白名单中的apk。
黑名单的设置方法:
a.创建一个名称为blacklist的txt文档,在文件中输入应用程序的包名,如mms应用,则在文件中输入com.android.mms;如果有多个应用程序不想被执行,则在文件中添加多个包名,注意包名与包名之间均用回车键。
b.将blacklist.txt的文件导入到手机的/data目录下,然后在执行monkey测试的时候使用–pkg-blacklist-file参数再加上blacklist文件的存储路径,其他的参数设置则和测试单一apk没有区别。
白名单的设置方法:
白名单的设置方法和黑名单的设置方法基本一致,只是在创建txt文档的时候,文件的命令应为whitelist。在执行monkey的时候,只执行白名单中的应用。

例子:
monkey –pkg-blacklist-file /data/blacklist.txt -c -s <限制语句> --throttle -v 执行次数> C:\blacklist_test.txt //执行黑名单以外的应用
monkey –pkg-whitelist-file /data/whitelist.txt -c -s <限制语句> --throttle -v 执行次数 > C:\whitelist_test.txt //执行白名单的应用

五.如何关闭mokey?

  1. ps命令查找uiautomator的进程
    cmd命令行窗口输入:
    (linux)adb shell ps | grep monkey
    (windows)adb shell ps | findstr monkey
    返回来的第一个数字,即是monkey的进程号
    2.kill 命令结束进程
    继续输入: adb shell kill [刚才查到的进程号]
    六.如何分析monkey日志?
    1、 ANR问题:在日志中搜索“ANR”
    2、 崩溃问题:在日志中搜索“CRASH”

七.如何重现BUG?
1、 找到是monkey里面的哪个地方出错

2、 查看Monkey里面出错前的一些事件动作,并手动执行该动作

3、 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样

八.monke的测试策略?
单个apk的验收测试时,使用单一apk且不忽略异常的命令执行

单个apk的解决问题的测试时,使用单一apk且忽略异常的命令执行。这样可以在一次执行的过程中发现应用程序中的多个问题。

单个apk的应用程序的压力/健壮性测试时,主要缩短monkey测试中事件与事件之间的延迟时间,验证在快速的事件响应的过程中,程序是否能正常运行。将–throttle的值设定为500或者更小,一般都使用500毫秒的延迟事件。

在进行apk的集合测试(测试对象为多个APP,手机测试?)时,对于高频率使用的apk、长时间使用的apk都要包含在执行的应用程序中间。

APK分类具体:

高频率使用的apk如:Phone、Contacts、Message、Settings、File Manager、Gallery、Input Method

长时间使用的apk如:Phone、Browser、Music player、Camera、Video player、Email、Chat

其他的apk如:Calendar、Notepad、Calculator、FM Radio、Google Search

九.想不随机跑moneky,指定脚本跑monkey?
http://blog.sina.com.cn/s/blog_614423f301013cvv.html

猜你喜欢

转载自blog.csdn.net/weixin_43639443/article/details/89242933