测试总结笔记——Appium自动化——测试工具MonkeyMonkeyRunner
Posted 雪儿之城
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试总结笔记——Appium自动化——测试工具MonkeyMonkeyRunner相关的知识,希望对你有一定的参考价值。
MonKey(压测,检查评估稳定性;android自带)
一、MonKey启动
1、连接设备
2、adb shell
cd /system/bin
monkey
3、强制关闭MonKey
(1)查看全部运行的进程adb shell ps
(2)杀掉MonKey进程adb shell kill pid
4、MonKey命令
(1)adb shell monkey+应用+随机事件数
二、MonKey事件
1、触摸事件(--pct-touch)
调整触摸事件百分比
adb shell monkey -v --pct-touch 百分比 事件数
2、手势事件(--pct-motion)
触摸事件百分比
adb shell monkey -v --pct-motion 百分比 事件数
3、二指缩放事件
4、轨迹事件(--pct-trackball)
5、屏幕旋转事件(--pct-rotation)
屏幕旋转事件百分比
adb shell monkey -v --pct-rotation 百分比 事件数
6、基本导航事件(--pct-nav)
7、主要导航事件(--pct-majornav)
8、系统按键事件(--pct-syskeys)
9、启动Activity事件(--pct-app-switch)
启动事件百分比
adb shell monkey -v --pct-app-switch 百分比 事件数
10、键盘事件
11、其他类型事件(--pct-anyevent)
附:同时调整事件百分比
adb shell monkey -v --pct-touch 百分比 --pct-motion 百分比 事件数
三、MonKey参数
1、常规类参数
(1)帮助参数-h
adb shell monkey -h
(2)日志信息参数-v
adb shell monkey -v 事件数
2、事件类参数
(1)执行指定脚本-f
adb shell monkey -f 脚本名称 事件数
(2)伪随机数生成种子值-s
adb shell monkey -s 种子值 事件数
(3)指令间设置间隔
adb shell monkey --throttle 毫秒
3、约束类参数
(1)包约束-p
adb shell monkey -p 包名 事件数
(2)activity类约束-c
adb shell monkey -c 类别 事件数
4、调试类参数
(1)应用程序奔溃后继续发送事件--ignore-crashes
adb shell monkey --ignore-crashes 事件数
(2)超时错误继续发送事件--ignore-timeouts
adb shell monkey --ignore-timeouts
(3)应用程序权限错误发生后、继续发送事件--ignore-security-exceptions
adb shell monkey --ignore-security-exceptions
四、MonKey参数综合应用
1、测试场景
测试某APP,通过Monkey模拟用户的随机操作,检查被测应用是否会出现异常
2、需求分析
(1)测指定应用,-p指定包名
(2)测试目的:模拟用户操作。调整Monkey执行事件的百分比
(3)用-s参数指定命令执行的seed值,Monkey生成对应事件流。目的:测试发现问题,便于进行问题复现
(4)用--throttle参数设定操作间时间间隔。目的:接近模拟;防止频繁操作导致系统奔溃
(5)用--ignore-crashes和--ignore-timeouts参数。目的:遇到意外能继续执行;意外时能在日志记录相关信息
(6)用-v参数指定LOG详细级别。目的:方便问题定位
3、测试命令
adb shell monkey -p com.tal.kaoyan
--pct-touch 40 --pct-motion 25
--pct-appswitch 10
--pct-rotation 5
-s 1666 --throttle 400
--ignore-crashes
--ignore-timeouts
-v -v 200
五、Monkey自定义脚本(测试特定场景)
1、测试案例
启动考研帮APP,跳过升级提示和引导页面,进入登录界面并输入用户名密码进行登录
2、需求分析
(1)用户角度步骤进行
(2)操作元素定位
Monkey只能通过坐标方式定位点击移动事件的屏幕位置。开发人员选项——>显示指针位置
(3)操作步骤转化为测试脚本
1>Monkey脚本API简介:
LaunchActivity(pkg_name, cl_name) --启动应用的Activity
Tap(x,y,tapDuration) --模拟一次手指单击事件
UserWait(sleepTime) --休眠一段时间
DispatchPress(keyName) --按键
RotateScreen(rotationDegree,persist) --旋转屏幕
DispatchString(input) --输入字符串
DispatchFlip(true/false) --打开关闭软键盘
PressAndHold(x,y,pressDuration) --模拟长按事件
Drag(xStart, yStart, xEnd, yEnd, stepCount) --模拟一个拖拽操作
PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount) --模拟缩放手势
...
2>Monkey脚本格式(头文件+命令):
#头文件信息,注意=两侧留空格
type = raw events
count = 1
speed = 1.0
#Monkey命令
#启动测试
start data >>
3、测试脚本
#头文件信息
type = raw events
count = 1
speed = 1.0
#启动测试
start data >>
LaunchActivity(com.tal.kaoyan, com.tal.kaoyan.ui.activity.SplashActivity)
UserWait(2000)
#点击取消升级
Tap(624,900,1000)
UserWait(2000)
#点击跳过
Tap(806,64,1000)
UserWait(2000)
#点击用户名输入框
Tap(217,378,1000)
DispatchString(user)
UserWait(2000)
#点击密码输入框
Tap(197,461,1000)
DispatchString(password)
UserWait(2000)
#点击登录按钮
Tap(343,637,1000)
附:获取APP包名:aapt dump badging "..."
4、执行脚本(脚本传至手机设备执行)
adb push C:\Users\SQ\Desktop\1.txt /sdcard
adb shell monkey -f /sdcard/1.txt -v 1
六、monkey日志管理
1、日志保存方法
(1)PC
adb shell monkey -v -v 100 >d:\1.log
(2)手机
adb shell
monkey -v 100 >/sdcard/1.log
(3)标准流和错误流分开保存
adb shell monkey -v 100 1>d:\1.log 2>d:\error.log
MonKeyRunner(Jython写,主要用于功能、框架级别测试应用)
一、MonKeyRunner简介
1、路径Android_SDK\tools
2、功能
(1)多设备控制
(2)功能测试
(3)可扩展自动化
3、环境搭建
(1)安装配置JDK环境
(2)安装android sdk
(3)安装Python
(4)monkeyrunner环境变量配置{Path}\Android_SDK\tools
(5)检测安装:控制台输monkeyrunner显示正确
二、MonkeyRunner API
1、MonkeyRunner:提供连接真机和模拟器、输入、暂停、警告框等方法
(1)alert() ——警告框
(2)choice() ——选项列表框
(3)help() ——API帮助文档
(4)input() ——输入
(5)sleep() ——暂停
(6)waitForConnection(float timeouts,string deviceid) ——等待设备连接
from com.android.monkeyrunner import MonkeyRunner as mr
device = mr.waitForConnection(5,'127.0.0.1:62001')
2、MonkeyDevice:提供了安装卸载程序包、开启Activity、发送按键和点击事件、运行测试包等方法
(1)broadcastIntent() ——发送广播
(2)drag() ——拖动
(3)getProperty() ——获取当前设备属性
(4)getSystemProperty() ——获取当前设备属性
(5)installPackage(string path) ——安装应用
(6)instrument() ——执行测试用例
(7)press() ——按键
(8)reboot() ——重启
(9)removePackage(string package) ——删除指定Package
(10)shell() ——执行命令
(11)startActivity() ——启动应用
(12)touch(integer x,integer y,integer type) ——点击(DOWN、UP、DOWN_AND_UP)
3、MonkeyImage:在测试过程中用来保存各种格式的测试截图,并可以进行图像对比
(1)convertToBytes() ——转换图像格式
(2)getRawPixel() ——获取当前坐标像素元素
(3)getRawPixellnt() ——获取当前坐标像素值
(4)sameAs() ——图像对比
(5)writeToFile() ——保存图像文件
(6)getSubImage() ——截取子图像
(7)takeSnapshot() ——屏幕截图
from com.android.monkeyrunner import MonkeyImage as mi
screenshot=device.takeSnapshot()
screenshot.writeToFile(r'C:\Users\S\Desktop\kaoyan.apk', 'png')
4、实践案例(APP安装与启动,启动后登录、截图并保存)
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi
device = mr.waitForConnection()
device.installPackage(r'C:\Users\S\Desktop\kaoyan.apk')
package='com.tal.kaoyan'
activity='com.tal.kaoyan.ui.activity.SplashActivity'
runcomponent=package+'/'+activity
device.startActivity(component=runcomponent)
mr.sleep(3)
device.touch(618,895,'DOWN_AND_UP')
mr.sleep(1)
device.touch(804,67,'DOWN_AND_UP')
mr.sleep(1)
device.touch(57,373,'DOWN_AND_UP')
mr.sleep(1)
device.type('user')
device.touch(152,480,'DOWN_AND_UP')
mr.sleep(1)
device.type('password')
mr.sleep(1)
device.touch(331,634,'DOWN_AND_UP')
screenshot=device.takeSnapshot()
screenshot.writeToFile(r'C:\Users\S\Desktop\kaoyan.png', 'png')
执行脚本
monkeyrunner 'c:\1.py'
MonKey和MonkeyRunner的不足之处
1、元素定位依赖于坐标点,稳定性差
2、不支持跨平台使用
3、没有成熟系统的管理框架
4、只适用于冒烟测试,检测APP稳定性
以上是关于测试总结笔记——Appium自动化——测试工具MonkeyMonkeyRunner的主要内容,如果未能解决你的问题,请参考以下文章
Appium学习笔记——Appium初探,下载与安装以及初步的录制尝试