20200714_31adb命令和monkey压力稳定性测试

adb命令

连接被测设备adb connect 127.0.0.1:62001

备注:夜神模拟器的端口是规律的,第一个模拟器端口是62001,第二个模拟器端口是62025,第三个是62025+1,依此类推。

 

 

 

查看当前连接了哪些设备adb devices

 

 

 

进入已连接设备内部命令adb shell

android 设备底层是 linux 系统。 shell 是 linux 系统的字符交互界面。

#同时开了很多台设备,进入指定设备shell

adb  -s 127.0.0.1:62001 shell

#退出adb shell

exit

root用户是系统中唯一的超级管理员一般情况下都不要乱使用root。
在设备安装apk

adb install | -r <apkName>  -r 覆盖原安装文件 -s 可以指定设备

eg:

 

#默认安装

adb install "C:\Users\m1877\Desktop\wandoujia.apk"

 

#覆盖安装

adb install -r  "C:\Users\m1877\Desktop\wandoujia.apk"

 

#指定设备安装(先把之前App删除)

adb  -s 127.0.0.1:62001 install  "C:\Users\m1877\Desktop\wandoujia.apk"

卸载apk

1.执行命令删除

adb uninstall  | -k  <apkName>  卸载软件

 

adb uninstall  com.wandoujia.phoenix2

 

2.如何获取包名Package,那这是什么呢?

进入手机

adb shell

/data/app/路径下找包名

cd /data/app/

ls

如果我想查看设备上面安装的应用包名

adb shell pm list package

文件读取写入

将文件从PC写入到设备

adb push <local> <remote>

adb push C:\kyb.txt /sdcard

将文件从设备读取到PC

adb pull <remote> <local>

adb pull /sdcard/server.log  C:\Users\m1877\Desktop

注意:由于权限问题,不能直接pull到电脑磁盘根目录,否则会报错:

屏幕截图

$ adb shell screencap /sdcard/11.png

adb pull /sdcard/11.png  C:\Users\m1877\Desktop

 

monkey压力测试具体怎么做

保证手机连接通常

adb connect 127.0.0.1:62001

然后查看一下已连接的设备

adb devices

启动monkey

Adb shell

Monkey

对安卓手机进行一个最基本的压力测试

adb shell monkey 100

解释:

monkey命令格式如下:

$ adb shell monkey [options] <event-count>

  • [options] 是指monkey可传入的参数,是可选项(如果不指定options,Monkey将以无反馈模式启动)
  • <event-count> 是指随机发送事件数。如:输入100就是执行100个伪随机事件,为必选项。

压测时要输出日志,进行分析,所以这里可以接参数v

adb shell monkey -v 100

-v:打印出日志信息,每个-v将增加反馈信息的级别。-v越多日志信息越详细,不过目前最多支持3个-v,

 

 

 

如果某一次执行的操作除了问题,需要复现可以使用 -s参数,后面在接一个seed值

公式:$ adb shell monkey -s <seed> <event-count>

$ adb shell monkey -s 666 100

-----------------------------------------------------------------

让每个操作慢一点,可以在每一个指令之间加上固定的间隔时间,可以用--throttle(注意,前面是--)命令

公式:$ adb shell monkey --throttle <milliseconds>

$ adb shell monkey -v --throttle 3000  5

--throttle:后面接时间,单位为ms

app点点点操作比较多,-pct-touch:后面接触摸事-件百分比

$ adb shell monkey --pct-touch

$ adb shell monkey -v -v --pct-touch 10 200

-----------------------------------------------------------------

滑动比较多,(手势事件)在这里接的是--pct-motion

$ adb shell monkey --pct-motion

$ adb shell monkey -v -v --pct-motion 30 200

两个同时调整

adb shell monkey -v -v --pct-motion 20 --pct-touch 30 50

视频类的软件调整屏幕旋转的事件

$ adb shell monkey --pct-rotation <percent>

adb shell monkey --pct-rotation 22 50

--pct-rotation 后面接屏幕旋转事件的比例值。

当然这样的事件参数有很多

包含11大事件,触摸事件、手势事件、二指缩放事件、轨迹事件、屏幕旋转事件、基本导航事件、主要导航事件、系统按键事件、启动Activity事件、键盘事件、其他类型事件。

1.触摸事件

触摸事件是指在屏幕某处按下并抬起的操作,

--pct-touch

Touch(ACTION_DOWN)

Touch(ACTION_UP)

2.手势事件

手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。在手机上看到的实际操作是一个没有拐弯的直线滑动操作。

--pct-motion

一个ACTION_DOWN事件、

