移动性能测试 iOS Monkey 测试方案 [大家可以通过 gem install smart_monkey 进行安装了]

vigossjjj · 2015年05月10日 · 最后由 hz 回复于 2019年12月25日 · 45497 次阅读
本帖已被设为精华帖!

再次声明,如有任何问题,请先去 github 查阅,再在 github 提 issue,这样也方便其他同学查阅。

github issue 传送门

先为小白用户说明下安装:

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 Holes与Application 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}

参数说明:

  • -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

报告




如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 327 条回复 时间 点赞

支持,这就准备去试试

好东西啊!

赞👍啊,好东西啊

赞。。刚用完 ui-auto-monkey 来测公司的 app,总感觉缺点什么

卧槽,纯干货。。

哈哈,看看能不能通过查看 ViewController 来做些遍历啥的~~

@ vigossjjj 不错,受教了!

@snape1992 : 你用 ui-auto-monkey,能定位到 crash 么?我之前用的时候,只能用 Simulator,连 iphone 6 plus 真机都用不了。

@vigossjjj, 你会对 crash 进一步解析么,就是 log 中 crash 信息都是二进制文件,会去解析成对应的代码么?通过 dSYM 文件分析 crash 么?

我在用 IOS8.1 以上系统跑 Monkey 时,跑完后再进入应用(大概跑几个小时),还会自动跑,只能关机。主要是我写了一个脚本,如果 Crash 后重启应用继跑,此时应用打开就会自动跑,还有 Monkey 加一起,就会出现一个莫名的问题,请问有什么方法解决么?

#8 楼 @snake 1.ui-auto-monkey 不支持 crash 定位与导出,我是结合 CrashMonkey 修改之后支持真机 crash 监测,ui-auto-monkey 真机应该也可以执行,具体阻塞原因要看你的错误日志。2.这个建议不错,每次 Monkey 测试的包只要保留 xxx.app.dSYM 文件就可以做进一步解析,我会加到 TODO LIST。实现后会 @ 你。

我的执行:

crash_monkey -a com.soho -w 58da41b1191f7df3d26dc59e79e9c69bbf68609c -n 3 -t 500

提示:/Users/wangxing/.rvm/gems/ruby-2.0.0-p643/gems/crash_monkey-0.3.0/lib/crash_monkey/monkey_runner.rb:185:in `find_app_path': Invalid AppName (RuntimeError)。

#12 楼 @gaoxing200851 你用的不是我维护的 CrashMonkey 是 gem 安装的吧?那个是原先的,不支持真机执行。用我的改造过的:https://github.com/vigossjjj/CrashMonkey4IOS

#13 楼 @vigossjjj gem 安装是什么意思?我用 gem 命令安装了 ruby。之前执行你这个报错,提示 crash_monkey 不是命令,我就执行了 crash_monkey --no-ri --no-rdoc 这个。

#10 楼 @yun9041 不太清楚你描述的问题是什么,能具体点么?是不是这个意思:你希望你的 iOS app 在执行 monkey 中如果 crash 了那么就记录下来但不阻塞你继续跑 monkey?就像 android 的 monkey 一样?

#15 楼 @vigossjjj 为什么我在 bin 下执行还是/Users/wangxing/.rvm/gems/ruby-2.0.0-p643/gems/crash_monkey-0.3.0/lib/crash_monkey/monkey_runner.rb:185:in `find_app_path': Invalid AppName (RuntimeError)?难道写在环境变量中了?

我执行 crash_monkey 时报如下错,MAC OS 和 Xcode 版本问题吗?
MAC OS:10.10.2
Xcode:6.3
/Users/sky/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in require': cannot load such file -- erubis (LoadError)
from /Users/sky/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in
require'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey/monkey_runner.rb:7:in <module:UIAutoMonkey>'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey/monkey_runner.rb:3:in
'
from /Users/sky/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in require'
from /Users/sky/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in
require'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey.rb:2:in <top (required)>'
from /Users/sky/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in
require'
from /Users/sky/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in require'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/bin/crash_monkey:8:in

'

#16 楼 @vigossjjj 就是现在 IOS8.1 以上系统,跑完 Monkey 结束后,下次打开应用(不执行 Monkey)同样会自动在操作,7 的系统就没有问题,跑完结束下,下次打开应用不会自动操作

#14 楼 @gaoxing200851 我之前也是这样,是不是你没有改环境变量?

#20 楼 @yun9041 你指的是在那改呢?

#22 楼 @yun9041 我的自动生成有 [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session as a function的环境变量,不知道你说的是要添加什么进去呢?

#17 楼 @gaoxing200851 和你说了用我改过的 CrashMonkey,你用的是老的,app_path 必须为 iPhone Simulator 的 app 路径不支持真机。

你自动生成的是 RVM,把 Crash_monkey 加入到环境变量中试下:export PATH=$PATH:/Users/sky/Desktop/monkey/CrashMonkey4IOS-master/bin

26楼 已删除

#24 楼 @vigossjjj @yun9041 好无奈呀,设置了 export PATH=$PATH:/Users/wangxing/Desktop/test/CrashMonkey4IOS/bin。
依旧提示/Users/wangxing/.rvm/gems/ruby-2.0.0-p643/gems/crash_monkey-0.3.0/lib/crash_monkey/monkey_runner.rb:185:in `find_app_path': Invalid AppName (RuntimeError),不知道为什么要找这里的?

28楼 已删除
29楼 已删除
30楼 已删除
31楼 已删除

能不能出个安卓版的哟

#32 楼 @x746560359 在计划中,后边会做,@doctorq 会操刀 Android Monkey 大改造哈。

@vigossjjj ,18 楼提的问题有方法解决不?

#34 楼 @yun9041 erubis 模块没有安装, gem install erubis,我的文档写的不是太清楚,现在正在修改,今天会提交,到时候你可以 checkout 最新版

#34 楼 @yun9041 我刚更新了代码和说明文档,https://github.com/vigossjjj/CrashMonkey4IOS 有问题试试 ok 了不

#36 楼 @vigossjjj 非常感谢,我现在试下,之前的错误已解决

#36 楼 @vigossjjj Checkout 了一份新的代码和文档,现在可以正式跑起来了,有个疑问就是时间如何控制?主要是能过事件数来做控制吗?numberOfEvents

#38 楼 @yun9041 有参数-t 你可以先-h 看一下帮助文档,目前有些地方不匹配,我会慢慢改主要-t -n 2 个参数较常用,事件配置主要在 custom.js 中

为什么 lib/ui-auto-monkey 和 bin/crash_monkey_result 下都有 UIAutoMonkey.js 和 custom.js,你这里有 copy 动作吗?意义是?

#40 楼 @gaoxing200851 我的理解的有的,bin/crash_monkey_result 这个下面是最终的测试报告,会把那些需要的文件 Copy 过来,你的可以正常跑了吗?现在发现跳出 APP 不会回来,一直显示:App has hanged! Re-Launch it!

#9 楼 @snake dSYM 解析的功能我 check in 了

#41 楼 @yun9041 会回来,它代码有个进程在监控,会拉起的。

#41 楼 @yun9041 一直显示:App has hanged! Re-Launch it!?首先确认有没有安装 libimobiledevice。并且看一下在出现 App has hanged! Re-Launch it! 时后台有没有 idevicedebug 进程

#44 楼 @vigossjjj 没有,需要单独安装吗?deviceconsole, libimobiledevice 这两个需要如何安装?

#45 楼 @yun9041 我都写了,自己看

#46 楼 @vigossjjj 能回复下我的问题吗 40 楼的。还有我可以提个建议吗,能不能在 comman_helper 这个监控文件中,修改下策略,去判断如果当前的 app 不是之前传进来的 app,就重新启动下 app,不然跳到相机界面半天是出不来的。

#44 楼 @vigossjjj libimobiledevice 已经安装,但后台没有 idevicedebug 进程。

#47 楼 @gaoxing200851 如果不在当前 app,instrument 就是 block 我对这个做了处理,下次有问题请贴出日志和截图,不然没法分析,另外,如果有好的建议可以提交 pull request!

#48 楼 @yun9041 现在正常了吗?在 app 被拉入后台后 30s,会打印日志 App has hanged! Re-Launch it!,并且此时调用 idevicedebug 去恢复 app 到前台,你自己看一下,有问题截图 + 日志。

#50 楼 @vigossjjj 目前只看到有如下的日志:貌似没有调用 idevicedebug,有没有像日志一样查看是否在调用 idevicedebug
2015-05-12 09:13:19 +0000 Debug: target.captureRectOnScreenWithName("{origin:{x:0.00,y:0.00}, size:{height:568.00,width:320.00}}", UIScreen, "monkey-2015-05-12T09-13-19-541Z")
2015-05-12 09:13:19 +0000 Screenshot captured.
App has hanged! Re-Launch it!
App has hanged! Re-Launch it!
App has hanged! Re-Launch it!
App has hanged! Re-Launch it!
App has hanged! Re-Launch it! Control+c 后出现有如下错误
Ctail finished: system.log
/Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey/command_helper.rb:46:in each': Interrupt
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey/command_helper.rb:46:in
block in run_process'
from /Users/sky/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/open3.rb:217:in popen_run'
from /Users/sky/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/open3.rb:99:in
popen3'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey/command_helper.rb:26:in run_process'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey/monkey_runner.rb:84:in
block (2 levels) in run_a_case'
from /Users/sky/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/timeout.rb:66:in timeout'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey/monkey_runner.rb:83:in
block in run_a_case'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey/monkey_runner.rb:414:in watch_syslog'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey/monkey_runner.rb:81:in
run_a_case'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey/monkey_runner.rb:49:in block in run'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey/monkey_runner.rb:46:in
times'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/lib/crash_monkey/monkey_runner.rb:46:in run'
from /Users/sky/Desktop/monkey/CrashMonkey4IOS-master/bin/crash_monkey:42:in

'

#51 楼 @yun9041 check out 最新版试试,出现 App has hanged! Re-Launch it! 后看后台进程是有没有 idevicedebug,另外看一下你是否安装了 idevicedebug,命令行执行看看。

#52 楼 @vigossjjj 现在访问不了呢,我另一台电脑没有安装 idevicedebug,用命令执行 idevicedebug 也可以。另后台进程用 ps -al 可以吧?

#53 楼 @yun9041 那就不清楚了。。。。你没安装 libimobiledevice 也能用 idevicedebug。。。难道你自己本地编译的?自己先看看吧。

#54 楼 @vigossjjj 应该还是安装 libimobiledevice 的问题,定位代码有跑到这一步:idevicedebug -u #{device} run #{app} >/dev/null 2>&1 & 但还是没有进程,libimobiledevice 的安装是用你的 reset.sh 有自动安装的

#55 楼 @vigossjjj 再补充下,idevicedebug 命令可以这样使用吧,报错如下:是不是可以断定 libimobiledevice 问题?

suqiudandeMacBook-Pro:~ zhangqingyun$ idevicedebug -u 6cfbb3803dea494bb077344bcb38666a23756682 run PAAnyDoorSDK.app
Segmentation fault: 11

太感谢了正好要这方面的资料呢

我可以指定 n 为 100,但是 100 中的一次 test(1/100) 的时长是在哪里设置的呢?

是timeout.timeout(time_limit_sec + 5) do吗?
def time_limit_sec
      (@options[:time_limit_sec] || TIME_LIMIT_SEC).to_i

time_limit_sec 没初始化,默认用的是 TIME_LIMIT_SEC 吗?单位是 s?
在 custom.js 中设置 monkey.config.numberOfEvents = 30000; // turn off to make clear that we want minutes 貌似也没有作用。

#58 楼 @gaoxing200851 可以用 t,不指定貌似默认是 100S,你的跳出去 app 后回来是怎么做到的,直接命令能执行吗?idevicedebug -u 6cfbb3803dea494bb077344bcb38666a23756682 run PAAnyDoorSDK.app

不用执行啊,你看他的代码,代码有判断啊。

@tmpline = ""
        stdin.close
        app_hang_monitor_thread = Thread.start{
          sleep 30
          while true
            current_line = @tmpline
            sleep 30
            after_sleep_line = @tmpline
            if current_line == after_sleep_line
              puts "App has hanged! Re-Launch it!"
              relaunch_app(device, app)
            end
          end


    def relaunch_app(device,app)
      `idevicedebug -u #{device} run #{app} >/dev/null 2>&1 &`
    end

