本文转自:https://blog.csdn.net/hebbely/article/details/78901466

简述:

本文介绍几款流行的 Android应用自动化测试工具。

Monkey测试:随机测试,压力测试,运行在模拟器或实际设备中。

MonkeyRunner测试:操作简单,可录制测试脚本,可视化操作,主要生成坐标的自动化操作,移植性不强

Robotium 测试

Ronaorex 测试

Appium 测试

UI Automator 测试

TestBird测试

1、Monkey 测试

Monkey 即猴子,Monkey 测试,就像一只猴子,在电脑面前,乱敲键盘在测试。

Monkey 测试主要用于Android 应用程序压力测试的小工具,主要目的就是为了测试app是否会Crash。

Monkey 测试原理:Monkey 是 Android 中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。通常也称随机测试或者稳定性测试。Monkey 测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

1 > Monkey 特征

A. 测试的对象仅为应用程序包,有一定的局限性。

B. Monky 测试使用的事件流数据流是随机的,不能进行自定义。

C. 可对 MonkeyTest的对象,事件数量,类型,频率等进行设置。

D.Monkey 虽可根据一个指定的命令脚本发送按键消息,但其不支持条件判断,也不支持读取待测界面的信息来执行验证操作。

E.Monkey 运行在设备或模拟器上面,可以脱离PC运行,验证待测应用在这些随机性输入面前是否会闪退或者崩溃。

2 > Monkey 程序介绍
① Monkey 程序由 Android 系统自带,使用Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar;
② Monkey.jar 程序是由一个名为“ monkey ”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;
③ Monkey 命令启动方式:

a. 可以通过 PC 机 CMD 窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试

b. 在PC上 adb shell进入Android系统,通过执行monkey {+命令参数}来进行Monkey 测试

c. 在Android机或者模拟器上直接执行monkey命令,可以在Android机上安装Android终端模拟器

④ 对特定APP包进行测试的命令为 adb shell monkey -p <pakage.name>

3 > 实例

① 测试前提条件

a. 将手机恢复出厂设置

b. 恢复出厂设置后,进入设置-->关于手机-->高级设置-->勾选‘保持唤醒状态’

c. 在设置->安全中设置解锁图案以及PIN码

d. 连接 adb tool

e. 手机开启后台log(*#*#3646633#*#*),开启main log,, mobile log和net log

② 测试步骤

a. 使用USB线连接手机和电脑

b. 在电脑中输入Monkey命令:

adb shell monkey -p <package.name> --throttle 380 -v -s 3500 300000 >C:\monkey_log.txt

c. 在Monkey结束以后查看它停留的界面并且做一些简单的测试,如拨打电话,发送信息等

③ 测试结果

Monkey的测试结果可以通过monkey_log.txt 查看,如果测试结果正常,在log最后一行会有monkey finished显示并且手机运行正常。如果应用程序产生了应用程序不响应ANR(application notresponding)的错误,Monkey将会停止并报错,如果应用程序崩溃Crash或接收到任何失控异常,Monkey也会停止并报错。

a. 在运行Monkey命令时,遇到Crash或者ANR,就会自动终止。程序无响应的问题:在日志中搜索 “ANR”

b.崩溃问题:在日志中搜索“Exception” (如果出现空指针,NullPointerException) 肯定是有bug
例如在log最后一行显示crashed at event ####of 300000 using seed 3500 。

c.最后搜索“error”

一般我们执行Monkey时,在3万次以内发生Crash的话就认为Monkey是有问题的,要提交PR。

④ 提交 Monkey 的PR

在执行Monkey命令时发生Crash或者ANR时需要提交PR,具体提交MonkeyPR的规则如下:

a. 标题:在PR标题中加上[Monkey] 内容:主要要包含自己执行的命令以及在多少次发生crash

b. 内容:主要要包含自己执行的命令以及在多少次发生crash

c .其它:在PR上要附上相关的Monkey log还有手机后台开启的log,如果有相关的强制关闭的图片也可以贴上。

4 > Monkey 参数

Monkey命令:adb shell monkey -p <package.name> --throttle 380 -v -s 3500300000 > C:\monkey_log.txt,这个monkey命令,当monkey test过程中遇到Crash或者ANR,就会自动终止。

C:\monkey_log.txt指将Monkey 的log存在PC端的C盘根目录下。

常规类参数

1、 -help

作用:列出简单的用法

例:adb shell monkey -help 也可不写help

2、-v

作用:命令行上的每一个-v都将增加反馈信息的详细级别。
Level0(默认),除了启动、测试完成和最终结果外只提供较少的信息。

adb shell monkey -p com.shjt.map -v 100

Level1,提供了较为详细的测试信息,如逐个发送到 Activity 的事件信息。

adb shell monkey -p com.shjt.map -v -v 100

Level2,提供了更多的设置信息,如测试中选中或未选中的 Activity 信息。

adb shell monkey -p com.shjt.map -v -v -v 100

比较常用的是-v -v -v,即最多详细信息,一般会保存到指定文件中供开发人员查找bug原因时使用。

例:adb shell monkey -v 10

事件类参数

1、-s <seed>

作用:伪随机数生成器的seed值。如果用相同的seed值再次运行monkey,将生成相同的事件序列。

例:adb shell monkey -s 1483082208904 -v 10

2、--throttle <milliseconds>

作用:在事件之间插入固定的时间(毫秒)延迟,你可以使用这个设置来减缓Monkey的运行速度,如果你不指定这个参数,则事件之间将没有延迟,事件将以最快的速度生成。

注:常用参数,一般设置为300毫秒,原因是实际用户操作的最快300毫秒左右一个动作事件,所以此处一般设置为300毫秒。

例:adb shell monkey --throttle 300 -v 10

3、--pct-touch <percent>

作用:调整触摸事件的百分比。(触摸事件是指在屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作)

注:常用参数,此参数设置要适应当前被测应用程序的操作,比如一个应用80%的操作都是触摸,那就可以将此参数的百分比设置成相应较高的百分比。

例:adb shell monkey --pct-touch 100 -v 10

4、--pct-motion <percent>

作用:调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)
注:常用参数,需注意的是移动事件是直线滑动
例:adb shell monkey --pct-motion 100 -v 10

