转自:

monkey

、在pc(Linux)上运行模拟器,两种方法

l可以通过eclipse运行emulator,具体方法略。

l可以通过命令行:root@lenovo-desktop:~# emulator -avd android2.2

、进入adb shell模式,如下:

root@lenovo-desktop:~# adb shell

#

、运行monkey工具开启专用端口

# monkey --port 1080 -v -v

:Monkey: seed=0 count=1000

:IncludeCategory: android.intent.category.LAUNCHER

:IncludeCategory: android.intent.category.MONKEY

… …

注:执行完monkey命令后可以使用netstat查看端口是否开启,下面红色部分是我们要关注的地方。

# netstat

Proto Recv-Q Send-Q Local Address          Foreign Address        State

tcp        0      0 127.0.0.1:5037         0.0.0.0:*              LISTEN

tcp        0      0 0.0.0.0:5555           0.0.0.0:*               LISTEN

tcp        0      0 127.0.0.1:1080         0.0.0.0:*              LISTEN

tcp    0       0 10.0.2.15:5555         10.0.2.2:43064         ESTABLISHED

udp        0      0 0.0.0.0:55433          0.0.0.0:*

udp        0      0 0.0.0.0:52470          0.0.0.0:*

#

、在pc端开启转发端口

root@lenovo-desktop:~# adb forward tcp:1080 tcp:1080

注:执行完adb forward后,同样可以使用netstat命令查看端口是否启用,命令如下:

root@lenovo-desktop:~# netstat -an | grep 1080

root@lenovo-desktop:~#

root@lenovo-desktop:~# adb forward tcp:1080 tcp:1080

root@lenovo-desktop:~# netstat -an | grep 1080

tcp        0      0 127.0.0.1:1080          0.0.0.0:*               LISTEN

root@lenovo-desktop:~#

、使用telnet工具连接android

root@lenovo-desktop:~# telnet 127.0.0.1 1080

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

出现上面的提示,没有异常退出的话,说明连接成功,这时候就可以参照example_script.txt脚步里面的内容输入键值了。

root@lenovo-desktop:~# telnet 127.0.0.1 1080

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

key down 3

OK

key up 3

OK

注:key down 3,key up 3,是用户输入的键值,ok是返回值,如果看到ok字样的返回值,说明发的键值为有效值,否则,为无效值!

此时你会想到,如果必须这样一次一次的输入没个键值的话,那还有啥自动化测试的意义呢,还不如一个一个的去按呢,事实上是可以通过管道一次把所有命令传入monkey的。

、一次性输入example_script.txt脚步里面的所有内容,命令如下:

root@lenovo-desktop:~# cat example_script.txt | telnet 127.0.0.1 1080

这时,你就可以在你执行# monkey --port 1080 -v –v命令的窗口看到打印的一系列Events消息:

……

:Sending Pointer ACTION_DOWN x=160.0 y=200.0

:Sending Pointer ACTION_UP x=160.0 y=200.0

Sleeping for 1000 milliseconds

:Sending Pointer ACTION_DOWN x=300.0 y=450.0

:Sending Pointer ACTION_UP x=300.0 y=450.0

Sleeping for 1000 milliseconds

:Sending Pointer ACTION_DOWN x=300.0 y=450.0

:Sending Pointer ACTION_UP x=300.0 y=450.0

Sleeping for 1000 milliseconds

:Sending Pointer ACTION_DOWN x=300.0 y=450.0

:Sending Pointer ACTION_UP x=300.0 y=450.0

Sleeping for 1000 milliseconds

:SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN

:SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN

:SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN

:SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN

:SendKey (ACTION_DOWN): 23    // KEYCODE_DPAD_CENTER

:SendKey (ACTION_UP): 23    // KEYCODE_DPAD_CENTER

:SendKey (ACTION_DOWN): 30    // KEYCODE_B

:SendKey (ACTION_UP): 30    // KEYCODE_B

:SendKey (ACTION_DOWN): 37    // KEYCODE_I

:SendKey (ACTION_UP): 37    // KEYCODE_I

:SendKey (ACTION_DOWN): 40    // KEYCODE_L

:SendKey (ACTION_UP): 40    // KEYCODE_L

:SendKey (ACTION_DOWN): 40    // KEYCODE_L

:SendKey (ACTION_UP): 40    // KEYCODE_L

:SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN

:SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN

:SendKey (ACTION_DOWN): 30    // KEYCODE_B

:SendKey (ACTION_UP): 30    // KEYCODE_B

:SendKey (ACTION_DOWN): 37    // KEYCODE_I

:SendKey (ACTION_UP): 37    // KEYCODE_I

:SendKey (ACTION_DOWN): 40    // KEYCODE_L

:SendKey (ACTION_UP): 40    // KEYCODE_L

:SendKey (ACTION_DOWN): 40    // KEYCODE_L

:SendKey (ACTION_UP): 40    // KEYCODE_L

:Sending Pointer ACTION_DOWN x=300.0 y=450.0

:Sending Pointer ACTION_UP x=300.0 y=450.0

Events injected: 34