#60 楼 @gaoxing200851 我知道,已经执行到这一步,但就是调不起 idevicedebug,安装目录如下:单独执行报错:
suqiudandeMacBook-Pro:~ zhangqingyun$ idevicedebug -u 6cfbb3803dea494bb077344bcb38666a23756682 run PAAnyDoorSDK.app
Segmentation fault: 11

#61 楼 @yun9041 是不是没装好?

@vigossjjj 运行起来了 出现过这样的问题 是我配置上需要改什么么

2015-05-13 08:43:46 +0000 Debug: target.tapWithOptions({x:"629", y:"924"}, {touchCount:"1", duration:"0", tapCount:"1"})
2015-05-13 08:43:46 +0000 Debug: tap point is not within the bounds of the screen
2015-05-13 08:43:28 +0000 Error: Script threw an uncaught JavaScript error: tap point is not within the bounds of the screen on line 135 of UIAutoMonkey.js
2015-05-13 08:43:28 +0000 Stopped: Script was stopped by the user

#59 楼 @yun9041 你要用 bundleid 不是 app.....

#63 楼 @macavity custom.js 中设置 fram,点击区域。

#65 楼 @vigossjjj 争取做成一个好项目!

#64 楼 @vigossjjj 嗯,现在可以了,主要是受这个命令介绍影响了,那里面-a 是 app_name

MacBook-Pro:~ zhangqingyun$ crash_monkey 
Usage: crash_monkey [options]
    -a app_name                      Target Application, abs path to simulator-compiled .app file or the bundle_id of the desired target on device(Required)
    -w device                        Target Device UDID(Required)
    -n run_count                     How many times monkeys run(default: 2)

#67 楼 @yun9041 回帖的时候看下下面帖子的提示。

#67 楼 @yun9041 什么?受这个命令影响了?写的很清楚啊 “Target Application, abs path to simulator-compiled .app file or the bundle_id of the desired target on device(Required)”,希望你以后养成仔细读文档的好习惯吧,只能帮你到这了。。。PS:而且那段解释我是照搬 Appium 的。。。。

#66 楼 @lihuazhang 看这趋势,大家对 iOS Monkey 热度高昂啊,一定好好搞哈,谁有兴趣可以一起参与。

#65 楼 @vigossjjj

我用的是默认的

monkey.config.frame = {
origin: { x: 0, y: UIATarget.localTarget().frontMostApp().rect().origin.y+10},
size: { width: UIATarget.localTarget().frontMostApp().rect().size.width, height: UIATarget.localTarget().frontMostApp().rect().size.height-2}
};// Ignore the UIAStatusBar area, avoid to drag out the notification page.

我这次的报错是

2015-05-14 02:28:01 +0000 Default: {"width":1024.0000335703464,"height":768.0000447604625}
2015-05-14 02:28:01 +0000 Debug: target.flickFromTo({x:"286", y:"782"}, {x:"723", y:"482"})
2015-05-14 02:28:01 +0000 Debug: start point is not within the bounds of the screen
2015-05-14 02:28:09 +0000 Error: Script threw an uncaught JavaScript error: start point is not within the bounds of the screen on line 154 of UIAutoMonkey.js
2015-05-14 02:28:09 +0000 Stopped: Script was stopped by the user

那我应该怎么改呢 这个 target.flickFromTo 有设置的地方么?

#71 楼 @macavity 你遇到的这个问题可能是脚本在执行过程中点击之前有转屏的事件,导致屏幕坐标处理异常,安装或者执行脚本中的异常可以参看
https://github.com/vigossjjj/CrashMonkey4IOS/blob/master/Troubleshooting.md
另外,有什么问题可以第一时间反馈到 github 的项目里,会有人进行收集跟进。

#72 楼 @softblank 之前是有发生过转屏 所以后面跑不下去了 但是后面换了一个设备之后 一开始跑就出错了 后来我把设备弄成竖屏的就可以跑了

我会去关注 github 的上的 trouble shooting 的 非常感谢你们的分享

对了如果有需求的话 提在哪里呢? 因为目前的执行步骤都是随机的 如果发现了 app 的 crash 然后无法通过重新执行来验证 是否有考虑过通过一个 id 记录一份坐标的脚本 然后后续就可以通过这个 id 来重新执行了

#73 楼 @macavity 更新下连接https://github.com/vigossjjj/CrashMonkey4IOS/blob/master/Troubleshooting.md;
旋屏是 monkey 中随机的一个事件,可能是点击或者拖拽、震动等,后续会对旋屏动作后的屏幕坐标变更进行处理,在旋屏出发后更新当前屏幕尺寸范围,共同学习 LZ 的分享。

#73 楼 @macavity 1.Monkey 本来就是随机事件,为了尽可能多的发现 crash。2.报告都有记录,只不过目前写死 50 个事件,这 50 个事件在报告中都有截图绘制,只能帮你到这了。

#73 楼 @macavity
问题 1:github 项目右边有个 issue 的 icon 好像是个惊叹号,可以把问题进行提交,希望描述的具体些,有日志更好,包括运行时的设备信息等,我们会关注;
问题 2:你所说的方案可以实现,不过我个人的感觉是对于我们测试 app 来说结果报告中会收集执行终止前的最后 50 个事件场景截图应该更可靠,为什么说呢?首先点击事件是不针对测试 app 中的具体对象的,只是单纯的在设备屏幕范围内点击,而我们的 app 又大不相同,运行时的场景也不一定完全相同(如果网络影响,订制的推送事件,弹出提示等)回溯事件流不一定复现问题,而根据报告截图人为分析定位模拟来的更准确,所谓有图有真相。

2015-05-14 04:46:10 +0000 Debug: target.flickFromTo({x:"1", y:"-1"}, {x:"1", y:"1"})
2015-05-14 04:46:10 +0000 Debug: start point is not within the bounds of the screen
2015-05-14 04:46:11 +0000 Error: Script threw an uncaught JavaScript error: start point is not within the bounds of the screen on line 154 of UIAutoMonkey.js
2015-05-14 04:46:11 +0000 Stopped: Script was stopped by the user
2015-05-14 12:46:12.057 instruments[15546:1198721] Attempting to set event horizon when core is not engaged, request ignored
2015-05-14 12:46:12.057 instruments[15546:1198721] Attempting to set event horizon when core is not engaged, request ignored

会出现点到屏幕外面的情形

#77 楼 @app_testing 请把问提反馈到 github 上,谢谢

#76 楼 @softblank 这个想法主要是从安卓的 monkey 而来 因为安卓的 monkey 可以根据一个 seed number 来产生坐标序列 所以同一个坐标序列可以用来跑一样的随机步骤。 目前用 monkey 主要是给 app 做类似长时间操作的测试,如果发现问题然后开发根据问题来处理了相关的 crash。 那如何验证的确修好了, 在安卓上我们就用当时的 seed 再测试一遍。 所以才会在 IOS 上也想问是否有类似的可能性。

#79 楼 @macavity 额。。。。感觉你们抓一个 crash 根本好高。。。需要再通过 seed 跑一边。。。如果事件过多导致验证时间过长。。。那岂不是开销很大。。。建议你们 AndroidMonkey 和 iOSMonkey 看齐,对每个事件做记录,保留现场,直接看日志 + 流程截图就可定位问题。

IOS8 及以上系统上,当 Monkey 脚本结束时,有时候应用没有结束,会一直运行,为什么呢?

由于平时以工作为主,所以 github 中的维护不一定很急时,希望大家谅解 ^ ^

#80 楼 @vigossjjj 跑 monkey 的时候 都是已经经过了一定的功能测试 再来做 monkey 的验证 因为这些 crash 并不是在手工测试的过程中发现的 也不是一定重新的 所以才采取这样的方式来操作 是有一定的道理和原因的

@vigossjjj 可能是我太蠢了,我一路安装下来,运行 crash_monkey 还是 command not found

#84 楼 @testly 麻烦你把 ruby 的版本还有在/CrashMonkey4IOS/bin/下运行 crash_monkey 的日志截图发下我看看有什么能帮你的。

#85 楼 @softblank 要不加个 Q 聊一下?方便吗?

@vigossjjj 如果跑 monkey 的时候应用已经启动了,然后运行脚本,会报 Webkit Threading Violation -initial use of WebKit from
a secondary thread 的错误,另外感觉初始化的时候感觉有点慢,要等好一会才会开始执行脚本

#90 楼 @app_testing 你跑原生的 UIAUtomation 在应用启动情况下也报那个错误,这个是苹果自己的机制,后边可以优化,看看能不能把 app 拉后台什么的。

#90 楼 @app_testing 你的 iOS 是 8.3 系统,8.2 及一下会自动重启,这个貌似和系统有关,暂时验证了下

有什么办法在 crash 时自动截屏吗

每个事件都会有截图,感觉太多了,跑一晚上占用好多空间啊,是不是保持最新几十张就可以了(多的都删除)就像产的报告一样。

#93 楼 @idoit007 已经截了额。。每一步都截图。。你还要咋截图。。。。?

#94 楼 @yun9041 我也发现这个问题了,最新的提交加入了对结果截图的压缩,但是没有删除之前的图片,后边我会加入一个参数控制是否删除,以及保证最新的多少张图片,目前加了 --compress-result 你可以添加这个参数对结果图片进行压缩,不过是在执行后压缩,使用前要执行一下 reset.sh 或者自行安装 imagemagick,剩下的自己看吧,都有参数说明。

就是在只有 crash 的时候才截图,其它时候如果没有 crash 就不截图

#97 楼 @idoit007 是这样的,你的这个需求我只能这样理解,首先你无法预知哪一时刻会 crash,在 crash 前截图???除非是先知。。。。我想最完美的解决方案是:我暴露出一个执行参数,这个参数你可以拟定截图数比如 50,这样我会建立一个 50 的队列,保证永远是最新的 50 张截图,其余的都删除,目前是没有删除截图都有保留。只能帮你到这了。。。实在不行你可以自己去改,源码都有还怕有想法么??

楼主大人,deviceconsole, libimobiledevice 模拟器跑的话,这两个也都需要安装么

#99 楼 @xxfcxx 别这么称呼…好不适应…那个模拟器的适配我还没有做,其次那 2 个东东模拟器肯定不需要,最后 deviceconsole 我加入工程了不必自行安装,libimobiledevice 必装!不过后期我会加入工程尽量省去自行安装的步骤,目前有一个不太稳定的 reset.sh 帮助你完成安装,你可以尝试一下如果执行成功那么你的依赖就都配好了!

#100 楼 @vigossjjj 还不睡。对了 关于这个工具 啥时候 给我们讲个公开课?

#101 楼 @lihuazhang 等我完善好吧,我们内部在试用,现在还不算成熟。

能给份文档吗,小白使用的。自己主负责 Android 测试, IOS 有点陌生,看上去不知道怎么用。

#104 楼 @idoit007 ??有 Readme 的,项目首页就是啊。。。。。https://github.com/vigossjjj/CrashMonkey4IOS

我运行的时候为什么是一直报证书的错误,是哪里没有设置对吗?
Target failed to run: Permission to debug com.tencent.mqq was denied. The app must be signed with a development identity (e.g. iOS Developer).

#106 楼 @fengytn 你是腾讯 QQ 项目组的?你找你们内部要签了开发证书的包,装上就可以跑了,iOS 的做自动化测试必须为开发证书 Debug 的

可以试试 ynm3k 的类似解决方案

#108 楼 @alanlai ynm3k 怎么了?你想说什么?

#107 楼 @vigossjjj 是说这个不能测发布包,只能测开发证书的包是么?

#110 楼 @fengytn 不是就这个不能测发布包,这个是做 iOS 测试最基本的基础知识好吧

大家有没有出现过 ios8 以上系统跑 Monkey 经常出现死机,而且只能强制关机重启。

拿了最新版本跑了一下 出以下的问题

在 iPad1 8.3 的真机上跑了一下, 目前的问题是 :设置了 500 秒的运行时间 经常跑了 1 分钟不到就结束了 被的 App 并没有发生什么 crash 的情况 大家有遇到过么?

在执行 第一步的时候,Step 1. brew install libimobiledevice
openssl 无法下载影响使用么?
==> Downloading https://raw.githubusercontent.com/DomT4/LibreMirror/master/OpenS