5、--pct-trackball<percent>
作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)
注:不常使用参数,现在手机几乎没有滚动球,但滚动球事件中包含曲线滑动事件,在被测程序需要曲线滑动时可以选用此参数。
例:adb shell monkey --pct-trackball 100 -v 10

6、--pct-nav<percent>
作用:调整基本的导航事件百分比。(导航事件由方向输入设备的上下左右按键所触发的事件组成)
注:不常用操作。
例:adb shell monkey --pct-nav 100 -v 10

7、--pct-majornav<percent>
作用:调整主要导航事件的百分比。(这些导航事件通常会导致UI界面中的动作事件,如5-way键盘的中间键,回退按键、菜单按键)
注:不常用操作。
例:adb shell monkey --pct-majornav 100 -v 10

8、--pct-syskeys<percent>
作用:调整系统事件百分比。(这些按键通常由系统保留使用,如Home、Back、Start Call、EndCall、音量调节)
注:不常用。
例:adb shell monkey --pct-syskeys 100 -v 10

9、--pct-appswitch<percent>
作用:调整Activity启动的百分比。(在随机的时间间隔中,Monkey将执行一个startActivity()调用,作为最大程度覆盖被测包中全部Activity的一种方法)
注:不常用。
例:adb shell monkey --pct-appswitch 100 -v 5

10、--pct-anyevent
作用:调整其他事件的百分比。(这包含所有其他事件,如按键、其他在设备上不常用的按钮等)
注:不常用。
例:adb shell monkey --pct-anyevent 100 -v 5

约束类参数

1、-p<allowed-package-name>
作用:如果你指定一个或多个包,Monkey将只允许访问这些包中的Activity。如果你的应用程序需要访问这些包(如选择联系人)以外的Activity,你需要指定这些包。如果你不指定任何包,Monkey将允许系统启动所有包的Activity。指定多个包,使用多个-p,一个-p后面接一个包名。
注:常用参数。
例:adb shell monkey -p com.Android.browser -v 10

2、-c<main-category>
作用:如果你指定一个或多个类别,Monkey将只允许系统启动这些指定类别中列出的Activity。如果你不指定任何类别,Monkey将选择谢列类别中列出的Activity,Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY。指定多个类别使用多个-c,每个-c指定一个类别。
注:不常用。

3、--dbg-no-events
作用:设置此选项,Monkey将执行初始启动,进入一个测试Activity,并不会在进一步生成事件。为了得到最佳结果,结合参数-v,一个或多个包的约束,以及一个保持Monkey运行30秒或更长时间的非零值,从而提供了一个可以监视应用程序所调用的包之间转换的环境。
注:不常用。

