zoukankan      html  css  js  c++  java
  • 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:Usersm1877Desktopwandoujia.apk"

     

    #覆盖安装

    adb install -r  "C:Usersm1877Desktopwandoujia.apk"

     

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

    adb  -s 127.0.0.1:62001 install  "C:Usersm1877Desktopwandoujia.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:Usersm1877Desktop

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

    屏幕截图

    $ adb shell screencap /sdcard/11.png

    adb pull /sdcard/11.png  C:Usersm1877Desktop

     

    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:Usersm1877>adb shell monkey -v -v 100 >d:monkeylog.txt

    保存在手机上

    C:Usersm1877>adb shell

    monkey -v 100 >/sdcard/monkeylog.log

    标准流和错误流分开保存

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

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

     

    C:Usersm1877>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:Usersm1877Desktopkaoyan3.1.0.apk" |findstr launchable-activity

    获取包名

    aapt dump badging "C:Usersm1877Desktopkaoyan3.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:Usersm1877>Desktopkyb.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

  • 相关阅读:
    GoogleTest初探(2)
    GoogleTest初探(1)
    GoogleMock初探(0)
    GoogleTest初探(0)
    [leetcode] 二叉树的前序,中序,后续,层次遍历
    关于phpmyadmin报403错误forbidden
    如何使用Fiddler抓取Android手机数据请求
    安全性测试之安装包测试
    二代身份证号码编码规则
    Excel导入功能测试用例整理
  • 原文地址:https://www.cnblogs.com/Murraya/p/14099673.html
Copyright © 2011-2022 走看看