zoukankan      html  css  js  c++  java
  • Android Monkey自己主动化測试

    前言

    假设你做Android开发,还没有使用过Monkey进行測试,那么今天看到这篇文章,希望能解决你Android測试中的一些问题。起码能帮你省点測试的时间而且发现很多其它的问题。

    Monkey简单介绍

    Monkey是一个可执行在模拟器和实际设备中的Android命令行自己主动化測试工具,它能够模拟伪随机的用户事件流,比如点击、触摸、手势等。你能够使用Monkey对正在开发的程序进行压力測试。

    Monkey的特征:
    • 測试的对象为程序包名,通过-p參数指定。
    • Monkey測试使用的事件流、数据流是随机的,不能进行自己定义。

    Monkey的使用

    Monkey是Android系统自带,有Java语言编写的自己主动化測试工具,在Android文件系统中的存放路径为:/system/framework/monkey.jar

    monkey.jar程序是由一个名为"monkey"的Shell脚本来启动运行,shell脚本在Android文件系统的存放路径为:/system/bin/monkey

    基本的语法

    adb shell monkey [option] <event-count>

    參数

    [Option] -p

    用于约束限制,用此參数指定一个包或多个包(Package,即APP)。指定之后,Monkey仅仅同意系统启动指定的APP,假设不指定,Monkey将同意系统启动全部的APP

    [Option] -v
    用于指定反馈信息级别(信息级别就是日志的具体程度),总共分为三个级别,分别对于參数例如以下所看到的:

    日志级别:Level 0

    演示样例:adb shell monkey -p com.example.list -v 100

    说明:缺省值,仅提供启动提示、測试完毕和终于结果等少量信息

    日志级别:Level 1

    演示样例:adb shell monkey -p com.example.list -v -v 100

    说明:提供较为具体的日志信息,包含发送到Activity的事件信息

    日志级别:Level 2

    演示样例:adb shell monkey -p com.example.list -v -v -v 100

    说明:提供最为具体的日志信息,包含測试中选择和未选中的Activity信息

    [option] --kill-process-after-error

    说明:用于指定当前应用程序错误发生时,是否停止其执行。假设指定此參数,当用户应用程序错误发生时,应用程序停止而且保持在当前的状态

    [option] --throttle <milliseconds>

    说明:用于指定Monkey操作事件的间隔时间,单位是毫秒

    [option] --pct-trackball <percent>

    说明:调整轨迹事件的百分比

    [option] --pct-nav <percent>

    说明:调整基本导航事件的百分比

    [option] --pct-majornav <percent>

    说明:调整主要导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

    [option] --pct-anyevent <percent>

    说明:调整其它类型事件的百分比

    <event-count>

    说明:指定随机事件的次数

    Example

    记录一下我常常使用的monkey命令,就是组合使用了以上參数:

    adb shell monkey -p com.example.listview -v -v -v --kill-process-after-error  --pct-trackball 0 --pct-nav 0 --pct-majornav 0 --pct-anyevent 0 --throttle 500 500000 > /mnt/sdcard/monkey.log 2 >&1 &

    自己主动化脚本

    写了一个脚本供自己主动化測试,省的每次都输入一大串monkey命令了,代码例如以下:

    #!/bin/bash
    
    REPORT_DIR=./report
    DATE_TIME=`date  "+%Y%m%d"`
    
    #remove old report files
    echo "remove old reporting files..."
    if [ -d $REPORT_DIR ]; then
    	rm -r $REPORT_DIR
    fi
    
    #mkdir for new report files
    echo "report files will be stored in $REPORT_DIR"
    mkdir $REPORT_DIR
    
    #run monkey on phone system
    echo "Monkey is running"
    adb shell monkey -p com.example.listview  -v -v -v --kill-process-after-error  --pct-trackball 0 --pct-nav 0 --pct-majornav 0 --pct-anyevent 0 --throttle 500 500000 > $REPORT_DIR/monkey_$DATE_TIME.log
    
    #grep creash log
    echo "catch crash log..."
    grep -A 10 -h -r CRASH $REPORT_DIR > $REPORT_DIR/crash_$DATE_TIME.log
    


  • 相关阅读:
    iOS获取系统时间
    iOS面试-assign与retain
    iOS-检测网络可连接性
    iOS-ASI异步下载图片
    iOS-NSString值为Unicode格式(字符串编码转换成中文编码)
    iOS-模态视图动画
    iOS-UIScrollView滚动视图(转)
    iOS-NSFileManager
    iOS-self.用法
    iOS-iphone网络编程总结
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3946302.html
Copyright © 2011-2022 走看看