IOS操作系统上执行monkey测试

IOS操作系统不像Android系统那么方便,各种限制也比较多,目前我的建议还是直接在模拟器上执行monkey测试。如果需要在真机上面执行,可以参考文档: http://testerhome.com/topics/2523

本文介绍怎么使用开源工具CrashMonkey进行IOS的monkey测试,步骤如下:

一、安装测试环境
(1)MAC OS

(2)XCode

(3)Ruby,至少1.8版本以上

Ruby的安装方法见:http://blog.csdn.net/li_huifeng/article/details/44456925,大致一下几 步:

1、安装RVM:

curl -L https://get.rvm.io | bash -s stable

2、载入RVM环境

source ~/.rvm/scripts/rvm

3、检查RVM安装是否成功

rvm -v

4、安装Ruby环境

rvm install 2.0.0

5、设置Ruby版本

rvm 2.0.0 --default

6、重新设置Ruby的默认源 

gem source -r https://rubygems.org/  

gem source -a https://ruby.taobao.org

7、验证是否重新设置成功

gem sources -l

二、安装CrashMonkey,参考链接:https://github.com/mokemokechicken/CrashMonkey

1、安装命令:gem install crash_monkey --no-ri --no-rdoc

三、使用CrashMonkey

1、使用命令:crash_monkey -a APP_NAME or APP_PATH -w DEVICE

四、直接使用instruments命令执行monkey:

instruments -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate -w EE564527-433A-42E3-92B8-F73A3EC0C8E7 /Users/xiehao/Temp/MYBPortal.app  -e UIASCRIPT /Users/xiehao/program/CrashMonkey/bin/crash_monkey_result/UIAutoMonkey.js -e UIARESULTSPATH  /Users/xiehao/program/CrashMonkey/bin/crash_monkey_result





iOS Monkey 测试方案

Step 1. brew install libimobiledevice
Step 2. brew install -HEAD ideviceinstaller
Step 3. brew install imagemagick
Step 4. gem install smart_monkey
上面这三部都执行成功就可以执行了,具体执行看说ReadMe https://github.com/vigossjjj/CrashMonkey4IOS 或者直接 smart_monkey -h

CrashMonkey4IOS

iOS Monkey Test Tool.

简要说明:
  1. 支持真机测试、模拟器测试
  2. 支持收集系统日志(Systemlog)、崩溃日志(Crashlog)、instrument行为日志
  3. 支持测试报告截图,绘制行为轨迹
  4. 支持测试设备信息收集
  5. 使用最新版的UIAutoMonkey,加入UI HolesApplication Not Repsonding ("ANR")的处理,添加custom.js作为入口脚本.
  6. 加入tuneup依赖
  7. 修改UIAutoMonkey.js中截图策略,为每个Event Action进行截图
  8. 支持测试执行过程中App进入后台,自动恢复(测试不会block)
系统及环境要求:
  1. 安装Ruby运行环境,建议不要使用OS X自带版本,可自行使用RVM安装最新版的Ruby。建议使用淘宝镜像安装,速度比较快,$ sed -i -e 's/ftp\.ruby-lang\.org\/pub\/ruby/ruby\.taobao\.org\/mirrors\/ruby/g' ~/.rvm/config/db
  2. 确保gem可用,也建议使用淘宝镜像 gem sources --remove https://rubygems.org/;gem sources -a http://ruby.taobao.org/;gem sources -l
  3. 安装Homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  4. 建议Xcode 6.x +
必要依赖安装:
  1. brew install -HEAD ideviceinstaller
  2. brew install libimobiledevice
  3. brew install imagemagick
使用说明:
安装Release版

gem install smart_monkey, 执行入口: 终端下直接使用smart_monkey

安装开发版

直接clone本项目, 执行入口: /CrashMonkey4IOS/bin/smart_monkey

执行命令

smart_monkey -a ${App_BunnelID}

smart_monkey -a com.ajbapp.com id....

