monkey测试linux设备,关于使用Monkey运行脚本测试
转自:
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运行脚本测试相关推荐
- 嵌入式Linux设备驱动程序:在运行时读取驱动程序状态
嵌入式Linux设备驱动程序:在运行时读取驱动程序状态 Embedded Linux device drivers: Reading driver state at runtime 在运行时了解驱动程 ...
- linux 上自动执行caffe,linux下caffe的命令运行脚本
参考:https://www.cnblogs.com/denny402/p/5076285.html 首先编译: make -j8 make pycaffe 注:下面的--solver=.... 等价 ...
- monkey测试linux设备,Monkey测试环境搭建及测试执行
一.环境准备 1.JDK 2.Android SDK 二.JAVA环境的搭建 1.JDK 下载地址:https://www.oracle.com/technetwork/java/javase/dow ...
- linux 设备直通,使用virtualbox运行物理硬盘的系统 USB设备直通,支持网银、刷...
有些人使用虚拟机的时候遇到了些问题,所以我就发个帖子说下几个解决方法,希望能对刚刚接触的人有些帮助. 安装virtualbox: 如果是ubuntukylin,那么可以在ubuntu软件中心或者ubu ...
- linux shell显示下载进度,shell脚本测试下载速度
在linux下用shell来测试下载速度,很实用的shell代码. 代码: 复制代码 代码示例: #!/bin/bash #date:20140210 # edit: www.jquerycn.cn ...
- 《Android深度探索(卷1):HAL与驱动开发》——6.4节使用多种方式测试Linux驱动...
本节书摘来自异步社区<Android深度探索(卷1):HAL与驱动开发>一书中的第6章,第6.4节使用多种方式测试Linux驱动,作者李宁,更多章节内容可以访问云栖社区"异步社区 ...
- 软件测试压力测试步骤,软件测试员必知!压力测试总共需要几个步骤?思路总结篇...
在运维工作中,压力测试是一项很重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验.今天我们就来深入了解下压力测试! 首先, 什么是压力 ...
- android驱动测试,Android: 通过 cucumber 驱动 monkey 做稳定性测试
主要内容 稳定性测试是什么 Monkey 介绍 自动化 Monkey 稳定性测试是什么 通过随机点击屏幕一段时间,看看 app 会不会奔溃,能不能维持正常运行. Monkey 介绍 Monkey 是一 ...
- Monkey框架(测试方法篇) - monkey测试实例
一.常规的稳定性测试 测试背景: 这是一个海外的合作项目,被测程序是Android应用(App).测试希望通过Monkey来模拟用户长时间的随机操作,检查被测应用是否会出现异常(应用崩溃或者无响应). ...
最新文章
- left join 与left outer join的区别
- 【教学课件】IT教学课件和课程考试资料汇总
- SAP Spartacus Popover Directive 构造函数的用途分析
- 第五十八期:从0到1 手把手教你建一个区块链
- 2021年小红书美妆护肤品类行业洞察报告
- 认真的吗?过户逝者手机号码却需双方本人到场 中国移动回应...
- 在修改css特效时,需要注意的问题。(对寄存的影响,引用的位置)
- BAT大揭秘:在腾讯、百度、阿里上班,差别竟然这么大?
- 经历一次方知书中千百蕴意 ——读《人月神话》有感
- java中contains的用法_好程序员Java教程分享Java中this的几种用法
- intelliJ idea代码折叠
- [Linux基础]读书笔记-老男孩核心系统命令实战1
- jquery手机端带农历的万年历插件
- java的hsf高速框架_分布式服务框架HSF - osc_n50eizn7的个人空间 - OSCHINA - 中文开源技术交流社区...
- HTML 修真录------深渊三君王
- 免费开放,GSTO-沪深A股L2行情数据API接口,开发接口文档
- 最小二乘估计与卡尔曼滤波公式推导
- android 遥控器方向,android万能遥控器之一--前言及发射部分的简单实现
- 用python画樱花、玫瑰和圣诞树
- Mysql分组查询每组最新的一条数据(三种实现方法)