4、--hprof
作用:设置此选项,将在Monkey生成事件序列前后生成profilling报告。在data/misc路径下生成大文件(~5Mb),所以要小心使用。
注:不常用。

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

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

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

8、--kill-process-after-error
作用:通常,当Monkey由于一个错误而停止时,出错的应用程序将继续处于运行状态。设置此项,将会通知系统停止发生错误的进程。注意,正常(成功)的结束,并没有停止启动的进程,设备只是在结束事件之后简单的保持在最后的状态。

9、--monitor-native-crashes

作用:监视并报告Andorid系统中本地代码的崩溃事件。如果设置--kill-process-after-error,系统将停止运行。

10、--wait-dbg

作用:停止执行中的Monkey,直到有调试器和它相连接。

样例:

adb shell monkey -p com.android.settings --throttle 380 -v -v -v -s 3500 300000 > E:\Test\monkey_log.txt

测试结果:

测试完成后均正确时会显示Monkey finished:

Events injected: 300
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=2 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=42700ms (0ms mobile, 0ms wifi, 42700ms not connected)
// Monkey finished

有bug时,会出现 error:

** Monkey aborted due to error.
Events injected: 8530
:Sending rotation degree=0, persist=false
:Dropped: keys=5 pointers=8 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=1016690ms (0ms mobile, 0ms wifi, 1016690ms not

connected)

2、 MonkeyRunner 测试

MonkeyRunner工具是使用 Jython (使用Java编程语言实现的Python)写出来的,它提供了多个API,通过MonkeyRunner API 可以写一个Python的程序来模拟操作控制Android设备app,测试其稳定性并通过截屏可以方便地记录出现的问题。

MonkeyRunner和Monkey没有直接的关系。Monkey是在设备/模拟器直接运行adb shell命令生成用户或系统伪随机事件流来进行测试的。

而MonkeyRunner则运行在PC上,需要通过服务器/客户端的的模式向设备或者模拟器上的android应用发送指令来执行测试。它支持自己编写插件,控制事件,随时截图,简而言之,任何你在模拟器/设备中能干的事情,MonkeyRunner都能干,而且还可以记录和回放。

1 > MonkeyRunner 特征
1)MonkeyRunner工具在工作站上通过API定义的特定命令和事件控制设备或模拟器(可控)

2)精确控制事件之间的事件

3)可以进行:点触屏、拖拽、长按、键盘事件

4)可以智能截图对比和判断

5)回溯出详细具体的BUG路径

2 > MonkeyRunner 优缺点

1) 能完全模拟人工所有操作

2) 有详细的API文档参考

3) 可以写出智能图像对比脚本

4) 支持 java 和 Python 两种语言脚本

5) 脚本移植性差

3 > MonkeyRunner测试类型

1)多设备控制

MonkeyRunnerAPI可以跨多个设备或模拟器实施测试套件。您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。

2)功能测试

MonkeyRunner可以为一个应用自动贯彻一次功能测试。您提供按键或触摸事件的输入数值,然后观察输出结果的截屏。

3)回归测试

MonkeyRunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。

4)可扩展的自动化

由于MonkeyRunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。除了使用MonkeyRunner API之外,您还可以使用标准的Python os和subprocess模块来调用Android Debug Bridge这样的Android工具。

4 > MonkeyRunner 工具

MonkeyRunner API 主要包括三个模块

1)MonkeyRunner:

此类提供连接真机和模拟器方法waitForConnection(float timeout,stringdeviceid),还提供了创建用户界面显示信息的alert()方法。

2)MonkeyDevice

代表一个设备或模拟器。此类提供了安装和卸载程序包、开启Activity、发送按键和点击事件、运行测试包等方法

拖拉控件drag(tuple start,tuple end,floatduration,integer steps) //duration手势持续时间

按键press(string keycode,dictionary type) //keycode:KEYCODE_HOME,.. type:DOWN ,UP,DOWN_AND_UP...

安装应用 installPackage(pc端存放apk路径)

启动应用starActivity(package+'/'+activity)//一个参数

点击touch(integer x,integer y, integer type)//type:DOWN,UP,DOWN_AND_UP...

输入type(string message)

截屏takeSnapshot()

3)MonkeyImage

这个类提供了捕捉屏幕的方法。