一系列ACTION_MOVE事件

一个ACTION_UP事件

3.二指缩放事件

二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,--pct-pinchzoom

一个ACTION_DOWN事件和一个ACTION_POINTER_DOWN事件

一系列的ACTION_MOVE事件,即两个手指同时在屏幕上直线滑动;ACTION_POINTER_UP事件和一个ACTION_UP事件,即两个手指同时放开。

4.轨迹事件

轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击。

--pct-trackball参数来配置其事件百分比。

一系列的Trackball(ACTION_MOVE)事件

5.屏幕旋转事件

模拟的Android手机的横屏和竖屏切换。

--pct-rotation

一个rotation事件组成

6.基本导航事件

--pct-nav

该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,

7.主要导航事件

主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。

--pct-majornav

一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,

8.系统按键事件

系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。

--pct-syskeys

一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,

9.启动Activity事件
该事件是由一个Switch操作组成的
10.键盘事件

--pct-flip

11.其他类型事件

--pct-anyevent

一个Key(ACTION_DOWN)和一个Key(ACTION_UP)

Monkey日志管理是Monkey测试中非常重要的一个环节,通过日志管理分析,可以获取当前测试对象在测试过程中是否会发生异常,以及发生的概率,同时还可以获取对应的错误信息,帮助开发定位和解决问题。

monkey日志保存方法

保存在PC中

保存在手机上

标准流和错误流分开保存

保存在PC中

>adb shell monkey [option] <count> >d:\monkey.txt

C:\Users\m1877>adb shell monkey -v -v 100 >d:\monkeylog.txt

保存在手机上

C:\Users\m1877>adb shell

monkey -v 100 >/sdcard/monkeylog.log

标准流和错误流分开保存

·标准流与错误流分开保存,代码如下:

Monkey [option] <count> 1>/sdcard/monkey.txt 2>/sdcard/error.txt

 

C:\Users\m1877>adb shell monkey -v 100 1>d:\monkey.log  2>d:\error.log

1.应用程序崩溃后继续发送事件参数

如果你希望monkey在应用程序崩溃后继续发送事件,则需要用到--ignore-crashes命令

$ adb shell monkey --ignore-crashes <event-count>

$ adb shell monkey -v --ignore-crashes 5 

它可以在应用程序崩溃或发生失控异常时,继续运行。

2.超时错误继续发送事件

如果你希望monkey在超时错误发生后继续运行,则需要用到--ignore-timeouts命令。

$ adb shell monkey --ignore-timeouts

adb shell monkey -v --ignore-timeouts 5

在设置此选项后,当应用程序发生超时错误时,会继续运行

3.应用程序权限错误发生后继续发送事件

如果你希望monkey在应用程序权限错误发生后继续发送事件,则需要用到--ignore-security-exceptions命令。

$ adb shell monkey --ignore-security-exceptions

adb shell monkey -v --ignore-security-exceptions 5

针对某一个app要怎么进行monkey的压力测试。

参数要接-p:后面接一个或多个包名(<allowed-package-name>),

$ adb shell monkey -p <allowed-package-name> <event-count>

$ adb shell monkey -p com.tal.kaoyan 500

如果在当前app里需要同时访问其他app,那可以把相关的包名也接上。

$ adb shell monkey -p com.tal.kaoyan -p com.wandoujia.phoenix2 500

 

自定义脚本的稳定性测试

Monkey脚本API简介

LaunchActivity(pkg_name, cl_name):启动应用的Activity。参数:包名和启动的Activity。

Tap(x, y, tapDuration): 模拟一次手指单击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略。

UserWait(sleepTime): 休眠一段时间

DispatchPress(keyName): 按键。参数: keycode。 RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。

DispatchString(input): 输入字符串。

获取启动的页面参数 aapt dump badging

aapt dump badging "C:\Users\m1877\Desktop\kaoyan3.1.0.apk" |findstr launchable-activity

获取包名

aapt dump badging "C:\Users\m1877\Desktop\kaoyan3.1.0.apk"

Monkey脚本有两部分,一部分是头文件信息,一部分是具体的monkey命令。

//脚本的类型,使用默认的

type = raw events  

//脚本执行的次数

count = 1  

//脚本执行的速率

speed = 1.0  

//下面为monkey命令  

start data >>   

具体的monkey脚本内容  

编写脚本

kyb.txt

#头文件信息

#脚本类型,使用默认的,原始事件

type = raw events

#脚本执行的次数

count = 1

#执行的速率

speed = 1.0

 

#启动测试

start data >>

 