curl: (22) The requested URL returned error: 404 Not Found
Error: Failed to download resource "openssl"
Download failed: https://raw.githubusercontent.com/DomT4/LibreMirror/master/OpenSSL/openssl-1.0.2.tar.gz

115楼 已删除

@yun9041 @xxfcxx @macavity 你们的问题最好去 github 提交 issue,这样其他人遇到相同问题,也可方便查阅。并且希望你们可以提高一下问题描述能力,提供日志,测试环境等信息,不然我真心很难去想象你当时的场景。。。我怎么去修复??

哥们 问一个问题!为什么我老是收集到其他的 crashlog ——》DTMobileIS.crash

#117 楼 @testly 我是抓了所有的 crash,包括系统的,没有做过滤,后边可以加上过滤。你可以去 git 提个需求

测试过程中,如果锁屏,目前只能人工解锁么。。。。然后 CrashMonkey 会自动继续执行下去。 。。。。好像不能设置模拟器永不锁

target.lockForDuration, 是脚本主动锁的么,能否如果不能自动解锁,能否在脚本中去掉锁屏操作?

我在 文件 mechanic.js 中 去掉了 lock: function(duration) { target.lockForDuration(duration); }, 这行,而且 在 'delay,cmd,orientation,location,shake,pinchScreen,drag,lock,backgroundApp,volume'.split(',').forEach 这行删除了 lock, 可还是能执行到锁屏。。。

#122 楼 @xxfcxx 在 custom.js 中将 lock 值改为 0, 另外你需要多读文档,你改的地方根本没有在 CrashMonkey4IOS 中调用,那是 tuneup 的。你现在可以去 git check 最新代码,或者通过 gem install smart_monkey 安装最新版

monkey.config.eventWeights = {
            tap: 100,
            drag: 10,
            flick: 10,
            orientation: 1,
            lock: 1,
            pinchClose: 1,
            pinchOpen: 1,
            shake: 1
        };

#123 楼 @vigossjjj 好的,多谢提醒

顶楼主 好贴收藏

请教@vigossjjj ,我在这台电脑上安装好之后提示如下信息,请帮忙看看,谢谢!

buildserver:bin buildserver$ ./smart_monkey
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require': cannot load such file -- smart_monkey/monkey_doctor (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in
require'
from /Library/Ruby/Gems/2.0.0/gems/smart_monkey-0.4.0/lib/smart_monkey.rb:2:in <top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in
require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require'
from ./smart_monkey:10:in

'

#126 楼 @qitaos sorry, 我的问题,昨天发布时候忘记更新 gemspec 文件导致有一个文件没有被加入,刚改好,你直接 gem unpdate smart_monkey 就可以了,更新到 0.4.1

#127 楼 @vigossjjj 我还以为是我 ruby 的问题。今天重新装了 ruby 和 smart_monkey,但是运行之后又有新的报错了。

Find new crash report: /Users/buildserver/Desktop/ios-monkey/smart_monkey_result/report_20150612114103/Run 1/DTMobileIS_2015-06-12-114254_iPhone.crash
/Users/buildserver/.rvm/gems/ruby-2.0.0-p643/gems/smart_monkey-0.4.1/lib/smart_monkey/monkey_runner.rb:327:in read': No such file or directory - /Users/buildserver/Desktop/ios-monkey/smart_monkey_result/report_20150612114103/orientation (Errno::ENOENT)
from /Users/buildserver/.rvm/gems/ruby-2.0.0-p643/gems/smart_monkey-0.4.1/lib/smart_monkey/monkey_runner.rb:327:in
rotate_imgs'
from /Users/buildserver/.rvm/gems/ruby-2.0.0-p643/gems/smart_monkey-0.4.1/lib/smart_monkey/monkey_runner.rb:132:in finish_running'
from /Users/buildserver/.rvm/gems/ruby-2.0.0-p643/gems/smart_monkey-0.4.1/lib/smart_monkey/monkey_runner.rb:50:in
block in run'
from /Users/buildserver/.rvm/gems/ruby-2.0.0-p643/gems/smart_monkey-0.4.1/lib/smart_monkey/monkey_runner.rb:46:in times'
from /Users/buildserver/.rvm/gems/ruby-2.0.0-p643/gems/smart_monkey-0.4.1/lib/smart_monkey/monkey_runner.rb:46:in
run'
from /Users/buildserver/.rvm/gems/ruby-2.0.0-p643/gems/smart_monkey-0.4.1/bin/smart_monkey:51:in <top (required)>'
from /Users/buildserver/.rvm/gems/ruby-2.0.0-p643/bin/smart_monkey:23:in
load'
from /Users/buildserver/.rvm/gems/ruby-2.0.0-p643/bin/smart_monkey:23:in <main>'
from /Users/buildserver/.rvm/gems/ruby-2.0.0-p643/bin/ruby_executable_hooks:15:in
eval'
from /Users/buildserver/.rvm/gems/ruby-2.0.0-p643/bin/ruby_executable_hooks:15:in `

'

#127 楼 @vigossjjj 现在是在别人的电脑上搭建环境。我自己的电脑上是 0.3 的版本还是比较正常的。我试试看装回 0.3 看看行不行。

#129 楼 @qitaos 最好把你的运行环境还有日志都贴详细,之后在 github 提个 issue,这里我不解答了

#123 楼 @vigossjjj 首先感谢楼主的工作!对于参数-t 不是太明白,试了几次,当不指定-t 时,每次执行,从开始到结束一般也就 40s,指定-t 500,发现也是 40s 左右旧结束了,请指点

#132 楼 @313077271 这个-t 参数 强依赖 custom.js 中的总事件数,我刚刚修改了,现在应该没问题了,后边会对参数配置详细整理,也会贴出相应详细文档。

我的真机运行的好慢啊。。50 个事件跑了好久了

#134 楼 @hellengo 这个你想要我咋帮你?你的环境?日志?我们项目每天 iPhone5 晚上迭代 5000 个事件,速度也还行,一般 58 个事件我这边测试时候大概 30 秒不到吧。

#135 楼 @vigossjjj 环境是 ok 的,50 个事件跑了十几分钟,日志见下面,其余事件的日志和下面的一样,启动 app 后有个更新的弹窗” 马上更新 “、” 再忍一会儿 “两个选项,是不是因为这个原因呢
localhost:~ hong$ smart_monkey -a com.lesdo.test -w 29d1d9f74369354902fe6b3c4e54ac9b4317383a
INSTRUMENTS_TRACE_PATH : /Users/hong/*.trace
RESULT_BASE_PATH : /Users/hong/smart_monkey_result
{:app_path=>"com.lesdo.test", :device=>"29d1d9f74369354902fe6b3c4e54ac9b4317383a", :run_count=>1, :time_limit_sec=>nil, :detail_event_count=>50}
=================================== Start Test (1/1) =======================================
Attempting iOS device system log capture via deviceconsole.
BundleID was found: com.lesdo.test
Run: ["instruments", "-w", "29d1d9f74369354902fe6b3c4e54ac9b4317383a", "-t", "/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate", "com.lesdo.test", "-e", "UIASCRIPT", "/Users/hong/smart_monkey_result/report_20150615182557/custom.js", "-e", "UIARESULTSPATH", "/Users/hong/smart_monkey_result/report_20150615182557"]
2015-06-15 18:26:12.393 instruments[18926:1330593] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2015-06-15 10:26:24 +0000 Default: {"width":375,"height":667}
2015-06-15 10:26:24 +0000 Debug: target.flickFromTo({x:"312.5311620533466", y:"127.3222541743889"}, {x:"169.0585854230449", y:"105.7178583883215"})
2015-06-15 10:26:24 +0000 Debug: target.captureRectOnScreenWithName("{origin:{x:0.00,y:0.00}, size:{height:667.00,width:375.00}}", UIScreen, "monkey-2015-06-15T10-26-24-417Z")
2015-06-15 10:26:24 +0000 Screenshot captured.
2015-06-15 10:26:35 +0000 Debug: target.tapWithOptions({x:"218.742848286638", y:"331.6537786128465"}, {touchCount:"1", tapCount:"1", duration:"0"})
2015-06-15 10:26:35 +0000 Debug: target.captureRectOnScreenWithName("{origin:{x:0.00,y:0.00}, size:{height:667.00,width:375.00}}", UIScreen, "monkey-2015-06-15T10-26-35-716Z")
2015-06-15 10:26:35 +0000 Screenshot captured.
2015-06-15 10:26:47 +0000 Debug: target.dragFromToForDuration({x:"134.8261415550951", y:"582.4873397573829"}, {x:"261.1574777110945", y:"302.3317569692153"}, "0.5")
2015-06-15 10:26:47 +0000 Debug: target.captureRectOnScreenWithName("{origin:{x:0.00,y:0.00}, size:{height:667.00,width:375.00}}", UIScreen, "monkey-2015-06-15T10-26-47-571Z")
2015-06-15 10:26:47 +0000 Screenshot captured.
2015-06-15 10:27:07 +0000 Debug: target.tapWithOptions({x:"103.2900609425269", y:"81.10536120133474"}, {touchCount:"1", tapCount:"1", duration:"0"})
2015-06-15 10:27:07 +0000 Debug: target.captureRectOnScreenWithName("{origin:{x:0.00,y:0.00}, size:{height:667.00,width:375.00}}", UIScreen, "monkey-2015-06-15T10-27-07-946Z")
2015-06-15 10:27:08 +0000 Screenshot captured.
2015-06-15 10:27:19 +0000 Debug: target.tapWithOptions({x:"117.6529586955439", y:"273.7642806055956"}, {touchCount:"1", tapCount:"1", duration:"0"})
2015-06-15 10:27:19 +0000 Debug: target.captureRectOnScreenWithName("{origin:{x:0.00,y:0.00}, size:{height:667.00,width:375.00}}", UIScreen, "monkey-2015-06-15T10-27-19-280Z")
2015-06-15 10:27:19 +0000 Screenshot captured.
2015-06-15 10:27:33 +0000 Debug: target.tapWithOptions({x:"176.4968418865465", y:"293.7898133927956"}, {touchCount:"1", tapCount:"1", duration:"0"})
2015-06-15 10:27:33 +0000 Debug: target.captureRectOnScreenWithName("{origin:{x:0.00,y:0.00}, size:{height:667.00,width:375.00}}", UIScreen, "monkey-2015-06-15T10-27-33-618Z")
2015-06-15 10:27:33 +0000 Screenshot captured.
2015-06-15 10:27:53 +0000 Debug: target.tapWithOptions({x:"235.3430679941084", y:"367.2085508620366"}, {touchCount:"1", tapCount:"1", duration:"0"})
2015-06-15 10:27:53 +0000 Debug: target.captureRectOnScreenWithName("{origin:{x:0.00,y:0.00}, size:{height:667.00,width:375.00}}", UIScreen, "monkey-2015-06-15T10-27-53-982Z")
2015-06-15 10:27:54 +0000 Screenshot captured.
2015-06-15 10:28:05 +0000 Debug: target.pinchOpenFromToForDuration({x:"339.1931459773332", y:"138.0447601166088"}, {x:"26.20860302704386", y:"292.6614749131259"}, "0.5")
2015-06-15 10:28:05 +0000 Debug: target.captureRectOnScreenWithName("{origin:{x:0.00,y:0.00}, size:{height:667.00,width:375.00}}", UIScreen, "monkey-2015-06-15T10-28-05-817Z")
2015-06-15 10:28:05 +0000 Screenshot captured.
2015-06-15 10:28:17 +0000 Debug: target.tapWithOptions({x:"315.359858708689",

...........
Instruments Trace Complete (Duration : 585.235352s; Output : /Users/hong/instrumentscli0.trace)
Stop iOS system log capture.
Monkey Test Report:/Users/hong/smart_monkey_result/report_20150615182557/index.html
EXIT 0

#136 楼 @hellengo 我只能从你提供的 “详细信息” 中猜测你使用的是 iphone4s?xcode 版本 osx 版本我猜不出来了。。。。。如果是那么我没有在这手机上测试过,手头也没机器啊,你换个手机试试??

#137 楼 @vigossjjj 额 我的手机是 iPhone6 啊 8.1.2 系统 ,xcode 6.3.1,os 版本 10.10.2。

#138 楼 @hellengo 那就奇怪了,我的设备是 6+ 系统 8.2 xcode6.3.2 跑 50 个事件也就 20 秒,从日志看是有点慢,每个事件后截图间隔有 10 几 s,你要不先换个手机试一试,后边我会关注一下这个情况

#139 楼 @vigossjjj 我换 5c 7.1.2 的运行 Ok 了,那个 iPhone6 运行的话一直卡在一个界面,但是最终还能执行完脚本。。

#140 楼 @hellengo 环境:iPhone 5c,7.1.2, xcode 6.3.1,os 版本 10.10.2。执行过程中出现个问题,设置事件 10000,但是过程中跳出 app 后就停止执行了, 多次出现了。手机没有锁屏,同时 custom 里 lock 值为 0.
2015-06-16 07:53:38 25 Debug target.captureRectWithName("{origin:{x:0.00,y:0.00}, size:{height:0.00,width:0.00}}", "monkey-2015-06-16T07-53-39-462Z")
2015-06-16 07:53:38 26 Screenshot monkey-2015-06-16T07-53-39-462Z_external
2015-06-16 07:53:38 27 Warning Target app go to outside, trigger re-launch action.
...

.2015-06-16 07:50:27 344 Screenshot monkey-2015-06-16T07-50-28-601Z
2015-06-16 07:50:27 345 Debug target.captureRectWithName("{origin:{x:0.00,y:0.00}, size:{height:0.00,width:0.00}}", "monkey-2015-06-16T07-50-28-601Z")
2015-06-16 07:50:27 346 Screenshot monkey-2015-06-16T07-50-28-601Z_external
2015-06-16 07:50:28 347 Warning Target app go to outside, trigger re-launch action.

2015-06-16 07:53:45 +0000 Fail: The target application appears to have died
2015-06-16 15:53:45.975 instruments[10842:160086] Attempting to set event horizon when core is not engaged, request ignored
2015-06-16 15:53:45.976 instruments[10842:160086] Attempting to set event horizon when core is not engaged, request ignored
Instruments Trace Complete (Duration : 23.522152s; Output : /Users/Hellengo/Desktop/CrashMonkey4IOS-master/instrumentscli0.trace)
Stop iOS system log capture.
2015-06-16 15:53:50.879 instruments[10856:160370] WebKit Threading Violation - initial use of WebKit from a secondary thread.
.........

#141 楼 @hellengo 这个具体要看一下你的 app 的 delegate 文件中对于后台状态的回调是怎么处理的applicationDidEnterBackground 如果没有处理那么你的 app 进入后台就会被立即杀死,这个其实和 instrument 相关,和 smart_monkey 没关。

XXXXXXXXXXXXXX$ smart_monkey -a com.utoow.diver -w 28567708dc9XXXXc5a16e88d704cb4c12e7503b4 -n 3 -t 60
INSTRUMENTS_TRACE_PATH : /*.trace
RESULT_BASE_PATH : /smart_monkey_result
{:app_path=>"com.utoow.diver", :device=>"28567708dc93822c5a16e88d704cb4c12e7503b4", :run_count=>3, :time_limit_sec=>60, :detail_event_count=>50}
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:in mkdir': Permission denied - /smart_monkey_result (Errno::EACCES)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:in
fu_mkdir'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:219:in block (2 levels) in mkdir_p'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:in
reverse_each'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:in block in mkdir_p'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:in
each'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:in mkdir_p'
from /Library/Ruby/Gems/2.0.0/gems/smart_monkey-0.4.2/lib/smart_monkey/monkey_runner.rb:41:in
run'
from /Library/Ruby/Gems/2.0.0/gems/smart_monkey-0.4.2/bin/smart_monkey:58:in <top (required)>'
from /usr/bin/smart_monkey:23:in
load'
from /usr/bin/smart_monkey:23:in `