在测试过程中用来保存测试截图,将位图保存为各种格式,并可以比较两个MonkeyImage对象,将image保存到文件等。

图像对比sameAs(MonkeyImage other,float percent)//对比的相似度,结果boolean类型

图像保存writetoFile(string path,string format)

5 > MonkeyRunner 环境搭建

Monkeyrunner的环境搭建,需要安装以下工具:jdk、android sdk、python编译器。

MonkeyRunner 环境搭建
Eclipse中MonkeyRunner环境搭建

6 > MonkeyRunner 运行

运行有两种方式

① 在CMD命令窗口直接运行monkeyrunner

② 使用Python编写测试代码文件,在CMD中执行monkeyrunner xxx.py运行

不论使用哪种方式,您都需要调用SDK目录的tools子目录下的monkeyrunner命令。

1)模拟器启动

在运行monkeyrunner之前必须先运行相应的模拟器或连接真机,否则monkeyrunner无法连接到设备

运行模拟器有两种方法:1、通过eclipse中执行模拟器 2、在CMD中通过命令调用模拟器

这里介绍通过命令,在CMD中执行模拟器的方法

emulator -avd AVD_test
上面命令中 AVD_test 是指模拟器的名称。

2)交互对话环境

cmd 运行 monkeyrunner 交互命令“monkeyrunner” 或:

monkeyrunner -plugin

3)cmd 终端导入monkeyrunner所要使用的模块

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage

然后便可以开始利用monkeyrunner进行测试了。

3) 模拟器连接

device=MonkeyRunner.waitForConnection(6,’emulator-5554′)

参数1:超时时间,单位秒,浮点数,默认是无限期地等待。
参数2:指定的设备名称device_id,默认为当前设备(手机优先,其次为模拟器)

4) app 安装

模拟器启动成功后,安装apk

device.installPackage('F:\\QQyinle_439.apk')

其中,参数为apk的相对路径。成功返回true,且模拟器的IDLE界面可看到安装apk 图标

5)app 启动

device.startActivity(component="package名/.activity")

如何获取一个app的package名和activity?
使用

#apk路径中一定不能有空格
aapt dump badging F:\QQyinle_439.apk

aapt dump badging F:\QQyinle_439.apk > F:\log.txt

所以:

device.startActivity(component=" com.tencent.qqmusic/.activity.AppStarterActivity ")

命令执行后,模拟器上的app被启动。启动成功后,便可以向模拟器发送如按键、滚动、截图、存储等操作了

6)

问题:CMD运行提示monkeyrunner不是内部或外部命令,也不是可运行的程序或批处理文件。

解决:电脑环境变量未配置,将monkeyrunner所在目录配在环境变量里。

变量名:Path

变量值:D:\android\android-sdk-windows\tools;D:\android\android-sdk-windows\platform-tools

7 > 样例(Monkeyrunner运行python脚本)

test.py

#-*-UTF-8-*-
#如果导入的模块起了别名,后面就必须使用别名
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi

#连接设备或虚拟器。
#参数1,超时时间,单位秒,默认无限期等待;参数2,设备名称,默认当前设备
device=mr.waitForConnection(2,'192.168.56.101:5555')

#向设备或模拟器安装apk,以下两种方式都是对的
device.installPackage('D:\\baiduliulanqi_186.apk')
#device.installPackage('D:/baiduliulanqi_186.apk')

#启动APP
device.startActivity('cmp=com.baidu.browser.apps/com.baidu.browser.framework.BdBrowserActivity')
mr.sleep(3)

#点击搜索框 #指定位置发送触摸事件
device.touch(100,100,'DOWN_AND_UP')
mr.sleep(1)

#输入查询词
device.type('test')
mr.sleep(1)

#点击回车键 #发送指定类型键码的事件
device.press('KEYCODE_ENTER','DOWN_AND_UP')
mr.sleep(2)

#截图
result=device.takeSnapshot()

#保存到文件
result.writeToFile('./test.png','png')

#清除搜索框
device.touch(100,100,'DOWN_AND_UP')
mr.sleep(1)
device.press('KEYCODE_DEL','DOWN_AND_UP')
mr.sleep(2)


#字符串发送到键盘
#device.type('字符串')
device.type('Findyou')

#唤醒设备屏幕
#锁屏后,屏幕关闭,可以用下命令唤醒
device.wake()

#重起手机
device.reboot()