参数说明:
  • -a: 指向被测程序的BundleID(不可缺省)。e.g.-a com.mytest.app
  • -w: 指向测试设备的UDID,可以通过$instruments -s devices进行设备id的查看,若缺省则默认指向第一台设备(模拟器或真机)。e.g.-w 26701a3a5bc17038ca0465186407b912375b35a7
  • -n: monkey测试的执行次数,默认为1次。e.g.-n 3
  • -d: 测试报告地址,默认为当前目录下的smart_monkey_result文件夹下。e.g.-d ~/my-monkey-test-result
  • -t: 执行时间,单位为秒。e.g.-t 60
  • -s: 指向被测app的.dSYM文件,若出现crash,解析crash为明文。e.g.-s testapp.dSYM
  • -c: 自定义的配置集路径,参数必须为目录,目录下必须包含custom.js,若使用handler,目录下需存在名为handler的文件夹,用于存放相关文件。e.g.-c /my/path/custom_cfg

    如果使用custom_cfg必须遵守如下目录结构:

    custom_cfg
    ├── custom.js
    └── handler
    ├── buttonHandler.js
    └── wbScrollViewButtonHandler.js
  • --event-number: 定义Monkey测试的总事件数,默认为50。e.g.--event-number 100

  • --compress-result: 对测试过程中截取的图片进行压缩,以节省空间开销。e.g.--compress-result 50%

  • --detail-count: 定义报告详情中记录的事件总数,默认为50,即在报告当中展示最近的50次随机事件,且进行操作示意绘制。e.g.--detail-count 100

  • --show-config: 打印当前的配置信息,即custom.js。e.g.--show-config

  • --drop-useless-img: 删除除展示在报告当中的其余截图,以节省空间开销,如,一轮Monkey测试共产出截图100张,参数--detail-count设置为20,那么使用--drop-useless-img会删除其余80张截图。e.g.--drop-useless-img

  • --list-app: 打印当前连接的真机及模拟器中所安装的app。e.g.--list-app

  • --list-devices: 打印当前所有可用设备。e.g.--list-devices

  • --reset-ios-sim: 重启模拟器。e.g.--reset-ios-sim

  • --version: 打印smart_monkey的版本号。e.g.--version

⇒  CrashMonkey4IOS/bin/smart_monkey -h
Usage: smart_monkey [options]
-a app_name Bundle ID of the desired target on device(Required)
-w device Target Device UDID(Required)
-n run_count How many times monkeys run(default: 1)
-d result_dir Where to output result(default: ./smart_monkey_result)
-t time_limit_sec Time limit of running
-s dsym_file Use .dSYM file to symbolicating crash logs
-c custom_cfg_path Indicate confige lib directory path, not a file path.
--event-number event_number The monkey event number(default: 50)
--compress-result compress_rate
compress the screenshot images to save disk space!(example: 50%)
--detail-count detail_event_count
How many events to show in detail result page(default 50)
--show-config Show Current Configuration custom.js
--drop-useless-img Delete the un-displayed images of detial page.
--list-app Show List of Installed Apps in iPhone/iPhone Simulator
--list-devices Show List of Devices
--reset-ios-sim Reset iPhone Simulator
--version print smart monkey version

报告