LaunchActivity(com.tal.kaoyan,com.tal.kaoyan.ui.activity.SplashActivity)

UserWait(2000)

 

Tap(628,979,1000) #点击取消升级,1000表示按压持续的时间

UserWait(2000)

 

Tap(802,68,1000) #点击跳过

UserWait(2000)

 

Tap(179,377,1000) #点击用户名输入框

DispatchString(trr123456)

UserWait(2000)

 

Tap(171,466,1000) #点击密码输入框

DispatchString(123456)

UserWait(2000)

 

Tap(452,625,1000) #点击登录按钮

 

执行脚本

脚本编写完成后,传到手机设备上,然后执行。

adb push C:\Users\m1877>Desktop\kyb.txt /sdcard

 

adb shell monkey -f /sdcard/kyb1.txt -v 1

 

Activity获取

研发提供   或者adb shell

然后dumpsys window windows |grep -i current

 

百度地图monkey测试需求分析

需求分析
1.测试指定的应用,因此需要使用-p指定被测app包名:com.baidu.BaiduMap
2.该测试的目的是希望模拟用户操作,因此需要让Monkey执行的时间尽可能的接近用户的常规操作,这样才能最大限度的发现用户使用过程中可能出现的问题,因此需要对Monkey执行的事件百分比做一些调整
2、这个测试的目的是希望模拟用户操作,因此需要让Monkey执行的事件尽可能地接近用户的常规操作,这样才可以最大限度地发现用户使用过程中可能出现的问题。因此需要对Monkey执行的事件百分比做一些调整:

触摸事件和手势事件是用户最常见的操作,所以通过--pct-touch和- pct-motion将这两个事件的占比调整到40%与25%;目标应用包含了多个Activity,为了能覆盖大部分的Activity,所以通过pct appswitch将Activiy切换的事件占比调整到10%;被测应用在测试中出现过不少横竖屏之间切换的问题,这个场景也必须关注,因此通过- pct rotation把横竖屏切换事件调整到10%。


3、使用-s参数 来指定命令执行的seed值Monkey会根据seed值来生成对应事件流,同一个seed生 成的事件流是完全相同的。这里指定了seed值,是为了测试发现问题时,便于进行问题复现。


4、使用-throttle参数来控制Monkey每个操作之间的时间间隔指定操作之间的时间间隔,一方面是希望能更接近用户的操作场景,正常用户操作都会有一定的时间间隔;另一方面也是不希望因为过于频繁的操作而导致系统崩溃,尤其是在比较低端的手机_上执行测试时。因此通过-throtote设置Monkey每个操作固定延迟0.4秒。


5、使用-ignore -crashs--ignore timeouts参数使Monkey遇到意外时能继续执行在执行Monkey测试时,会因为应用的崩溃或没有响应而意外终止,所以需要在命令中增加限制参数-ignore -crash和-ignore timeouts,让Monkey在 遇到崩溃或没有响应的时候,能在日志中记录相关信息,并继续执行后续的测试。


6、使用-v指定log的详细级别Monkey的日志输出有3个级别:日志的级别越高,其详细程度也越高。为了方便问题的定位,这里将日志设为_v-v。

adb shell monkey -p com.baidu.BaiduMap 500 --pct-touch 40 --pct-motion 25 --pct-appswitch 10 --pct-rotation 5 10 -s 166 -throttle 400 --ignore-timeouts 5 -v -v 200

 

QQ_Android版自定义脚本脚本:

//脚本的类型,使用默认的
type = raw events
//脚本执行的次数
count = 1
//脚本执行的速率
speed = 1.0
//下面为monkey命令
start data >>
具体的monkey脚本内容
编写脚本
kyb.txt
#头文件信息
#脚本类型,使用默认的,原始事件
type = raw events
#脚本执行的次数
count = 1
#执行的速率
speed = 1.0

#启动测试
start data >>

LaunchActivity(com.tencent.mobileqq,com.tencent.mobileqq.activity.LoginActivity)
UserWait(2000)

Tap(77.9,922.2,1000) #点击取消升级,1000表示按压持续的时间
UserWait(2000)

#Tap(539.2,1193.0,1000) #点击登录
#UserWait(2000)

Tap(353.5,326.7,1000) #点击用户名输入框
DispatchString(406777673)
UserWait(2000)

Tap(355.5,433.7,1000) #点击密码输入框
DispatchString(123456)
UserWait(2000)

Tap(361.5,611.5,1000) #点击登录按钮

adb shell dumpsys window windows |grep -i current

posted @ 2020-12-07 21:11  Murraya  阅读(202)  评论(0编辑  收藏  举报