#模拟滑动
#device.drag(X,Y,D,S)
#X 开始坐标
#Y 结束坐标
#D 拖动持续时间(以秒为单位),默认1.0秒
#S 插值点时要采取的步骤。默认值是10
device.drag((100,1053),(520,1053),0.1,10)

运行测试脚本test.py:monkeyrunner test.py
monkeyrunner 录制和回放
录制:monkey_recorder.py

from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
device=mr.waitForConnection()
recorder.start(device)

在 cmd 命令行运行 monkeyrunner monkey_record.py,会弹出一个MonkeyRecord窗口界面该窗口的功能:

A. 可以自动显示手机当前的界面

B. 自动刷新手机的最新状态

C. 点击手机界面即可对手机进行操作,同时会反应到真机,而且会在右侧插入操作脚本

D.

wait: 用来插入下一次操作的时间间隔,点击后即可设置时间,单位是秒

Press a Button:用来确定需要点击的按钮,包括menu、home、search,以及对按钮的press、down、up属性Type Something:用来输入内容到输入框

Fling:用来进行拖动操作,可以向上、下、左、右,以及操作的范围

Export Actions:用来导出脚本,不需要后缀名,也可以添加后缀名.mr

Refresh Display:用来刷新手机界面,估计只有在断开手机后,重新连接时才会用到

用录制函数导出操作的脚本,通过monkey_playback.py函数回放之前的操作

回放:monkey_playback.py,

import sys
from com.android.monkeyrunner import MonkeyRunner as mr

CMD_MAP = {
'TOUCH':lambda dev,arg:dev.touch(**arg),
'DRAG': lambda dev,arg:dev.drag(**arg),
'TYPE': lambda dev,arg:dev.type(**arg),
'PRESS': lambda dev,arg:dev.press(**arg),
'WAIT': lambda dev,arg:mr.sleep(**arg)
}

def process_file(f,device):
for line in f:
(cmd,rest)=line.split('|')
try:
rest = eval(rest)
except:
print 'unable to parse options'
continue
if cmd not in CMD_MAP:
print 'unknown command: ' + cmd
continue
CMD_MAP[cmd](device, rest)
def main():
file = sys.argv[1]
f = open(file,'r')
device = mr.waitForConnection()
process_file(f,device)
f.close()
if __name__ = '__main__'
main()

8 > 其他

#卸载设备或模拟器中的APK ,参数为APK包名
device.removePackage('cn.richinfo.thinkdrive')
print ('Uninstall Success!')

#发送指定类型指定键码的事件
#device.press(参数1:键码,参数2:触摸事件类型)
#参数1:见android.view.KeyEvent
#参数2,如有TouchPressType()返回的类型-触摸事件类型,有三种。
#1、DOWN 发送一个DOWN事件。指定DOWN事件类型发送到设备,对应的按一个键或触摸屏幕上。
#2、UP 发送一个UP事件。指定UP事件类型发送到设备,对应释放一个键或从屏幕上抬起。
#3、DOWN_AND_UP 发送一个DOWN事件,然后一个UP事件。对应于输入键或点击屏幕。
以上三种事件做为press()参数或touch()参数

#按下HOME键
device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)
#按下BACK键
device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)
#按下下导航键
device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP)
#按下上导航键
device.press('KEYCODE_DPAD_UP',MonkeyDevice.DOWN_AND_UP)
#按下OK键
device.press('KEYCODE_DPAD_CENTER',MonkeyDevice.DOWN_AND_UP)

KeyCode:
home键 KEYCODE_HOME
back键 KEYCODE_BACK
send键 KEYCODE_CALL
end键 KEYCODE_ENDCALL
上导航键 KEYCODE_DPAD_UP
下导航键 KEYCODE_DPAD_DOWN
左导航 KEYCODE_DPAD_LEFT
右导航键 KEYCODE_DPAD_RIGHT
ok键 KEYCODE_DPAD_CENTER
上音量键 KEYCODE_VOLUME_UP
下音量键 KEYCODE_VOLUME_DOWN
power键 KEYCODE_POWER
camera键 KEYCODE_CAMERA
menu键 KEYCODE_MENU

3、Robotium测试

Robotium 是一款常用的免费的 Android 自动化测试工具软件,适用于为不同的安卓版本和子版本黑盒测试自动化。Robotium 测试是用java写的。提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium 对 Activity,Dialog,Toast,Menu 都是支持的。软件开发人员经常把它描述为Android Selenium。事实上,Robotium是一个单元测试库。

