【手机自动化测试】monkey测试

时间:2022-11-15 03:52:45

1             概述

Monkey测试是Android自动化测试的一种手段。Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常。

 

当Monkey程序在模拟器或真实设备运行的时候,程序会产生一定数量或一定时间内的随机模拟用户操作的事件, 如点击,按键,手势等, 以及一些系统级别的事件。通常也称随机测试或者稳定性测试。


2            测试步骤

2.1   测试前提条件

  • 1.将手机恢复出厂设置
  • 2.恢复出厂设置后,进入设置-->关于手机-->高级设置-->勾选‘保持唤醒状态’
  • 3.在设置->安全中设置解锁图案以及PIN码
  • 4.连接 adb tool
  • 5.手机开启后台log(*#*#3646633#*#*),开启main log,, mobile log和net log
  •  1.使用USB线连接手机和电脑
  • 2.在电脑中输入Monkey命令:adb shell monkey  -p <your.package.name> --throttle 380 -v -s 3500 300000> C:\monkey_log.txt

2.2   测试步骤

 

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

 

2.3   测试结果

  • 在运行Monkey命令时,遇到Crash 或者ANR,就会自动终止,Monkey的测试结果可以通过monkey_log.txt查看,如果测试结果正常,在log最后一行会有monkey finished显示并且手机运行正常
  • 通过monkey_log.txt查看测试结果,在log最后一行显示crashed at event ####of 300000 using seed 3500,如下图:

如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错,如果应用程序崩溃或接收到任何失控异常,Monkey也会停止并报错,一般我们执行Monkey时,在3万次以内发生Crash的话就认为Monkey是有问题的,要提交PR。

2.4   提交Monkey的PR

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

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

 

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

 

 

  • 其它:在PR上要附上相关的Monkey log还有手机后台开启的log,如果有相关的强制关闭的图片也可以贴上。
  • Monkey是一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。Monkey包括许多选项,它们大致分为四大类:
    • 基本配置选项,如设置尝试的事件数量。
    • 运行约束选项,如设置只对单独的一个包进行测试。
    • 事件类型和频率。
    • 调试选项。


3     Monkey使用说明

3.1  命令行说明

          以下主要介绍下平时测试中所用到的命令:

  • Monkey命令:adb shellmonkey  -p <your.package.name> --throttle 380 -v -s 3500 300000> C:\monkey_log.txt,这个monkey 命令,当monkey test 过程中遇到Crash 或者ANR,就会自动终止.
  • 其中-p <allowed-package-name> 后面接着的是你所要跑的Monkey的包名,如果用此参数指定了一个或几个包,Monkey将只允许系统启动这些包里的Activity。如果你的应用程序还需要访问其它包里的Activity(如选择取一个联系人),那些包也需要在此同时指定。如果不指定任何包,Monkey将允许系统启动全部包里的Activity。要指定多个包,需要使用多个-p选项,每个-p选项只能用于一个包。
  • --throttle <milliseconds> 在事件之间插入固定延迟。通过这个选项可以减缓Monkey 的执行速度。如果不指定该选项,Monkey将不会被延迟,事件将尽可能快地被产成。命令中的380就是延迟时间,单位为毫秒。
  • -v 命令行的每一个-v 将增加反馈信息的级别。Level 0( 缺省值) 除启动提示、测试完成和最终结果之外,提供较少信息。Level 1 提供较为详细的测试信息,如逐个发送到Activity 的事件。Level 2 提供更加详细的设置信息,如测试中被选中的或未被选中的 Activity 事件。
  • -s <seed> 伪随机数生成器的 seed 值。如果用相同的seed 值再次运行Monkey ,它将生成相同的事件序列。命令中的300000 代表monkey event 执行的次数,3500表示Seed值(影响随机事件的发生顺序)
  • C:\monkey_log.txt 指将Monkey 的log存在PC端的C盘根目录下。

 

  • 关于Monkey的其它命令,可以通过adb shell monkey来查看:

 

 

3.2    被测试程序包名清单

Package name

com.android.email

com.mobbeel.signature

com.android.spare_parts

com.mobisystems.office_registered

com.google.android.voicesearch

com.tencent.qqpimsecure

com.shazam.android

com.google.android.apps.genie.geniewidget

tunein.player

com.inizz

com.mediatek.StkSelection

cn.com.tiros.android.beforehand.navidog

viva.reader

com.shinycore.picsayfree

com.android.calculator2

com.android.launcher2

com.magmamobile.app.podkast

com.facebook.katana

com.tencent.mtt

com.android.development

com.android.providers.downloads.ui

com.android.soundrecorder

com.mediatek.camera

com.android.calendar

com.sohu.inputmethod.sogou

mobi.infolife.installer

com.mtime

com.google.android.apps.books

com.android.vending

com.sina.weibo

com.twidroidpro

com.ringdroid

com.magmamobile.app.podkast.us

com.bbt.sm.pro

com.android.browser

com.google.android.apps.maps

com.google.android.youtube

com.google.android.talk

com.google.android.gm

com.google.android.googlequicksearchbox

com.taobao.taobao

com.alibaba.mobileim

com.google.android.street

com.layar

com.android.contacts

com.android.settings

com.cooliris.media

com.mediatek.bluetooth

com.mediatek.filemanager

com.mediatek.FMRadio

com.accuweather.android.simpleweatherlite_tcl

com.tencent.qq

com.android.deskclock

com.nimbuzz

com.netease.rpmms

Easy_Installer

Yahoo Mail

com.youku.phone

com.uc.browser

com.yahoo.mobile.client.android.news

也可以通过命令adb shell –>ls–>cd data–>ls来查看包名