:Dropped: keys=0 pointers=0 trackballs=0 flips=0

## Network stats: elapsed time=18299ms (18299ms mobile, 0ms wifi, 0ms not connected)

注:你发现没?以上显示的内容呢,正是examp_script.txt的内容。

、在pc(windows )上运行monkey测试工具

备注:这个example_script.txt也完全可以在windows机器上运行,运行方法和步骤完全同上,所用到的系统命令也几乎一样。

monkey

、连接设备

使用usb线或其他方式如串口连通设备和pc,使之能够相互通讯即可,验证方法参照命令netstat。

、如何测试

剩下的测试方法参照楼上的虚拟机方法即可。

example_script.txt例子非常简单,但是要真正的把它拿到自动化测试当中来,还需要花费很大的力气,其中的events,不泛是例子中的几个简单的events,而是还可以实现很多功能的,具体的events用法可参考monkey的源码.

路还是很长滴…

(example_script.txt)

# Touch the android

touch down 160 200

touch up 160 200

sleep 1000

# Hit Next

touch down 300 450

touch up 300 450

sleep 1000

# Hit Next

touch down 300 450

touch up 300 450

sleep 1000

# Hit Next

touch down 300 450

touch up 300 450

sleep 1000

# Go down and select the account username

key down dpad_down

key up dpad_down

key down dpad_down

key up dpad_down

key down dpad_center

key up dpad_center

# account name: bill

key down b

key up b

key down i

key up i

key down l

key up l

key down l

key up l

# Go down to the password field

key down dpad_down

key up dpad_down

# password: bill

key down b

key up b

key down i

key up i

key down l

key up l

key down l

key up l

# Select next

touch down 300 450

touch up 300 450

# quit

quit

五、附录:

以下内容为android系统中的keycode值:

KEYCODE_UNKNOWN=0;

KEYCODE_SOFT_LEFT=1;

KEYCODE_SOFT_RIGHT=2;

KEYCODE_HOME=3;

KEYCODE_BACK=4;

KEYCODE_CALL=5;

KEYCODE_ENDCALL=6;

KEYCODE_0=7;

KEYCODE_1=8;

KEYCODE_2=9;

KEYCODE_3=10;

KEYCODE_4=11;

KEYCODE_5=12;

KEYCODE_6=13;

KEYCODE_7=14;

KEYCODE_8=15;

KEYCODE_9=16;

KEYCODE_STAR=17;

KEYCODE_POUND=18;

KEYCODE_DPAD_UP=19;

KEYCODE_DPAD_DOWN=20;

KEYCODE_DPAD_LEFT=21;

KEYCODE_DPAD_RIGHT=22;

KEYCODE_DPAD_CENTER=23;

KEYCODE_VOLUME_UP=24;

KEYCODE_VOLUME_DOWN=25;

KEYCODE_POWER=26;

KEYCODE_CAMERA=27;

KEYCODE_CLEAR=28;

KEYCODE_A=29;

KEYCODE_B=30;

KEYCODE_C=31;

KEYCODE_D=32;

KEYCODE_E=33;

KEYCODE_F=34;

KEYCODE_G=35;

KEYCODE_H=36;

KEYCODE_I=37;

KEYCODE_J=38;

KEYCODE_K=39;

KEYCODE_L=40;

KEYCODE_M=41;

KEYCODE_N=42;

KEYCODE_O=43;

KEYCODE_P=44;

KEYCODE_Q=45;

KEYCODE_R=46;

KEYCODE_S=47;

KEYCODE_T=48;

KEYCODE_U=49;

KEYCODE_V=50;

KEYCODE_W=51;

KEYCODE_X=52;

KEYCODE_Y=53;

KEYCODE_Z=54;

KEYCODE_COMMA=55;

KEYCODE_PERIOD=56;

KEYCODE_ALT_LEFT=57;

KEYCODE_ALT_RIGHT=58;

KEYCODE_SHIFT_LEFT=59;

KEYCODE_SHIFT_RIGHT=60;

KEYCODE_TAB=61;

KEYCODE_SPACE=62;

KEYCODE_SYM=63;

KEYCODE_EXPLORER=64;

KEYCODE_ENVELOPE=65;

KEYCODE_ENTER=66;

KEYCODE_DEL=67;

KEYCODE_GRAVE=68;

KEYCODE_MINUS=69;

KEYCODE_EQUALS=70;

KEYCODE_LEFT_BRACKET=71;

KEYCODE_RIGHT_BRACKET=72;

KEYCODE_BACKSLASH=73;

KEYCODE_SEMICOLON=74;

KEYCODE_APOSTROPHE=75;

KEYCODE_SLASH=76;

KEYCODE_AT=77;

KEYCODE_NUM=78;

KEYCODE_HEADSETHOOK=79;

KEYCODE_FOCUS=80;//*Camera*focus

KEYCODE_PLUS=81;

KEYCODE_MENU=82;

KEYCODE_NOTIFICATION=83;

KEYCODE_SEARCH=84;

KEYCODE_MEDIA_PLAY_PAUSE=85;