为了自动化测试需要修改程序源代码。该工具也不适合与系统软件的交互,它不能锁定和解锁智能手机或平板电脑。Robotium 也没有录制回放功能,也不提供截图。

详情请参考:

Robotium自动化测试框架使用教程

4、Ronaorex测试

Ranrex 是一款不仅可以支持最新Android版本,也支持从Android2.2开始的早期版本和分支版本。

Ranorex的优势是它有详细的截屏报告。它能通过Wifi连接智能手机和平板电脑。
一个自动化测试工程师通过这个Android工具可以不用XML数据格式来详细编写数据驱动的测试。Ranorex工作室使自动化测试工程师只要点击鼠标就可容易地创建测试。它允许详细声明额外的程序模块,来用于在后期开发周期中测试更复杂的场景。

它是一个商业的移动应用工具,其许可价格为1990欧元。不过Ranorex搜索功能相当慢;它需要30秒来完成这样的操作。我们必须为Ranorex配备apk文件设备,否则无法通过这个工具实现自动化测试,因为它只能在APK文件设备上工作。

5、Appium测试

这是一个可以为iOS和Android做自动化测试的框架。它是一个开源工具。它支持从2.3及以后的安卓版本。Appium利用WebDriver接口运行测试。它支持多种编程语言,如java,C #,Ruby和其他在WebDriver库中的语言。

它可以控制移动设备上的Safari和Chrome。这样测试移动网站可使用Appium和这些浏览器。
但一些自动化测试工程师抱怨说,它没有详细的报告。其弱点还有减少了在移动设备上XPath支持。

Appium环境搭建(Windows版)

6、UI Automator 测试

这款工具是谷歌发布的。它支持从4.1开始的安卓版本。UI Automator能够与各种Android软件产品交互,包括系统中的应用。这使UI Automator可以锁定和解锁智能手机或平板电脑。

通过这个工具创建的脚本可以在许多不同的安卓平台上执行。它可以重现复杂的用户操作动作。
UI Automator也可以利用一个设备的外部按键,如回放键、音量调节键、开关键来控制。
它可以集成测试框架TestNG。在这种情况下,UI Automator可以生成丰富和详细的报告,类似于Ranorex生成报告。另外,这个工具搜索功能非常快。

软件测试专家发现UI Automator是一款适用于许多Android平台的移动应用测试。它是一款最适合安卓应用测试的工具之一,因为它是由谷歌专门为这个操作系统发布的。

通常约有80%的新软件bug能在所有支持的平台上重现。因此,一个可执行在广泛使用的平台上的移动测试工具是可以发现高达80%的缺陷。其余20%将会在其他平台上被发现。这意味着,在大多数情况下,在更少的测试平台上完整地做测试比在众多平台上匆忙测试更好。

uiautomatorviewer :一个图形界面工具来扫描和分析应用的UI控件。

uiautomator :一个测试的Java库,包含了创建UI测试的各种API和执行自动化测试的引擎

参考:

http://blog.csdn.net/u010961631/article/details/9616581

https://www.jianshu.com/p/c900efe8c982

https://segmentfault.com/a/1190000004619487

7、TestBird 测试

TestBird自动回归测试平台为手游/APP开发者提供APP自动化回归测试,简单点击自动生成图片用例;多台手机同时执行用例回归;基线对比,找出问题;调整基线,维护测试用例;一键生成报告,全面提升测试效率和质量。

TestBird最初是从手游测试开始起步,在手游圈积累起很高的知名度,目前也在逐步向APP测试领域进军,同时TestBird也加入了智能硬件的测试领域。基于全球首创的对象识别技术,TestBird可以深入到移动App&游戏内部所有功能的深度解析能力。TestBird建立了云手机、云测试和云分析三大测试平台,通过自助App功能测试、远程真机调试、真机兼容性测试、真人体验测试、 真人压力测试和崩溃分析等,为移动应用提供从研发到上线再到运营的一站式质量管理服务。

