android monkey 简单测试

monkey 介绍

Monkey在英文里的含义是猴子,在测试行业的学名叫“猴子测试”,指的是没有测试经验的人甚至是根本不懂计算机的人(就像一只猴子),不需要知道程序的任何用户交互方面的知识,给他一个程序,他就会对他看到的任何界面进行操作,当然操作是无目的的、随便乱按乱点的,这种测试在产品周期的早期阶段会很有效,为用户节省了很多时间。
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

  1. Monkey的特征
    测试的对象仅为应用程序包,有一定局限性
    Monkey测试使用的事件随机流是随机的,也可以进行自定义
    可对MonkeyTest的对象,事件数量,类型,频率等进行设置

  2. Monkey的停止条件
    应用程序崩溃或接收到任何失控异常
    应用程序不响应
    正常运行结束
    强制停止进程

基本使用

手机或android 设备开启 开发者模式,可以连接到设备上去就可以了。

可以看这篇
https://www.jianshu.com/p/a86261c6ce67

然后开始adb 的连接使用

1、查看端口号


image.png

2、然后连接 windows 操作


image.png

连接成功。

开始 money开启

输入

adb.exe shell monkey -p 包名 --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000 > d:\mylog.log

结果


image.png

马赛克就是包名。。。

单独里面的命令说明

  1. -p参数
    参数-p用于约束限制
    //下面的命令表示Monkey程序对包名这个程序模拟100次随机用户事件
adb shell monkey -p 包名 100

//下面的命令表示Monkey程序对包名1,包名2,包名3模拟100次随机用户事件

adb shell monkey -p 包名1 –p 包名2  -p 包名3 100

//下面的命令表示Monkey程序手机内所有的程序模拟100次随机用户事件

adb shell monkey 100
  1. -v参数
    定义执行monkey的时候的日志显示详情
    -v:一级日志(默认的,显示的日志内容最少)
    -v -v:二级日志,会显示随机事件的比例以及发送事件的顺序等
    -v -v -v:三级日志,最详细
adb shell monkey -p com.tencent.mm -v -v 100
  1. -s [-s SEED]
    在多次执行monkey的时候,就算指令完全一样,发出的随机事件及顺序不一样,在每次执行的时候,可以都要给相同的一个种子数(随机的数字),发出的随机事件及顺序就一样
    主要使用的场景:复现之前monkey执行时候出现的问题
adb shell monkey -p com.tencent.mm -s 1588 -v -v 10
adb shell monkey -p com.tencent.mm -s 1588 -v -v 10
adb shell monkey -p com.tencent.mm -s 158 -v -v 10
  1. --throttle [–throttle MILLISEC]
    在每次事件发送的时间间隔,以一定频率发送事件
adb shell monkey -p com.tencent.mm -s 1588 --throttle 1000 -v -v 100
  1. [–pct-touch PERCENT]
    PERCENT表示占总事件的百分之多少
    调整发送的触摸事件的比例功能,点击一个位置,再松开(action_down/action_up)
    //touch后面的100,表示100次操作都是触摸事件
adb shell monkey -p com.tencent.mm -s 158 --throttle 100 --pct-touch 100 -v -v 1000

//--pct-trackball 30 表示30%的轨迹球事件
//用monkey测试天猫的这个包触摸操作百分之50,轨迹球操作百分之30,其它操作百分之20,总共进行100次随机点击,事件之间间隔300ms

adb shell monkey -p com.tmall.wireless -v -v -pct-touch 50 -pct-trackball 30 -throttle 300 100
  1. [–pct-motion PERCENT]
    PERCENT表示占总事件的百分之多少
    调整发送的拖动/移动事件的比例功能,点击一个位置,拖到另一个位置,再松开(action_down/ACTION_MOVE/action_up)
adb shell monkey -p com.tencent.mm -s 158 --throttle 100 --pct-motion  100 -v -v 10
  1. [–pct-syskeys PERCENT]
    PERCENT表示占总事件的百分之多少
    模拟设备的电话、主页、音量加、减等操作
adb shell monkey -p com.tencent.mm -s 158 --throttle 100 --pct-syskeys  100 -v -v 10
  1. --pct-appswitch PERCENT
    PERCENT表示占总事件的百分之多少
    覆盖你指定包(app)activity,切换不同的页面
adb shell monkey -p com.tencent.mm -s 158 --throttle 100 --pct-appswitch  40 -v -v 10
  1. [–ignore-crashes]
    忽略monkey执行过程中crash这种问题,继续执行monkey
adb shell monkey -p com.tencent.mm -s 158 --throttle 100 --pct-syskeys 100  --ignore-crashes -v -v 100

–ignore-crashes
作用:通常,应用发生崩溃或异常时Monkey会停止运行。如果设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
注:常用。

–ignore-timeouts
作用:通常,应用程序发生任何超时错误(如“Application Not responding”对话框)Monkey将停止运行,设置此项,Monkey将继续发送事件给系统,直到事件计数完成。
注:常用。

–ignore-security-exception
作用:通常,当程序发生许可错误(例如启动一些需要许可的Activity)导致的异常时,Monkey将停止运行。设置此项,Monkey将继续发送事件给系统,直到事件计数完成。

1000000 > d:\mylog.log

是次数和 日志地址。。

大体就是

adb shell monkey + 行为参数 + ">" + {日志保存路径}

日志如何看

打开日志
例如搜索 error ANR exception等关键词

其他部分
1、程序无响应的问题:在日志中搜索 “ANR”
2、 崩溃问题:在日志中搜索 “Exception”,Java常见异常:

算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
违法访问错误:IllegalAccessError
内存不足错误:OutOfMemoryError
堆栈溢出错误:StackOverflowError

提前结束

步骤

adb.exe shell

进入android 设备的命令功能。

top | grep monkey

这个是linux 命令。查看money 进程. 然后杀死他。

 kill -9 5442

结果

image.png

所有命令结束。。。

开启命令后,设备开始无规则的运行了。。敬请期待吧。

你可能感兴趣的:(android monkey 简单测试)