'
是不是 ruby 环境没配置 OK ??

#143 楼 @chouchokbun 有问题去 git 提吧/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:in mkdir': Permission denied - /smart_monkey_result (Errno::EACCES)

=================================== Start Test (1/3) =======================================
Attempting iOS device system log capture via deviceconsole.
BundleID was found: com.utoow.diver
Run: ["instruments", "-w", "28567708dc93822c5a16e88d704cb4c12e7503b4", "-l", "60000", "-t", "/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate", "com.utoow.diver", "-e", "UIASCRIPT", "/Users/zhouzuobin/smart_monkey_result/report_20150617155736/custom.js", "-e", "UIARESULTSPATH", "/Users/zhouzuobin/smart_monkey_result/report_20150617155736"]
2015-06-17 15:57:40.860 instruments[1030:27441] WebKit Threading Violation - initial use of WebKit from a secondary thread.
Instruments Trace Error : Target failed to run: Permission to debug com.utoow.diver was denied. The app must be signed with a development identity (e.g. iOS Developer).
Stop iOS system log capture.

#145 楼 @chouchokbun Instruments Trace Error : Target failed to run: Permission to debug com.utoow.diver was denied. The app must be signed with a development identity (e.g. iOS Developer).

又报错了。
2015-06-24 11:08:50.347 instruments[1510:64177] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2015-06-24 11:08:54.096 instruments[1510:64191] Automation Instrument ran into an exception while trying to run the script. UIAScriptAgentSignaledException
2015-06-24 03:08:54 +0000 Fail: An error occurred while trying to run the script.
Instruments Trace Complete (Duration : 3.619256s; Output : /Users/msc/CrashMonkey4IOS/bin/instrumentscli0.trace)
Stop iOS system log capture.

#147 楼 @fengytn 解决了。好坑。设置错了。

#148 楼 @fengytn 什么样的问题?可否总结说明一下,我合并到 troubleshooting。

150楼 已删除

mark 一下~~学习了

