几款Android 应用自动化测试工具-博为峰网校

  • 格式:doc
  • 大小:238.50 KB
  • 文档页数:20

几款Android 应用自动化测试工具

简述:

本文介绍几款流行的 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 <>

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 <> --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 <> --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值再次运行monkey,将生成相同的事件序列。

例:adb shell monkey -s 1483082208904 -v 10

2、--throttle

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

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

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

3、--pct-touch

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

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

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

4、--pct-motion

作用:调整motion事件百分比。(motion事件是由屏幕上某处一个down事件、一系列伪随机的移动事件和一个up事件组成)

注:常用参数,需注意的是移动事件是直线滑动

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

5、--pct-trackball

作用:调整滚动球事件百分比。(滚动球事件由一个或多个随机的移动事件组成,有时会伴随着点击事件)

注:不常使用参数,现在手机几乎没有滚动球,但滚动球事件中包含曲线滑动事件,在被测程序需要曲线滑动时可以选用此参数。

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

6、--pct-nav

作用:调整基本的导航事件百分比。(导航事件由方向输入设备的上下左右按键所触发的事件组成)

注:不常用操作。

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

7、--pct-majornav

作用:调整主要导航事件的百分比。(这些导航事件通常会导致UI界面中的动作事件,如5-way键盘的中间键,回退按键、菜单按键)

注:不常用操作。

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

8、--pct-syskeys

作用:调整系统事件百分比。(这些按键通常由系统保留使用,如Home、Back、Start Call、EndCall、音量调节)

注:不常用。

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

9、--pct-appswitch

作用:调整Activity启动的百分比。(在随机的时间间隔中,Monkey将执行一个startActivity()调用,作为最大程度覆盖被测包中全部Activity的一种方法)

注:不常用。

例:adb shell monkey --pct-appswitch 100 -v 5

10、--pct-anyevent

作用:调整其他事件的百分比。(这包含所有其他事件,如按键、其他在设备上不常用的按钮等)

注:不常用。

例:adb shell monkey --pct-anyevent 100 -v 5