KEYCODE_MEDIA_STOP=86;

KEYCODE_MEDIA_NEXT=87;

KEYCODE_MEDIA_PREVIOUS=88;

KEYCODE_MEDIA_REWIND=89;

KEYCODE_MEDIA_FAST_FORWARD=90;

KEYCODE_MUTE=91;

monkey测试linux设备,关于使用Monkey运行脚本测试相关推荐

  1. 嵌入式Linux设备驱动程序:在运行时读取驱动程序状态

    嵌入式Linux设备驱动程序:在运行时读取驱动程序状态 Embedded Linux device drivers: Reading driver state at runtime 在运行时了解驱动程 ...

  2. linux 上自动执行caffe,linux下caffe的命令运行脚本

    参考:https://www.cnblogs.com/denny402/p/5076285.html 首先编译: make -j8 make pycaffe 注:下面的--solver=.... 等价 ...

  3. monkey测试linux设备,Monkey测试环境搭建及测试执行

    一.环境准备 1.JDK 2.Android SDK 二.JAVA环境的搭建 1.JDK 下载地址:https://www.oracle.com/technetwork/java/javase/dow ...

  4. linux 设备直通,使用virtualbox运行物理硬盘的系统 USB设备直通,支持网银、刷...

    有些人使用虚拟机的时候遇到了些问题,所以我就发个帖子说下几个解决方法,希望能对刚刚接触的人有些帮助. 安装virtualbox: 如果是ubuntukylin,那么可以在ubuntu软件中心或者ubu ...

  5. linux shell显示下载进度,shell脚本测试下载速度

    在linux下用shell来测试下载速度,很实用的shell代码. 代码: 复制代码 代码示例: #!/bin/bash #date:20140210 # edit: www.jquerycn.cn ...

  6. 《Android深度探索(卷1):HAL与驱动开发》——6.4节使用多种方式测试Linux驱动...

    本节书摘来自异步社区<Android深度探索(卷1):HAL与驱动开发>一书中的第6章,第6.4节使用多种方式测试Linux驱动,作者李宁,更多章节内容可以访问云栖社区"异步社区 ...

  7. 软件测试压力测试步骤,软件测试员必知!压力测试总共需要几个步骤?思路总结篇...

    在运维工作中,压力测试是一项很重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验.今天我们就来深入了解下压力测试! 首先, 什么是压力 ...

  8. android驱动测试,Android: 通过 cucumber 驱动 monkey 做稳定性测试

    主要内容 稳定性测试是什么 Monkey 介绍 自动化 Monkey 稳定性测试是什么 通过随机点击屏幕一段时间,看看 app 会不会奔溃,能不能维持正常运行. Monkey 介绍 Monkey 是一 ...

  9. Monkey框架(测试方法篇) - monkey测试实例

    一.常规的稳定性测试 测试背景: 这是一个海外的合作项目,被测程序是Android应用(App).测试希望通过Monkey来模拟用户长时间的随机操作,检查被测应用是否会出现异常(应用崩溃或者无响应). ...

最新文章

  1. left join 与left outer join的区别
  2. 【教学课件】IT教学课件和课程考试资料汇总
  3. SAP Spartacus Popover Directive 构造函数的用途分析
  4. 第五十八期:从0到1 手把手教你建一个区块链
  5. 2021年小红书美妆护肤品类行业洞察报告
  6. 认真的吗?过户逝者手机号码却需双方本人到场 中国移动回应...
  7. 在修改css特效时,需要注意的问题。(对寄存的影响,引用的位置)
  8. BAT大揭秘:在腾讯、百度、阿里上班,差别竟然这么大?
  9. 经历一次方知书中千百蕴意 ——读《人月神话》有感
  10. java中contains的用法_好程序员Java教程分享Java中this的几种用法
  11. intelliJ idea代码折叠
  12. [Linux基础]读书笔记-老男孩核心系统命令实战1
  13. jquery手机端带农历的万年历插件
  14. java的hsf高速框架_分布式服务框架HSF - osc_n50eizn7的个人空间 - OSCHINA - 中文开源技术交流社区...
  15. HTML 修真录------深渊三君王
  16. 免费开放,GSTO-沪深A股L2行情数据API接口,开发接口文档
  17. 最小二乘估计与卡尔曼滤波公式推导
  18. android 遥控器方向,android万能遥控器之一--前言及发射部分的简单实现
  19. 用python画樱花、玫瑰和圣诞树
  20. Mysql分组查询每组最新的一条数据(三种实现方法)

热门文章

  1. 想知道什么换发型软件好用吗?
  2. ubuntu18安装office2010
  3. office 2010 安装教程
  4. 温度压力测试软件什么好,鲁大师温度压力测试多少度正常?鲁大师压力测试靠谱吗?...
  5. 如何做好详细方案设计?
  6. tcp/ip协议知识详解
  7. 阳光男孩陈颢天 受邀担任第六季完美童模全球总决赛代言人
  8. 线性链表java实现_线性表的Java实现--链式存储(双向链表)
  9. Java对象的实例化过程是怎样的?
  10. lammps笔记-入门