IOS操作系统上执行monkey测试的更多相关文章

  1. python程序如何脱离ide而在操作系统上执行

    IDE就像一个婴儿的摇篮,当程序开发好了之后,打包成一个在OS运行的软件,这是算法落地的重要一步.如果只能在IDE上运行,那这个软件有什么意义呢?接下来我就得想办法,把我的程序迁移到win操作系统上执 ...

  2. 对当前目录下的所有APK包执行Monkey测试,并自动保存Crash日志

    适用平台:Android,代码几个月前写的,有问题请及时回复.本代码会依次安装当前目录下的APK安装包,之后执行Monkey测试,然后卸载掉换下一个,继续重复执行,如出现Cransh,会自动保存在当前 ...

  3. iOS打上线包或者测试包详细流程

    首先登陆苹果官方开发者账号:http://developer.apple.com 进入到如下界面 之后进入如下界面:点击第二项创建证书 整个流程如下图4步 然后按照如下图片进行配置即可 接下来去创建C ...

  4. iOSApp -Monkey测试

    IOS操作系统不像Android系统那么方便,各种限制也比较多,目前我的建议还是直接在模拟器上执行monkey测试.如果需要在真机上面执行,可以参考文档: http://testerhome.com/ ...

  5. Android Monkey测试

    Monkey测试1——Monkey的使用 原文地址: http://www.douban.com/note/257029872/ (转自豆瓣,版权属于豆瓣及豆瓣网友,如有冒犯请见谅并联系我们) Mon ...

  6. Monkey测试log的保存与分析

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  7. Android自动化之Monkey测试(二)

    本文主要从以下方面进行分享. 一.查看应用包名二.Monkey启动三.Monkey停止四.Monkey命令五.日志分析 一.查看应用包名 大多数时候,我们都是对特定的应用进行monkey测试,因此需要 ...

  8. Monkey测试结果分析

    Monkey测试结果分析 什么是monkey Monkey 测试是 Android 自动化测试的手段之一,它通过模拟用户的按键输入.触摸屏输入等,测试设备多长时间出现异常.Monkey 是一个命令行工 ...

  9. 在iOS模拟器上安装程式的ios-sim

    针对iOS装置进行开发时,绝大部分开发者采用的工具都是官方的Xcode.问题是负责图像设计和开发管理人员,却不一定熟悉Xcode的操作,这时ios-sim便是一个解决方案. 曾经从事iOS开发的朋友, ...

随机推荐

  1. 【Leetcode 371】Sum of Two Integers

    问题描述:不使用+是或-操作符进行整数的加法运算 int getSum(int a, int b); 我的思路:把整数化成二进制进行运算,注意类型是int,也就是要考虑负数.关于负数的二进制表示可见之 ...

  2. 通俗讲讲FPGA

    通俗讲讲什么是FPGA. FPGA出现之前,所有集成电路都可以看成雕塑家,但是雕成一个成品,往往要浪费很多半成品和原料,这就是ASIC的制造. 后来FPGA出现了,FPGA就是块橡皮泥,什么硬件电路都 ...

  3. GOF23设计模式之原型模式(prototype)

    一.原型模式概述 1.通过new产生一个对象需要非常繁琐的数据准备和访问权限,则可以使用原型模式. 2.就是java中的克隆技术,以某个对象为原型,复制出新的对象,显然,新的对象具备原型对象的特点. ...

  4. Java将对象写入文件读出——序列化与反序列化

    Java类中对象的序列化工作是通过ObjectOutputStream和ObjectInputStream来完成的. 写入: File aFile=new File("e:\\c.txt&q ...

  5. eclipse安装freemarker插件【转】

    今天在Eclipse上安装Freemarker的插件,一开始装官方网站上的推荐插件,装上后发现除了Freemarker代码高亮显示其他什么效果都没有,郁闷.在javaeye论坛上请教了下,据说官网上的 ...

  6. java代码=====实现修改while()

    总结: package com.mmm; public class cse { public static void main(String[] args) { // int count=0;你妹,我 ...

  7. 项目中Map端内存占用的分析

      最近在项目中开展重构活动,对Map端内存尽量要省一些,当前的系统中Map端内存最高占用大概3G左右(设置成2G时会导致Java Heap OOM).虽然个人觉得占用不算多,但是显然这样的结果想要试 ...

  8. C语言经典面试题 与 C语言面试宝典

    1 预处理 问题1:什么是预编译?何时需要预编译? 答: 预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作.主要处理#开头的指令.如拷贝#include包含的文件代码.替换# ...

  9. 【UVa】208 Firetruck(dfs)

    题目 题目     分析 一开始不信lrj的话,没判联通,果然T了. 没必要全部跑一遍判,只需要判断一下有没有点与n联通,邻接表不太好判,但无向图可以转换成去判n与什么联通. 关于为什么要判,还是因为 ...

  10. 数据库设计不推荐使用Bool类型

    参见博文:http://blog.csdn.net/zhang_xinxiu/article/details/8521673