几款Android 应用自动化测试工具的更多相关文章

  1. 老李分享:android app自动化测试工具合集

    老李分享:android app自动化测试工具合集   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...

  2. Android 手机自动化测试工具有哪几种?

    1.Monkey是Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出.实际上该工 ...

  3. 八款Android 开发者必备的小工具

    Photo from https://www.airpair.com 在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大 ...

  4. katalon系列一:初识Katalon Studio自动化测试工具

    最近准备把公司的系统搞上UI自动化,先是自己用Python+selenium+pytest写了一个框架,开始写case的时候发现效率极其慢.原因为: (1)开发为提高前端响应时间,使用前端路由技术,一 ...

  5. 推荐五款Android 应用的自动化测试工具

    如今自动化测试已经应用到每天的测试中.这不足为奇,因为自动化测试在测试过程中节约了时间,还能避免包括人为因素造成的测试错误和遗漏. 自动化测试工具选择很多.一些是开源的,一些非常贵.一些自动化工具是几 ...

  6. 移动周报:十款最实用的Android UI设计工具

    上一周可以说是一个不断Mark周,从最实用的Android UI设计工具.免费移动应用测试框架推荐,到HTML5开发框架等等,各种开发工具.框架精彩丰呈,看得小伙伴们是不亦乐乎.当然,还有不容错过的M ...

  7. 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库

    工欲善其事,必先利其器 本文版权归翟士丹(Stan Zhai)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. 原文地址:http ...

  8. Airtest网易开源的一款UI自动化测试工具

    Airtest网易开源的一款UI自动化测试工具 1 Airtest 简介Airtest Project是网易游戏内部工具团队开发并开源的一款UI自动化测试工具,据说曾经获得谷歌力挺. AirtestI ...

  9. Android自动化测试工具调研

    原文地址:Android自动化测试工具调研 - Stars-One的杂货小窝 Android测试按测试方式分类,可分为两种:一种是传统逻辑单元测试(Junit),另外一种则是UI交互页面测试. 这里详 ...

  10. 工具推荐:2016年最佳的15款Android黑客工具

    黑客技术,曾被认为是专家的专有领域,但随着技术的崛起和移动安全领域的进步,黑客技术已经变得越来越普遍.随着人们越来越依赖于智能手机和其它的便携式设备来完成他们的日常活动,我们有必要了解一些Androi ...

随机推荐

  1. mysql生成随机数的函数

    例:update [tablename] set [columnname] = FLOOR( 6546541 + RAND() * (987987989 - 6546541)) where ? FLO ...

  2. Mysql数据库简单常用语句

    Mysql数据库简单常用语句 1.命令连接数据库 mysql -h 127.0.0.1 -u root -p 2.新增用户 GRANT SELECT on 数据库.* to 用户名@登录主机 iden ...

  3. WPF 实现雪花效果

    雪花控件类: class MM:Control { DispatcherTimer dispatcherTimer = new DispatcherTimer(); public MM() { dis ...

  4. CCIE DC Multicast Part 4.

    Hi Guys, Part 4 of my CCIE DC multicast article is presented below, in this article we are going to ...

  5. vmware15 nat模式下虚拟机能够ping通宿主机,宿主机无法平通虚拟机,nat网卡地址为192.168.0.1,网关为192.168.0.2.

    如图所示 最后网上教程看到,最后是修改nat网卡的巨型帧好的,废话不多数上图. 具体知道什么原因,开启这个就好了.

  6. 容器逃逸 --with docker.sock

    容器逃逸 --with docker.sock 本人对于容器逃逸的基本理解就是用户从容器中逃出去到宿主机里去了. 本文意在记录一个使用 docker.sock 来进行容器逃逸的方法. 首先随便来个镜像 ...

  7. 【RTOS】RTOS汇编入门 (1)

    引言 为了提高效率,进行更为底层的操作,RTOS常采用汇编语句,因此了解常用的汇编语句,很有必要 汇编指令 1..equ:类似于c中的#define,表声明常量 例如:.equ PSW 0x10000 ...

  8. spring 创建 bean 的 几种方式

    Spring 创建 bean 有 多种方式: 自动创建,手动创建注入: 方式1: 使用 Spring XML 配置: <bean id=''id  class=''class / > 方式 ...

  9. 亲测:一个完整Vue开发环境搭建。

    参考博客飞机: https://www.cnblogs.com/zhaomeizi/p/8483597.html

  10. Java的引用(强软弱虚)

    Java中引用相关的类 类 名 说明 ReferenceQueue 引用队列 与某个引用类绑定,当引用死亡后会进入这个队列对象标记为垃圾(并不代表回收了)后或虚引用的对象被回收后,会加入到引用队列 H ...