在iPhone上用于行为驱动开发的最佳技术是什么?什么是一些开源示例项目,证明了这些技术的合理使用?以下是我发现的一些选项:
UI自动化(适用于设备)
可以使用Cucumber(用JavaScript编写)来驱动UI自动化.这将是一个伟大的开源项目.然后,我们可以编写Gherkin来运行UI自动化测试.现在,我只会写Gherkin作为评论.
更新:Zucchini框架似乎融合了Cucumber和UI Automation!:)
旧博客帖子:
弗兰克和iCuke(基于黄瓜会见iPhone谈话)
我知道这将是一个长镜头,但我想我会尝试.没有人知道任何自动化测试的东西为iPhone模拟器?我喜欢它,如果有像Selenium这样的东西,但对于iPhone模拟器.我不需要像断言那样花哨的东西,只是可以伪造屏幕上的水龙头的东西,所以我可以停止滥用我的触控板.:)
有没有办法向iOS设备发送点击或关键事件(如Android上的adb)?
iphone testing automated-tests ios-simulator ios-ui-automation
我为我的iOS应用程序创建了一个简单的javascript ,我想在多个iOSDevices通过USB连接到一台主机Mac机器上同时运行.iPhone从命令行连接到a的启动工具工作正常但如果我尝试启动连接到a的第二个工具iPad,则第一个工具会话挂起.
在终止第一个乐器会话时,我会打印以下一行以下内容:
已停止:由于设备已断开连接,脚本已停止
经过对该主题的广泛研究,但没有对该短语的结果,我一直试图阅读Apple的仪器指南的含义:
当您从目标菜单中选择所有进程,附加到处理或选择目标时,仪器会将所有仪器的默认目标设置为您选择的程序.但是,有时您可能希望为每种乐器设置不同的目标.您可能希望同时对两个不同的程序进行采样,例如,使用Sampler仪器.如果您有一些能够跟踪所有流程的工具,您可能希望他们这样做,而单流程工具只采样一个流程.
我想知道这Automation.tracetemplate是一个单一过程的仪器,如果另一个过程是用相同的自动化跟踪启动的话,那么第一个是篡改的.
任何建议都将不胜感激,因为这是运行我们的时间密集型自动化测试的主要障碍iOSDevices.
2012年3月27日更新
以下内容来自向Apple提交有关此事项的错误后收到的电子邮件(developer.apple.com/bugreporter):
我是从UI自动化工程师那里听到的.UI Automation是一个单一流程工具.因此,您无法在多个设备上同时使用它.
有没有办法UIAutomation通过终端打开仪器?
是否可以编写一个AppleScript打开Apple UIAutomation工具并加载要测试的应用程序?
您能告诉我有没有办法通过脚本或通过命令行我们可以打开UIAutomation并选择要测试的应用程序,以及选择测试脚本?
我一直在浏览我们的代码库并在所有按钮和文本字段上设置accessibilityIdentifier属性,以便我可以使用UIAutomation访问它们.在这样做时,我遇到了一些已经存在的代码.
[_goodButton setAccessibilityLabel:@"off"];
Run Code Online (Sandbox Code Playgroud)
我找不到任何关于这两种方法之间差异的文档.看起来他们做同样的事情.有人知道吗?我觉得这个标签也被设置为"关闭".
如何获取我所在应用程序的软件包ID?
我目前正在通过bash脚本使用Instruments来启动命令行界面以启动Automation插件的运行.
使用4.2,这很好用,但是随着Xcode 4.3的升级,我现在被提示让授权用户"分析其他进程".即使授予了正确的凭据,也不会对用户进行实际身份验证.我收到以下错误:
Failed to authorize rights (0x20) with status: -60007.
2012-02-27 19:30:37.232 instruments[54151:1c03] Failed to connect to local pid watcher service: (os/kern) failure
Run Code Online (Sandbox Code Playgroud)
即使身份验证失败,自动化插件也会执行,但这需要我的脚本让物理保姆输入凭据,这在很多方面都会破坏这些命令行运行的目的.是否可以将用户详细信息添加为参数?或者是否有其他方法可以跳过此提示而无需按键人员?
- 编辑 -
当您尝试首次从GUI运行UIAutomation测试时,会出现此授权对话框.

- 编辑 -
在GUI中应答授权对话框后,提示将停止显示在命令行上.然而,这种解决办法似乎不是一个"答案".
instruments ios xcode-instruments ios-ui-automation xcode4.3
我正在使用Apple提供的UIAutomation - > Xcode - > instruments.我有我的Javascripts和整个自动化使用仪器命令行基础设施运行.
我还有一项额外的任务是在先前版本的模拟器(iOS 6.0,5.1,5.0,4.3.2)上运行自动化,以提供更好的覆盖.
但我不知道如何指定哪个版本的iOS模拟器可供选择.默认情况下,它总是选择lates iOS模拟器.
我试过以下的事情:
我只能在界面构建器中设置辅助功能标签,但在UI自动化中,我需要辅助功能标识符来获取UI元素.任何方式这样做?
我正在尝试使用UIAutomation来测试iOS 8 Today扩展小部件.我可以将目标更改为扩展,启动它,但之后无法执行任何操作.
有没有人在使用UIAutomation扩展时有任何成功?
ios ×8
instruments ×3
iphone ×3
applescript ×1
automation ×1
cucumber ×1
ios8 ×1
rspec ×1
testing ×1
xcode ×1
xcode4.3 ×1