你好,我遇到这样的问题。我执行 smart_monkey -a $ com.alienjun.sapp 的时候
chenlengyaodeiMac:~ chenlengyao$ CrashMonkey4IOS/bin/smart_monkey -a $ com.alienjun.sapp
INSTRUMENTS_TRACE_PATH : /Users/chenlengyao/*.trace
RESULT_BASE_PATH : /Users/chenlengyao/smart_monkey_result
{:app_path=>"$", :run_count=>1, :time_limit_sec=>nil, :detail_event_count=>50}
=================================== Start Test (1/1) =======================================
Attempting iOS Simulator system log capture via tail system.log.
C/Users/chenlengyao/CrashMonkey4IOS/lib/smart_monkey/monkey_runner.rb:219:in `': Interrupt
from /Users/chenlengyao/CrashMonkey4IOS/lib/smart_monkey/monkey_runner.rb:219:in
devices'
from /Users/chenlengyao/CrashMonkey4IOS/lib/smart_monkey/monkey_runner.rb:202:in device'
from /Users/chenlengyao/CrashMonkey4IOS/lib/smart_monkey/monkey_runner.rb:466:in
grep_ios_syslog'
from /Users/chenlengyao/CrashMonkey4IOS/lib/smart_monkey/monkey_runner.rb:584:in watch_syslog'
from /Users/chenlengyao/CrashMonkey4IOS/lib/smart_monkey/monkey_runner.rb:82:in
run_a_case'
from /Users/chenleng

#152 楼 @lengyao88 那个 bundleid 传错了, smart_monkey -a $ com.alienjun.sapp 应为smart_monkey -a com.alienjun.sapp ,符号 $ 被当作一个参数了

如果遇到第三方,比如 QQ 登录,会打开一个网页的,弹出这样的,monkey 的脚本就会无法执行报错了。

@vigossjjj 如果遇到第三方,比如 QQ 登录,会打开一个网页的,弹出这样的,monkey 的脚本就会无法执行报错了。

#155 楼 @lengyao88 去 git 提 issue,贴 log。这里不解答


执行 gem install smart_monkey 报错什么原因

大侠,东西很棒!但有个问题,长时间运行后,整个 mac 都变得好卡,这块能否在最新的版本中解决下?

#158 楼 @313077271 首先确认一下是哪个进程内存比较大,如果是 instruments,运行过程当中会把日志存储在内存当中,所以比较吃内存,这个是苹果自家的东西,可以使用-n 参数 分批次执行,将单次的事件数降低,我们内部目前采取的策略是使用-n 迭代 5 轮,单次事件数 1000。

@vigossjjj 请教一个疑问:UIAutoMonkey.js 第 195 行 clickVolumeDown 事件定义中调用了 clickVolumeUp(),是不是应该调用 clickVoumeDown()? ui-auto-monkey 的脚本也是这样的。

#160 楼 @m3hkhhg 恩啊 多谢反馈,已经修改。

怎么剔除 DTMobileTS 类系统错误,统计中很多都是这类错误

这个很赞

#162 楼 @idoit007 你是指 crash 吧?目前收集了所有的 crash,包括系统和 app 的,没有做过滤,考虑到 crash 是否有关联性

@vigossjjj,请教个问题:脚本执行了 reLaunchApp 后一直报错,从手机看 app 回到前台后又立即退出了,日志如下:
2015-07-28 06:01:43 +0000 Warning: Target app go to outside, trigger re-launch action.
2015-07-28 06:01:50 +0000 Fail: The target application appears to have died
从终端执行 idevicedebug -u b6c7*********87ef run com..*** 是能成功的
环境:iphone5c,iOS7.0,xcode6.0.1

修改了/CrashMonkey4iOS/custom_cfg/custome.js 文件中的 action weight 并且添加了一条 buttonhandler,但是在测试结果 smart_monkey_result/report_2015_0728XXXXX 中的 custom.js 跟 custome_cfg 路径下的 custome.js 并不一样,看起来我做的修改并没有生效,请问是修改完还需要做什么才能让这个配置生效吗

还有一个问题,我用了-t 参数去设置 monkey 运行的时间,但是都到时间了 Monkey 却并没有停止运行,请问这是为啥
命令:sudo smart_monkey -a com.example.monkeytest -w [UDID] -t 3600,从开始运行到现在已经 1.5 个小时,monkey 还没有停止。
/smart_monkey_result/report_20150728XXX/custom.js 中设置如下:
#import "UIAutoMonkey.js"
#import "tuneup/tuneup.js"

// Configure the monkey: use the default configuration but a bit tweaked
monkey = new UIAutoMonkey();
monkey.config.numberOfEvents = 99999999; // total number of monkey event
monkey.config.delayBetweenEvents = 0.05;

/custome_cfg/custom.js 中设置如下:
#import "UIAutoMonkey.js"
#import "handler/buttonHandler.js"
#import "handler/wbScrollViewButtonHandler.js"
#import "tuneup/tuneup.js"

// Configure the monkey: use the default configuration but a bit tweaked
monkey = new UIAutoMonkey();
monkey.config.numberOfEvents = 50; // total number of monkey event
monkey.config.delayBetweenEvents = 0.05;

我也遇到了下面的错误:
2015-08-10 18:52:28.769 instruments[59132:942138] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2015-08-10 18:52:30.608 instruments[59132:942124] Automation Instrument ran into an exception while trying to run the script. UIAScriptAgentSignaledException
2015-08-10 10:52:30 +0000 Fail: An error occurred while trying to run the script.
Instruments Trace Complete (Duration : 1.999696s; Output : /Users/lenovo/instrumentscli8.trace)

看到楼上说是设置的问题,尝试了一下,解决了,解决方法贴出来供参考:
打开手机中 “设置”->"开发者”,将 Enable UI Automation 打开,即可。

2015-08-13 01:39:32 +0000 Error: Script threw an uncaught JavaScript error: -lock element not found on line 200 of UIAutoMonkey.js
2015-08-13 09:39:32.311 instruments[687:25300] Attempting to set event horizon when core is not engaged, request ignored
2015-08-13 09:39:32.311 instruments[687:25300] Attempting to set event horizon when core is not engaged, request ignored

在运行过程中,锁屏设置密码后,出现运行错误,以上是错误信息啊,怎么搞掂?

#169 楼 @wenshi11019 设置锁屏密码无解,建议不要加密码锁

#170 楼 @vigossjjj 那只能这样了,谢谢啊

#171 楼 @wenshi11019 嗯,不然的话 一般没有人会开着密码测试。。。。这种东西属于测试规范的问题。

#172 楼 @vigossjjj 我是测试菜鸟,入门没多久,规范这些不太懂,只有自己在摸索

174楼 已删除

@vigossjjj
安装 smart monkey 后本地跑,为了测试跳出 app 后还能自动回来的逻辑,手动将 app 切出当前主页面,一切正常。
但部署到 Jenkins 后,app 跳出后回不来,看了源码后发现是执行 command_helper.rb 里的 relaunchApp function 时不起作用,也就是 idevicedebug 那一句不管用,但手动在 Jenkins 执行机上调用 idevicedebug 就又可以,有人遇到过这种情况么?


问题已解决,是我的 Jenkins 执行机环境变量的问题!
谢谢开源此 iOS monkey 测试工具,里面很多 point 都是我们学习的地方!

@vigossjjj ✘ pafu@FJJdeMacBook-Pro  ~/CrashMonkey_IOS   master ●  bin/smart_monkey --list-devices
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin14/rbconfig.rb:213: warning: Insecure world writable dir /Users/pafu/SDK/sdk/platform-tools in PATH, mode 040777
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require': cannot load such file -- erubis (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in
require'
from /Users/pafu/CrashMonkey_IOS/lib/smart_monkey/monkey_runner.rb:7:in <module:UIAutoMonkey>'
from /Users/pafu/CrashMonkey_IOS/lib/smart_monkey/monkey_runner.rb:3:in
'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in
require'
from /Users/pafu/CrashMonkey_IOS/lib/smart_monkey.rb:3:in <top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in
require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in require'
from bin/smart_monkey:10:in

'

@vigossjjj 能帮忙看下这个是什么问题吗

@fengytn 我也报这个错误了:WebKit Threading Violation - initial use of WebKit from a secondary thread. 请问是怎么解决的?谢谢~

#177 楼 @adobe123 需要先安装一下 erubis,参见 https://rubygems.org/gems/erubis

#179 楼 @haona 这个不是报错啊

为什么用 crash_monkey 可以跑起来,smart_monkey 不行呢

@wangbin039 嗯 提示这个后 monkey 停止执行了,不知道怎么解决?

#165 楼 @m3hkhhg @vigossjjj 我也遇到同样问题了,这个是怎么解决的呀?

我是 monkey 测试新手,在执行 monkey 时报: WebKit Threading Violation - initial use of WebKit from a secondary thread. 请问各位怎么解决的?谢谢啦~

186楼 已删除

没有运行几个时间就会出现,WARN: no response in log, trigger re-launch action.请问什么问题

请问这个报错如何解决啊。。。。
$smart_monkey -a com.test.HelloWorld
INSTRUMENTS_TRACE_PATH : /Users/wangyan/work/amc-work/monkeyTest/*.trace
RESULT_BASE_PATH : /Users/wangyan/work/amc-work/monkeyTest/smart_monkey_result
{:app_path=>"com.test.HelloWorld", :run_count=>1, :time_limit_sec=>nil, :detail_event_count=>50}
=================================== Start Test (1/1) =======================================
Attempting iOS Simulator system log capture via tail system.log.
Stop iOS system log capture.
/Users/wangyan/.rvm/gems/ruby-2.2.1/gems/smart_monkey-0.4.2/lib/smart_monkey/monkey_runner.rb:202:in device': undefined methodstrip' for nil:NilClass (NoMethodError)
from /Users/wangyan/.rvm/gems/ruby-2.2.1/gems/smart_monkey-0.4.2/lib/smart_monkey/monkey_runner.rb:87:in block in run_a_case'
from /Users/wangyan/.rvm/gems/ruby-2.2.1/gems/smart_monkey-0.4.2/lib/smart_monkey/monkey_runner.rb:600:in
watch_syslog'
from /Users/wangyan/.rvm/gems/ruby-2.2.1/gems/smart_monkey-0.4.2/lib/smart_monkey/monkey_runner.rb:82:in run_a_case'
from /Users/wangyan/.rvm/gems/ruby-2.2.1/gems/smart_monkey-0.4.2/lib/smart_monkey/monkey_runner.rb:49:in
block in run'
from /Users/wangyan/.rvm/gems/ruby-2.2.1/gems/smart_monkey-0.4.2/lib/smart_monkey/monkey_runner.rb:46:in times'
from /Users/wangyan/.rvm/gems/ruby-2.2.1/gems/smart_monkey-0.4.2/lib/smart_monkey/monkey_runner.rb:46:in
run'
from /Users/wangyan/.rvm/gems/ruby-2.2.1/gems/smart_monkey-0.4.2/bin/smart_monkey:58:in <top (required)>'
from /Users/wangyan/.rvm/gems/ruby-2.2.1/bin/smart_monkey:23:in
load'
from /Users/wangyan/.rvm/gems/ruby-2.2.1/bin/smart_monkey:23:in <main>'
from /Users/wangyan/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in
eval'
from /Users/wangyan/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `

'

2015-09-21 07:06:10 +0000 Warning: Target app go to outside, trigger re-launch action. 锁屏无法开启,卡在这里了

请教一下,monkey 中 app 被 kill,然后在尝试自动再次启动应用时失败了,测试就结束了,这种情况该怎么办啊?我这里 Xcode7,iOS9 和 iOS8.4 的手机都这样。

@vigossjjj ,为什么指定跑四小时,smart_monkey -a com.xxx.xxx -t 14400 -w xxxxx
结果跑了几分钟 (小于 5 分钟) 就结束了

@vigossjjj 修改了工程源码,怎么重新编译???

我的在真机上跑不起来呢,总是停在这里:
mac os:10.10 ,Xcode:6.1,设备:IPhone5s IOS8.1.3,请帮忙看下是什么情况?

看起来没人遇到这个问题,Xcode7.1 以上版本,输入命令后 无法运行起来(之前用 Xcode6 版本是可行的)

#103 楼 @vigossjjj 每次执行到 idevicesinstaller -l 的时候就执行不下去了 也没有任何提示,怎么解

#194 楼 @chocolatesweety smart_monkey --list-devices,看看有没有对应的模拟器。或者把模拟器先吊起来,再用命令行 smart_monkey -a TBClient.app -w 1D672CE6-B1CA-49D7-BD1A-3A412FC7FACB 试下能不能起来

#187 楼 @chenchen4444 吊起 webview 了吧

问下,custom_cfg 里面怎么写逻辑啊,我要指定控件怎么做

为什么的报告里看不到截图呢。

WebKit Threading Violation - initial use of WebKit from a secondary thread.  我在使用真机测试的时候出现这个问题,请问这么解决

202楼 已删除

Stop iOS system log capture.
Compress screenshot images...
mogrify: no decode delegate for this image format `PNG' @ error/constitute.c/ReadImage/501.
Monkey Test Report:/usr/ImageMagick-6.9.2-10/smart_monkey_result/report_20151230160440/index.html

EXIT 0

Span: 2015-12-30 16:04:41 ~ 2015-12-30 16:38:32
Results: 1 Test, 1 Ok, 0 Crash, 0 No Run
每次跑了半个小时多一点就会结束写 log 和截屏,不知道是不是 CPU 占用 99% 的原因

#202 楼 @wxpokay
https://ruby.taobao.org/

我们已经停止基于 HTTP 协议的镜像服务, 请在配置中使用 HTTPS 协议代替

执行过程中如果崩溃了,会自动把 app 拉起来么?

206楼 已删除
207楼 已删除

#157 楼 @idoit007 警告提示: WARNING: Unable to pull data from 'http://ruby.taobao.org/:' bad response Not Found 404 (http://ruby.taobao.org/latest_specs.4.8.gz)
解决方案: gem sources --remove http://ruby.taobao.org/
检查: gem sources -l
*** CURRENT SOURCES ***

https://ruby.taobao.org/
只有一个 ruby 的 sources 才正确。

完成之后继续安装下面步骤:

  • brew install -HEAD ideviceinstaller
  • brew install libimobiledevice
  • brew install imagemagick
  • sudo gem install smart_monkey,

#185 楼 @haona
这是上门楼主的,仔细看看别楼的问题,很有帮助😄
我也遇到了下面的错误:
2015-08-10 18:52:28.769 instruments[59132:942138] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2015-08-10 18:52:30.608 instruments[59132:942124] Automation Instrument ran into an exception while trying to run the script. UIAScriptAgentSignaledException
2015-08-10 10:52:30 +0000 Fail: An error occurred while trying to run the script.
Instruments Trace Complete (Duration : 1.999696s; Output : /Users/lenovo/instrumentscli8.trace)

看到楼上说是设置的问题,尝试了一下,解决了,解决方法贴出来供参考:
打开手机中 “设置”->"开发者”,将 Enable UI Automation 打开,即可。

210楼 已删除

#193 楼 @feicl 在设置中把开发者模式中的 ui automation 打开

#202 楼 @wxpokay 警告提示: WARNING: Unable to pull data from 'http://ruby.taobao.org/:' bad response Not Found 404 (http://ruby.taobao.org/latest_specs.4.8.gz)
解决方案: gem sources --remove http://ruby.taobao.org/
检查: gem sources -l
*** CURRENT SOURCES ***

https://ruby.taobao.org/
只有一个 ruby 的 sources 才正确。

完成之后继续安装下面步骤:

  • brew install -HEAD ideviceinstaller
  • brew install libimobiledevice
  • brew install imagemagick
  • sudo gem install smart_monkey,

#189 楼 @bigbro 你怎么解决的?我也遇到这种情况,只出现在 apple 6 以上都不能跑,5s 和 5 都能跑,系统版本都是一样的

2016-01-21 17:11:44.670 instruments[30527:1275646] WebKit Threading Violation - initial use of WebKit from a secondary thread.
WARN: no response in log, trigger re-launch action.
2016-01-21 17:12:15.708 instruments[30537:1275894] WebKit Threading Violation - initial use of WebKit from a secondary thread.
WARN: no response in log, trigger re-launch action.
2016-01-21 17:12:47.842 instruments[30555:1276301] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-01-21 17:12:48.782 instruments[30562:1276322] WebKit Threading Violation - initial use of WebKit from a secondary thread.
WARN: no response in log, trigger re-launch action.
2016-01-21 17:13:19.844 instruments[30571:1276581] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-01-21 17:13:20.838 instruments[30578:1276656] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-01-21 17:13:20.838 instruments[30578:1276656] WebKit Threading Violation - initial use of WebKit from a secondary thread.

我这里运行一直是这个死循环,不能真正开始执行。。

紧急求助!!

真机,iphone6p,ios8.4

#201 楼 @anny 我也遇到了,而且是一直重复报这个 log , 你解决了么

#190 楼 @gaonan1212 你的问题解决了么?我也遇到相同问题,只要 crash 后就自动结束了,html log 也生成了

#205 楼 @xiachijiang 我这不行,idebugdevice 都是好的,每次 crash 后直接系统结束了。你现在可以么?

@dodo可否帮忙看下 @gaonan1212 的问题,我和他都遇到了,idevicedebug 没问题,但是出现 crash 后系统就正常退出了。exit 0

#218 楼 @succubus6luyi 兄弟,你要把报错信息贴出来啊,不然不好定位

楼主不好意思,对于 ios 跑 monkey 这块是小白,ios 跑 monkey 的话机器必须是 mac 机吗

#218 楼 @succubus6luyi 我是这样解决的:出现崩溃后,相当于这次 monkey 发现崩溃了,所以这次就结束了,-n 多几次就行了~如果跑好几次都很快崩溃结束,那也是发现问题了

怎么在 custom_cfg 里面根据每个不同功能业务来添加 js 脚本?我发现这块都没有一点说明啊?谢谢

麻烦问下,怎么设置 seed?也就是怎么控制第二次跑的顺序和第一次一样??

2016-02-29 16:07:55.800 instruments[33714:960444] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-02-29 16:07:56.695 instruments[33721:960524] WebKit Threading Violation - initial use of WebKit from a secondary thread.
Unable to open device file './OTAUpdate-2015-04-10-13-41-42.ips.synced' (10). Skipping...

为什么我每次 跑的时候,都会报 Unable to open device file './OTAUpdate-2015-04-10-13-41-42.ips.synced' (10). Skipping...

在刚开始运行到真正执行 monkey 操作的时间好像需要几分钟的时间,大家会不会出现这样的情况?而且一轮 monkey 下来也很快结束?

在 lib/ui-auto-monkey 中已经有个 custom.js 了,那么 custom_cfg 文件夹下的 custom.js 又是做什么用的呢,什么时候才需要用到 custom_cfg,如果是要该配置文件我直接修改 lib/ui-auto-monkey 目录下的 custom.js 不可以吗,有谁知道的麻烦帮忙解答一下疑惑,最近真正研究 ios monkey,上网找了好多资料都无果

#226 楼 @chenxs 表示同样也想研究一下

我写了个 shell 脚本把 CrashMonkey4IOS 集成到 jenkins 后为什么总是会报这样的错误:直接执行时不会报错的但是集成到 jenkins 就会这样
/Users/usercenter/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/dependency.rb:315:in to_specs': Could not find 'smart_monkey' (>= 0) among 11 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/Users/usercenter/.gem/ruby/2.2.0:/Users/usercenter/.rvm/rubies/ruby-2.2.1/lib/ruby/gems/2.2.0', execute
gem envfor more information
from /Users/usercenter/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/dependency.rb:324:in
to_spec'
from /Users/usercenter/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_gem.rb:64:in gem'
from /Users/usercenter/.rvm/gems/ruby-2.2.1/bin/smart_monkey:22:in

'
from /Users/usercenter/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in eval'
from /Users/usercenter/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in
'

问题已解决,我在 jenkins 配置 GEM_PATH 后就没问题了

#222 楼 @dodo 在 custom_cfg 里面根据每个不同功能业务来添加 js 脚本,这个问题知道怎么弄了吗,我最近也在写这个想请教一下

新手小白,按照上述步骤走完一遍后,运行 smart_monkey 时总是给出错误:Instruments Usage error:Specified target process is invalid:appname,请大神指教

#229 楼 @chenxs 无法满足各公司业务测试,它支持自动化都跑一遍,我最后放弃了,建议你考虑 appium,业务简单可以用 monketalk,社区有教程

请问这个截图一直在保存到硬盘上 半小时电脑就卡死 怎么解决啊

#106 楼 @fengytn 测试的程序,需要使用的是开发的签名,不是发布的签名

我跑 monkey,时间设为 1 小时,跑 10W 个事件,跑着跑着电脑越来越卡,大家会有这个情况吗?

满满的干货啊,帮了很大的忙,多谢楼主无私分享

请问在测试报告里面,哪里有写实际上跑了多少个事件啊?

为什么 smart_monkey --list-app 后只能看见模拟器的 app 真机的一直不显示? smart_monkey --list-devices 没反应,求大侠多多指引啊,小白很需要这个,有好心人可以+我的企鹅 78557039

@vigossjjj, 我把 custom.js 改了一下,就是在执行 monkey.RELEASE_THE_MONKEY 前执行前置操作比如登录注册等,现在看不了截图了,这个要怎么解决啊,我的具体修改内容如下:其他人如果知道怎么解决的麻烦回复我一下,谢谢啦
// Release the monkey
Login = function() {
var target = UIATarget.localTarget();
var app = target.frontMostApp();
var window = app.mainWindow();

target.delay(15);
var loginButton = window.staticTexts()["登录"]
var registered = window.staticTexts()["注册"];
if (loginButton.checkIsValid())
{
window.textFields()["用户名或手机号"].setValue("chenxs");
window.secureTextFields()[0].setValue("123456");
app.keyboard().buttons()["Done"].tap();
}
else if (registered.checkIsValid())
{
window.staticTexts()["返回登录"].tap();
target.delay(2);
window.textFields()[0].setValue("chenxs");
window.secureTextFields()[0].setValue("123456");
app.keyboard().buttons()["Done"].tap();
}
UIALogger.logDebug("login over===========================");
};

function test_main(){
Login();
monkey.RELEASE_THE_MONKEY();
};

test_main();

239楼 已删除
240楼 已删除

.dsym 一直设置不好,我是小白,有哪位大侠能帮忙解答一下么

你好,我是测试媛的山地(测试媛群号:418093807),我们最近想做一个线下的交流活动,不知道 i 感兴趣不?我 qq:461785243,感兴趣的话可以交流下测试技术

#237 楼 @suyptest 遇到同样的问题,请问解决了吗?是怎么解决的尼?,其中 bundle id 是对的,截图做了些修改.

请问,时间 和事件数 只需要设置一个就行吗? 如果同时设置 会咋样?

我第一次接触这种测试,能再讲的详细一点吗?谢谢

246楼 已删除

--list-devices 啥也不显示,好像是卡住了,Ctrl+C 显示下面的东西,大神帮忙看下

Instruments Trace Error : Target failed to run: Permission to debug XXXXXXXXX was denied. The app must be signed with a development identity (e.g. iOS Developer). 这是啥问题,咋解决啊?

非常强大!!

app logout 了怎么办? 需要输入用户名 密码

#87 楼 @testly
最后怎么解决的?command not found 我第一次安装完运行成功的,过了几天再运行就提示 command not found 了

易寒 在 [該主題已被刪除] 中提及了此贴 07月04日 17:24

Run: ["instruments", "-w", "DC111925-2AB5-51FD-94EE-D5A2CD09C818", "-t", "/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate", "net.coding", "-e", "UIASCRIPT", "/Users/xiongjinfei/smart_monkey_result/report_20160704225715/custom.js", "-e", "UIARESULTSPATH", "/Users/xiongjinfei/smart_monkey_result/report_20160704225715"]
Instruments Usage Error: Specified target process is invalid: net.coding
instruments, version 7.3 (60134)
usage: instruments [-t template] [-D document] [-l timeLimit] [-i #] [-w device] [[-p pid] | [application [-e variable value] [argument ...]]]
Stop iOS system log capture.

请教,我想设置 monkey 忽略 crash 的信息如何设置,js 里面没有涉及到。

楼主你好我想请问 为何我执行 gem install smart_monkey 时提示 Could not find a valid gem 'smart_monkey' (>= 0) in any repository 上面说的依赖软件都安装了

切到外面的 app 后有时候切不回来而停止运行
log 如下:
Warning: Target app go to outside, trigger re-launch action.
Fail: The target application appears to have died
Attempting to change event horizon while disengage
Stop iOS system log capture.

初步定为是线程问题,但是目前没有很好的解决方案。楼主有解决方案吗?辛苦看看。
目前感觉不少朋友受这个问题困扰。

#256 楼 @junewang1990
初步定位,是由于 relaunch_app 方法中,执行了 is_simulator,判断是不是模拟器,而该方法是通过 “instruments -s devices” 来获取的,与本身执行的 Instruments 自动化冲突了。
可将判断是否模拟器提前,然后以一个参数方式传入。
测试后可用。

#241 楼 @junewang1990
另外,把 UIAutomation.js 中,调用 reLaunchApp 的地方删除了。不知道为什么,这里调用的话,会导致 app 在切回后崩溃。

@vigossjjj iPhone 5s 真机
/Users/NeverMore/.rvm/gems/ruby-2.3.0/gems/smart_monkey-0.5.0/lib/smart_monkey/monkey_doctor.rb:7: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777
INSTRUMENTS_TRACE_PATH : /Users/NeverMore/Desktop/*.trace
RESULT_BASE_PATH : /Users/NeverMore/Desktop/monkey_result
{:app_path=>"com.tkdb.fastLemon", :device=>"1840cbec4c65506576cec375f0bd0cbea4ae767e", :result_base_dir=>"/Users/NeverMore/Desktop/monkey_result", :run_count=>1, :time_limit_sec=>nil, :detail_event_count=>50}
=================================== Start Test (1/1) =======================================
2016-09-03 10:19:25.889 instruments[7858:369474] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-09-03 10:21:10.414 instruments[7889:371012] WebKit Threading Violation - initial use of WebKit from a secondary thread.
Attempting iOS device system log capture via deviceconsole.
2016-09-03 10:21:11.980 instruments[7895:371062] WebKit Threading Violation - initial use of WebKit from a secondary thread.
BundleID was found: com.tkdb.fastLemon
Run: ["instruments", "-w", "1840cbec4c65506576cec375f0bd0cbea4ae767e", "-t", "/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate\n/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate", "com.tkdb.fastLemon", "-e", "UIASCRIPT", "/Users/NeverMore/Desktop/monkey_result/report_20160903101923/custom.js", "-e", "UIARESULTSPATH", "/Users/NeverMore/Desktop/monkey_result/report_20160903101923"]
Instruments Usage Error: The specified template '/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate
/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate' does not exist.
instruments, version 7.3 (60134)
usage: instruments [-t template] [-D document] [-l timeLimit] [-i #] [-w device] [[-p pid] | [application [-e variable value] [argument ...]]]
Stop iOS system log capture.
2016-09-03 10:21:34.460 instruments[7929:371628] WebKit Threading Violation - initial use of WebKit from a secondary thread.

报错的:Instruments Usage Error: The specified template '/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate
/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate' does not exist.

这两个文件都有啊,求大神解答

unable to convert "\xCF" from ASCII-8BIT to UTF-8 for lib/ios_device_log/deviceconsole, skipping

想问下,我运行 monkey 后生成的日志文件 console.txt。 里面没有任何的内容。是什么问题呢?
导致 system log 无法打开

#19 楼 @yun9041 你这个问题解决了么,我也碰到你这个问题了

#253 楼 @aizaimenghuangu 这个问题你解决了么

#4 楼 @snape1992 js 文件可以具体定义到事件吗?

非常受益~但对实现原理不是很了解,楼主可以抽时间讲解一下么?

项目已经不维护了吗,github 上的问题好久没有回复了

模拟器运行(os10.0 xcode8 )
sh: -c: line 0: syntax error near unexpected token (' sh: -c: line 0:idevicecrashreport -u 71469BA7-F762-4284-82DB-0545A6D36BC0 (Simulator) -e -k /Users/qa/smart_monkey_result/report_20160818160941/crash_1'
Attempting iOS device system log capture via deviceconsole.
Stop iOS system log capture.
Invalid device, Please given a vaild device!

提示 Could not connect to lockdownd. Exiting.能做的操作感觉都做了,还是报错,请问有人遇到过么?

大家有没有遇到以下这种情况啊?求助。

#267 楼 @Tomorrow 是 gem install 安装的吗

匿名 #270 · 2016年09月26日

你好,我再真机上使用了您开发的框架,但是在运行过程中发现进程可以被启动起来,但是启动之后再没有新的操作被执行了,
一直是在报
“WARN: no response in log--relaunch_app--, trigger re-launch action.
启动 relaunch 开启新进程”
因为对 ios 不熟,也就无法从大局上缩小确定可能出现问题的范围,一直自己盲人撞瞎马卡在这里半个月了。
不知道什么情况下会出现 “no response in log--relaunch_app-- ” 这样的警告,又该怎么解决。难道是需要解析日志,跟 .dSYM 文件有关?
如果您有什么好的建议,不胜感激。

我这边输入 smart_monkey -a com.carme.car-user -w d99a477f1d08a23389b7b2e5a90ad4dca2127fd8 -t 60
提示 ERROR: Could not connect to lockdownd, error code -19
这个是什么错误,大神,求帮忙,急等~

#268 楼 @ZFWAWJ 我也遇到了,请问你是怎么解决的

-user ? 这个参数?
本地 instrument 是否正常? 打一个 instrument 命令试试

#276 楼 @pacerron
刚刚打了一个 instruments -s device  是这样的

#276 楼 @pacerron 可以加扣扣说吗,1282500922

找到 monkey_runner.rb 这个 文件,在 72 行这里,直接 用 instruments 命令试试

#279 楼 @pacerron 新手,不太懂,可以再仔细点吗😁

对, puts(run_process....) 吧这个命令打印下,然后,直接执行这个命令看看

#268 楼 @ZFWAWJ 执行一下这个命令试试 sudo chmod -R 777 /var/db/lockdown/

#269 楼 @pacerron 是的,之前还能用的,后来我覆盖安装了一次,不知道有没有关系

#268 楼 @ZFWAWJ 你这个已经无法解决了,日志显示你缺少 Automation.tracetemplate,我猜你是 xcode8,xcode8 已经不支持 UIAutomation 这种方式了。这个程序是基于 Instruments 的 Automation(8 木有了),所以 xcode7.3+ 的。。。用不了

#266 楼 @hellengo 模拟器发生了变化,作者没有维护,详情看 git 的 pull request 中的解决方案

我在跑 smart_monkey 的时候出现错误了,麻烦大神指点迷津,谢谢。

报错信息:Instruments Usage Error: Specified target process is invalid: com.****.ios.chs
instruments, version 7.3 (60134)

#188 楼 @bigbro 请问这个问题你最后怎么解决的?

我使用 smart_monkey 测试,报告中无截图,请问这个是什么问题

@vigossjjj ,楼主,请问有什么办法让 instrument 不占太多的内存?我跑一会占用了很多内存,

@xiaoduo 我的问题跟你们的一样 请问现在解决了么

问题 1: -t 1000 结果时间未到就结束了(才跑了 7 分钟左右)为什么,
问题 2: 为什么 2 个时间不一致。
求解答,小白用户多想各位。

Mac 版本 10.12 Xcode 7.3.1 iPad 7.0.3
日志如下:
localhost:~ wendong$ smart_monkey -a com.autoxxxxhd -w 25aa5e779e8fa86864c509dc9129ffbdcb1992ea -n 1 -t 1000
/usr/local/lib/ruby/gems/2.3.0/gems/smart_monkey-0.5.0/lib/smart_monkey/monkey_doctor.rb:7: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777
INSTRUMENTS_TRACE_PATH : /Users/wendong/*.trace
RESULT_BASE_PATH : /Users/wendong/smart_monkey_result
{:app_path=>"com.autohomehd", :device=>"25aa5e779e8fa86864c509dc9129ffbdcb1992ea", :run_count=>1, :time_limit_sec=>1000, :detail_event_count=>50}
=================================== Start Test (1/1) =======================================
2016-10-14 11:01:02.625 instruments[9684:250982] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:01:03.870 instruments[9690:251026] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:01:04.825 instruments[9696:251062] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:01:38.974 instruments[9707:251445] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:01:39.963 instruments[9713:251484] WebKit Threading Violation - initial use of WebKit from a secondary thread.
Attempting iOS device system log capture via deviceconsole.
BundleID was found: com.autoxxxxhd
Run: ["instruments", "-w", "25aa5e779e8fa86864c509dc9129ffbdcb1992ea", "-l", "1000000", "-t", "/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate", "com.autoxxxxhd", "-e", "UIASCRIPT", "/Users/wendong/smart_monkey_result/report_20161014110100/custom.js", "-e", "UIARESULTSPATH", "/Users/wendong/smart_monkey_result/report_20161014110100"]
2016-10-14 11:01:47.939 instruments[9734:251671] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 03:01:59 +0000 Default: {"width":1024.0000335703464,"height":768.0000447604625}
2016-10-14 03:01:59 +0000 Debug: target.tapWithOptions({x:"188.771146774292", y:"674.928044735454"}, {touchCount:"1", tapCount:"1", duration:"0"})
2016-10-14 03:01:59 +0000 Debug: target.captureRectWithName("{origin:{x:0.00,y:256.00}, size:{height:768.00,width:1024.00}}", "monkey-2016-10-14T03-01-59-823Z")
2016-10-14 03:02:00 +0000 Screenshot captured.
2016-10-14 03:02:00 +0000 Debug: target.tapWithOptions({x:"559.0689308643341", y:"702.9246333669871"}, {touchCount:"1", tapCount:"1", duration:"0"})
2016-10-14 03:02:00 +0000 Debug: target.captureRectWithName("{origin:{x:0.00,y:256.00}, size:{height:768.00,width:1024.00}}", "monkey-2016-10-14T03-02-00-552Z")

...........
2016-10-14 03:03:50 +0000 Debug: target.captureRectWithName("{origin:{x:0.00,y:256.00}, size:{height:768.00,width:1024.00}}", "monkey-2016-10-14T03-03-50-468Z")
2016-10-14 03:03:50 +0000 Screenshot captured.
2016-10-14 03:03:50 +0000 Debug: target.dragFromToForDuration({x:"672.7496573925018", y:"181.8702606661245"}, {x:"730.4074461460114", y:"202.9441863317043"}, "0.5")
2016-10-14 03:03:51 +0000 Debug: target.captureRectWithName("{origin:{x:0.00,y:256.00}, size:{height:768.00,width:1024.00}}", "monkey-2016-10-14T03-03-51-543Z")
2016-10-14 03:03:51 +0000 Screenshot captured.
2016-10-14 03:03:51 +0000 Debug: target.tapWithOptions({x:"313.8043835163116", y:"216.1103715077043"}, {touchCount:"1", tapCount:"1", duration:"0"})
2016-10-14 03:03:52 +0000 Debug: target.captureRectWithName("{origin:{x:0.00,y:256.00}, size:{height:768.00,width:1024.00}}", "monkey-2016-10-14T03-03-52-016Z")

2016-10-14 03:03:52 +0000 Debug: target.dragFromToForDuration({x:"244.3983271121979", y:"27.1762412507087"}, {x:"278.9728639125824", y:"66.35953510552645"}, "0.5")
2016-10-14 03:03:53 +0000 Debug: target.captureRectWithName("{origin:{x:0.00,y:256.00}, size:{height:768.00,width:1024.00}}", "monkey-2016-10-14T03-03-53-571Z")
2016-10-14 03:03:53 +0000 Screenshot captured.
2016-10-14 03:03:54 +0000 Debug: target.tapWithOptions({x:"900.2550766468048", y:"554.6903289649636"}, {touchCount:"1", tapCount:"1", duration:"0"})
2016-10-14 03:03:54 +0000 Debug: target.captureRectWithName("{origin:{x:0.00,y:256.00}, size:{height:768.00,width:1024.00}}", "monkey-2016-10-14T03-03-54-071Z")
2016-10-14 03:03:54 +0000 Screenshot captured.
2016-10-14 03:03:54 +0000 Debug: target.dragFromToForDuration({x:"372.8422691822052", y:"671.2079738155007"}, {x:"414.9163269996643", y:"682.7956647770479"}, "0.5")
2016-10-14 03:03:55 +0000 Debug: target.captureRectWithName("{origin:{x:0.00,y:256.00}, size:{height:768.00,width:1024.00}}", "monkey-2016-10-14T03-03-55-177Z")
2016-10-14 03:03:55 +0000 Screenshot captured.
2016-10-14 03:03:55 +0000 Warning: Target app go to outside, trigger re-launch action.
2016-10-14 03:04:00 +0000 Fail: The target application appears to have died
2016-10-14 11:04:00.943 instruments[9734:251677] Attempting to change event horizon while disengage
Instruments Trace Complete (Duration : 133.268387s; Output : /Users/wendong/instrumentscli0.trace)
Stop iOS system log capture.
2016-10-14 11:04:47.502 instruments[9766:254193] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:04:48.437 instruments[9772:254228] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:07:02.137 instruments[9794:255223] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:07:03.174 instruments[9800:255330] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:07:04.181 instruments[9806:255369] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:07:05.166 instruments[9813:255421] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:07:06.231 instruments[9819:255456] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:07:08.297 instruments[9832:255573] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:07:10.231 instruments[9844:255640] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-10-14 11:07:11.018 instruments[9850:255663] WebKit Threading Violation - initial use of WebKit from a secondary thread.
Monkey Test Report:/Users/wendong/smart_monkey_result/report_20161014110100/index.html
EXIT 0

@chenchen4444 WARN: no response in log, trigger re-launch action. ,运行一段时间就这样了,我看你的已经解决了,麻烦问一下,如何解决啊?

在我的本地环境中,使用 instruments -w device 查询显示的模拟器 和我在 xcode - device 中查看的模拟器都不相同,导致我现在执行时指定 xcode 中的 device 不能执行, 指定 instrumen 查询出的模拟器提示无效设备,求大神帮忙

-n 设置 monkey 运行的次数没有生效呀,中间出了 crash,就结束 monkey 测试 exit 1.
看了 monkey_runner.rb 文件中,发现
def total_test_count
(@options[:run_count] || 2)
end
这个没有问题么
循环 total_test_count 次数,这边用 || 2?

#290 楼 @xtt_weath 我上次也出现过这样的情况,在报告里面加上 js 文件就好了。你可以试试

求破解:tuxiaotuMacBook-Pro:~ TXT$ smart_monkey -a XXX -w XXX
INSTRUMENTS_TRACE_PATH : /Users/dmall/*.trace
RESULT_BASE_PATH : /Users/dmall/smart_monkey_result
{:app_path=>"XXX", :device=>"XXX", :run_count=>1, :time_limit_sec=>nil, :detail_event_count=>50}
2016-11-08 13:51:11.248 instruments[29483:1525985] WebKit Threading Violation - initial use of WebKit from a secondary thread.
=================================== Start Test (1/1) =======================================
2016-11-08 13:51:11.975 instruments[29494:1526035] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-11-08 13:51:12.896 instruments[29499:1526067] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-11-08 13:52:20.785 instruments[29515:1527587] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-11-08 13:52:21.819 instruments[29520:1527621] WebKit Threading Violation - initial use of WebKit from a secondary thread.
Attempting iOS device system log capture via deviceconsole.
2016-11-08 13:52:22.543 instruments[29525:1527657] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-11-08 13:52:23.385 instruments[29531:1527878] WebKit Threading Violation - initial use of WebKit from a secondary thread.
BundleID was found: com.wm.dmall
Run: ["instruments", "-w", "c5c53ea3433234df1db904fe67d722057daebb10", "-t", "/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate", "com.wm.dmall", "-e", "UIASCRIPT", "/Users/dmall/smart_monkey_result/report_20161108135110/custom.js", "-e", "UIARESULTSPATH", "/Users/dmall/smart_monkey_result/report_20161108135110"]
2016-11-08 13:52:27.071 instruments[29538:1527960] WebKit Threading Violation - initial use of WebKit from a secondary thread.
Instruments Usage Error : Specified target process is invalid: com.wm.dmall
instruments, version 7.1 (59040)
usage: instruments [-t template] [-D document] [-l timeLimit] [-i #] [-w device] [[-p pid] | [application [-e variable value] [argument ...]]]
Stop iOS system log capture.
2016-11-08 13:52:30.944 instruments[29548:1528029] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-11-08 13:52:31.696 instruments[29553:1528075] WebKit Threading Violation - initial use of WebKit from a secondary thread.
2016-11-08 13:52:32.447 instruments[29558:1528089] WebKit Threading Violation - initial use of WebKit from a secondary thread.

感觉不错

@vigossjjj 我用的真机,ios9,smart_monkey 按照你说的方法已经安装成功,但是在执行的时候出现以下问题,app 没有启动,日志如下,麻烦帮忙看看怎么回事

INSTRUMENTS_TRACE_PATH : /Users/xxx/*.trace
RESULT_BASE_PATH : /Users/pazq/smart_monkey_result
{:app_path=>"com.xxxxx", :run_count=>1, :time_limit_sec=>nil, :detail_event_count=>50}
=================================== Start Test (1/1) =======================================
Unable to open device file './Retired/log-sessions-2016-10-31-085346.session' (10). Skipping...
Unable to open device file './Retired/log-sessions-2016-10-31-140737.session' (10). Skipping...
Unable to open device file './Retired/log-sessions-2016-11-01-095844.session' (10). Skipping...
Unable to open device file './Retired/log-sessions-2016-11-03-084630.session' (10). Skipping...
Unable to open device file './log-sessions-2016-11-07-085346.session' (10). Skipping...
Attempting iOS device system log capture via deviceconsole.
BundleID was found: com.xxxxxx
Run: ["instruments", "-w", “wwwwwwww", "-t", "", "com.xxxxx", "-e", "UIASCRIPT", "/Users/pazq/smart_monkey_result/report_20161115101942/custom.js", "-e", "UIARESULTSPATH", "/Users/xxx/smart_monkey_result/report_20161115101942"]
2016-11-15 10:20:28.849 instruments[19763:4645880] *** -[__NSCFConstantString stringByAppendingPathExtension:]: cannot append extension 'tracetemplate' to path ''
Instruments Usage Error: The specified template '' does not exist.
instruments, version 8.1 (61529)
usage: instruments [-t template] [-D document] [-l timeLimit] [-i #] [-w device] [[-p pid] | [application [-e variable value] [argument ...]]]
Stop iOS system log capture.
Unable to open device file './Retired/log-sessions-2016-10-31-085346.session' (10). Skipping...
Unable to open device file './Retired/log-sessions-2016-10-31-140737.session' (10). Skipping...
Unable to open device file './Retired/log-sessions-2016-11-01-095844.session' (10). Skipping...
Unable to open device file './Retired/log-sessions-2016-11-03-084630.session' (10). Skipping...
Unable to open device file './log-sessions-2016-11-07-085346.session' (10). Skipping...

instruments[2623:53437] *** -[__NSCFConstantString stringByAppendingPathExtension:]: cannot append extension 'tracetemplate' to path ''
Instruments Usage Error: The specified template '' does not exist.
instruments, version 8.1 (61529)
usage: instruments [-t template] [-D document] [-l timeLimit] [-i #] [-w device] [[-p pid] | [application [-e variable
这是什么原因有遇到过的吗?

#140 楼 @hellengo 您好,想问下您这个问题解决了吗,我目前也不到同类型的问题,无法解决。
我是用的 iPad 我这边 iPad 跑 iOS7 的系统可以跑起来,到时 iOS7 以上的系统,跟您一样,卡死在页面内,但是脚步都可以走完。

升级到 xcode8 之后发现不能用了,xcode8 里面把 ui automation 模版给拿掉了,运行的时候报错:
2016-11-20 12:57:56.703 instruments[23448:23923793] *** -[__NSCFConstantString stringByAppendingPathExtension:]: cannot append extension 'tracetemplate' to path ''
Instruments Usage Error: The specified template '' does not exist.

#301 楼 @sunyy 这个问题你解决了吗?

你好, xcode8 由于没有 ui automation 模板没法用这个问题可以修复吗

#148 楼 @fengytn 怎么解决的 谢谢!

易寒 在 CrashMonkey4Android 中提及了此贴 12月01日 17:27
匿名 #308 · 2016年12月22日

#200 楼 @wangcityboy 报告里不显示截图的问题你解决了么?怎么解决啊

匿名 #309 · 2016年12月22日

#297 楼 @xuebi 报告里加上 js 文件?什么意思?怎么加?小白用户求解

模拟器运行待测试 APP,运行脚本./smart_monkey -a XXXX -w 01A87893-4BDC-462E-BDF9-F95485325F17 -n 3 -t 500 报错如下:求解答!多谢多谢!

INSTRUMENTS_TRACE_PATH : /Users/sabrina/Documents/repository/smart_monkey/bin/*.trace
RESULT_BASE_PATH : /Users/sabrina/Documents/repository/smart_monkey/bin/smart_monkey_result
{:app_path=>"XXXXXX", :device=>"01A87893-4BDC-462E-BDF9-F95485325F17", :run_count=>3, :time_limit_sec=>500, :detail_event_count=>50}
=================================== Start Test (1/3) =======================================
sh: -c: line 0: syntax error near unexpected token ('
sh: -c: line 0:
idevicecrashreport -u 01A87893-4BDC-462E-BDF9-F95485325F17 (Simulator) -e -k /Users/sabrina/Documents/repository/smart_monkey/bin/smart_monkey_result/report_20161226130851/crash_1'
Attempting iOS device system log capture via deviceconsole.
Stop iOS system log capture.
Invalid device, Please given a vaild device!

ps:模拟器的信息如下:
iPhone 4s (8A4E4510-2450-460C-A2F7-95A22157F3FE) (Shutdown)
iPhone 5 (B837B9F0-C687-4553-BF9F-E678E28F2D46) (Shutdown)
iPhone 5s (DAD6A293-AD40-4700-AE42-5091D4F3B2F2) (Shutdown)
iPhone 6 (7B9443CD-84B7-4014-8680-82CFB128135C) (Shutdown)
iPhone 6 Plus (CFAE8A9A-570C-4AC5-9B40-33651417BEA1) (Shutdown)
iPhone 6s (01A87893-4BDC-462E-BDF9-F95485325F17) (Booted)
iPhone 6s Plus (BF238D53-6764-498B-95B5-B2C269B640BA) (Shutdown)
iPad 2 (9E5D6212-14C0-498F-AEFD-82281B6CFE8C) (Shutdown)
iPad Retina (C45A4253-8B17-4C13-80EB-0473E5D93E44) (Shutdown)
iPad Air (E95EB58F-3999-4B4E-AB44-2CBAE0ED990C) (Shutdown)
iPad Air 2 (A4D91460-7E62-4E58-AEAA-105B478F1533) (Shutdown)
iPad Pro (84311B71-E26C-4FA1-A11A-0AC35FB62AED) (Shutdown)

我自己写一个有 crash 的程序,生成的报告还是显示没有 crash 怎么回事,在线等😞 😞 😞 😞 😞 😞 😞 😞 😞 😞 😞 😞 😞 😞 😞 😞 😞 😞

同样遇到 lockdown 的问题
请问怎么解决的呢
Stop iOS system log capture.
ERROR: Could not connect to lockdownd, error code -5

你好,现在 ios10 + xcode 8.2,跑不了 smart_monkey,有解么?

#313 楼 @app_test 无解,xcode8 已经删除 UIAutomation。Xcode7.3+ 都用不了,一定要用,就准备两套,来回切换执行,只能覆盖 IOS10 以下版本设备

楼主,什么时候能够更新 iOS 版本的 monkey 测试工具呢?

316楼 已删除
对 chestnut 回复

手机版本不能高于 10

hello,我是一个小白,有以下几个问题想请教下:
1.安装第一步只要配置以下 4 个命令吗?
Step 1. brew install libimobiledevice
Step 2. brew install -HEAD ideviceinstaller
Step 3. brew install imagemagick
Step 4. gem install smart_monkey
以上完成以后是需要获取脚本吗,脚本是不是点击下面这个地方下载进行安装以后就可以

2.以上两步操作完,电脑有安装 xcode 是不是就是配置好了。如何检查环境是否配置成功
3.环境搭建完以后,我要怎么进行运行,

-c 的那个文件路径是怎么得到的。我前面的脚步那边已经安装完,但是要怎么获取
-s 的那个文件路径是不是我直接拷贝到某个地方,把路径写上就可以
-d 的报存日志的文件需要我先手动创建吗,还是跑完会自动创建了

@tuxiaotu

这个问题怎么解决

对 ZFWAWJ 回复

问题有解决吗?我也遇到同样的问题

运行这个:smart_monkey -a ${com.xywy.askxywy} -w ${6c2fba022be6b0adfbd9536d558193f6ce06d3fe} -n 695605、
提示: bad substitution
有人遇到吗

对 凡人 回复

有什么解决办法吗?

323楼 已删除
324楼 已删除
325楼 已删除

没有解决,同样的报错!

对 Jackey 回复

想问一下大家,现在 ios10 及以上怎么做的稳定性测试

你好,Detail 的 NoRun 是没跑的意思吗,什么情况下会导致这样啊
还有 Duration 的意思,是本次跑了多少次吗?

对 凡人 回复

这个问题你解决了吗

对 vigossjjj 回复

我想问下,为啥 smart monkey 运行起来了,可是刚打开 app 就停止运行了呢

对 程程 回复

对?就是这样的结果是么?
你看下我的日志,对不对

对 xiao 回复

请问跑压测的时候你手机的 app 启动了么?我就启动了一下子,就退出了!而且报告中没有任何截图,也没有 summary 文件

对 chenhuayuan 回复

请问,报 re-launch 的问题解决了么亲;着急

对 ellisa 回复

请问你的问题解决了么最后?这个一直报 no response in log ;

你好, 我想问一下,您有没有遇到 monkey 设置了 5000 次事件,但是跑了 1 分钟就结束了的
而且没有报错误 就 monkey test finished
设置时间也一样 设置 2 小时 结果也类似 一分钟就结束了
smart_monkey -a com.oceanwing.z.smarthomedev -w ${devices} —event-number 5000 —compress-result 50% --drop-useless-img


337楼 已删除

小白一枚,请问 iOS 怎么安装啊,感觉看不懂啊

对 王晓玥 回复

你好,请问你安装成功了吗,要怎么安装啊,命令要用什么去执行,我没有看懂啊

ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
是什么意思啊

有没有用一台电脑同时去跑两个 monkey 的
我这边一台电脑 两部真机 跑两个项目
单独一台真机跑的时候是完全正常的
第二台启动的时候 第一台的就自动结束了 也无报错

你好 请问这个问题怎么解决
ERROR: Could not connect to lockdownd, error code -17
Attempting iOS device system log capture via deviceconsole.

我看很多人都遇到这个问题 好像没有什么人解决这个问题

➜ ~ smart_monkey -a com.sem.soueast-motor.SEMIV
INSTRUMENTS_TRACE_PATH : /Users/fushp/.trace
RESULT_BASE_PATH : /Users/fushp/smart_monkey_result
{:app_path=>"com.sem.soueast-motor.SEMIV", :run_count=>1, :time_limit_sec=>nil, :detail_event_count=>50}
=================================== Start Test (1/1) =======================================
ERROR: Could not connect to lockdownd, error code -13
Attempting iOS device system log capture via deviceconsole.
BundleID was found: com.sem.soueast-motor.SEMIV
Run: ["instruments", "-w", "ba70e92753de5cc3c5d6ca3875d5bad5f5c68ca8", "-t", "", "com.sem.soueast-motor.SEMIV", "-e", "UIASCRIPT", "/Users/fushp/smart_monkey_result/report_20170607112735/custom.js", "-e", "UIARESULTSPATH", "/Users/fushp/smart_monkey_result/report_20170607112735"]
2017-06-07 11:28:30.893 instruments[2958:3022510] *
* -[__NSCFConstantString stringByAppendingPathExtension:]: cannot append extension 'tracetemplate' to path ''
Instruments Usage Error: The specified template '' does not exist.
instruments, version 8.3 (62122)
usage: instruments [-t template] [-D document] [-l timeLimit] [-i #] [-w device] [[-p pid] | [application [-e variable value] [argument ...]]]
Stop iOS system log capture.
ERROR: Could not connect to lockdownd, error code -13
➜ ~

跑不起来。。。我好像看懂文档。。楼主

对 datafu 回复

你用的是:xcode8.0+ 或者 IOS10.0+,目前 monkey 还不支持上述版本,因为 xcode8.0+ 已经把 UIAutomation 换为 WebDriverAgent 了,所以只能看看后续会不会有相关稳定性的新工具!

对 xiao 回复

这个问题有解决了吗

对 cnritng 回复

你好 --list-devices block 的问题 解决了吗 也没有日志 完全不知道怎么办

cannot append extension 'tracetemplate' to path ''
Instruments Usage Error: The specified template '' does not exist.
运行了,报这个错误,不清楚什么原因?能否帮忙解答,蟹蟹

对 hihi 回复

此问题解决了没有呢??

对 kuroky 回复

想问一下最后是怎么解决的呀

@vigossjjj @chenhengjie123 ,环境配置好后,运行不起来,错误日志如下,是什么原因?
kascenddeMacBook-Pro-4:bin kascend$ smart_monkey -a com.baidu.Tieba.TBClient -w 3c4d7ad606b3500e37c8069eae80bb39e3f680c2
INSTRUMENTS_TRACE_PATH : /Users/kascend/Documents/work/tools/CrashMonkey4IOS-master/bin/.trace
RESULT_BASE_PATH : /Users/kascend/Documents/work/tools/CrashMonkey4IOS-master/bin/smart_monkey_result
{:app_path=>"com.baidu.Tieba.TBClient", :device=>"3c4d7ad606b3500e37c8069eae80bb39e3f680c2", :run_count=>1, :time_limit_sec=>nil, :detail_event_count=>50}
=================================== Start Test (1/1) =======================================
Attempting iOS device system log capture via deviceconsole.
BundleID was found: com.baidu.Tieba.TBClient
Run: ["instruments", "-w", "3c4d7ad606b3500e37c8069eae80bb39e3f680c2", "-t", "", "com.baidu.Tieba.TBClient", "-e", "UIASCRIPT", "/Users/kascend/Documents/work/tools/CrashMonkey4IOS-master/bin/smart_monkey_result/report_20191224132756/custom.js", "-e", "UIARESULTSPATH", "/Users/kascend/Documents/work/tools/CrashMonkey4IOS-master/bin/smart_monkey_result/report_20191224132756"]
2019-12-24 13:29:21.131 instruments[4946:493541] *
* -[__NSCFConstantString stringByAppendingPathExtension:]: cannot append extension 'tracetemplate' to path ''
Instruments Usage Error: The specified template '' does not exist.
instruments, version 9.4.1 (64086)
usage: instruments [-t template] [-D document] [-l timeLimit] [-i #] [-w device] [[-p pid] | [application [-e variable value] [argument ...]]]
Stop iOS system log capture.

需要 登录 後方可回應,如果你還沒有帳號按這裡 注册。