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


    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 shell monkey  -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来查看包名

  • 相关阅读:
    保留字段数组,一定要用char
    VirtualBox安装CentOS 7及其相关配置
    istringstream是支持>>一个bool的,但为什么不用?
    用vector实现一个变长数组
    C语言为什么被const声明的变量不是一个常量表达式
    不咬文嚼字的理由
    int变量赋值给char变量的本质
    #include <> 和 #include "" 的区别
    C++中匿名对象应当是一个左值
    js实战之-间断文字滑动
  • 原文地址:https://www.cnblogs.com/zhuzhubaoya/p/7867496.html
Copyright © 2020-2023  润新知