测试总结笔记——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原理

python+appium自动化测试-重复执行测试用例

Appium学习笔记--安装与配置

Appium学习笔记——Appium初探,下载与安装以及初步的录制尝试

Appium学习笔记——Appium初探,下载与安装以及初步的录制尝试

Mac + Appium学习之常用的IOS自动化测试API总结