我对IOS编程很陌生。我有一个任务要查找是否可以自动化我的 UI 进行测试。这就是我想要做的:
在我的应用程序中放置一些随机的代码(听起来很糟糕,但可能是预定义的事件)将事件消息发送到屏幕上的控件。
由于它只是代码,我应该能够获取该应用程序,将其部署在任何 iPhone 或 iPad 上并运行该程序。
一旦应用程序被我的代码完全自动化,我想对获得的性能数据进行分析会很容易。
我见过 FoneMonkey 但看起来它需要在每台设备上手动记录用户交互。
欢迎任何想法或建议。
- 拉利斯
我对IOS编程很陌生。我有一个任务要查找是否可以自动化我的 UI 进行测试。这就是我想要做的:
在我的应用程序中放置一些随机的代码(听起来很糟糕,但可能是预定义的事件)将事件消息发送到屏幕上的控件。
由于它只是代码,我应该能够获取该应用程序,将其部署在任何 iPhone 或 iPad 上并运行该程序。
一旦应用程序被我的代码完全自动化,我想对获得的性能数据进行分析会很容易。
我见过 FoneMonkey 但看起来它需要在每台设备上手动记录用户交互。
欢迎任何想法或建议。
你好 Lalith 我一直在为一个应用程序创建一些 UI 自动化测试,并且它工作得很好。虽然它有一些技巧,但我认为你应该看看这些链接:
http://answers.oreilly.com/topic/1646-how-to-use-uiautomation-to-create-iphone-ui-tests/
http://alexvollmer.com/posts/2010/07/03/working-with-uiautomation/
如果您需要更多帮助,请告诉我。:)
编辑1:
在 viewController 的 viewDidLoad 上,您可以添加如下内容:
- (void)viewDidLoad {
[super viewDidLoad];
//(Your code...)
// I set it to start after 5 seconds...
[self performSelector:@selector(startTest) withObject:nil afterDelay:5];
}
-(void)startTest{
//took this from the link you posted
[myButton sendActionsForControlEvents:UIControlEventTouchUpInside];
}
编辑2:
if([myTextField canBecomeFirstResponder]){
[myTextField becomeFirstResponder];
}
Apple 有一个通过工具和可访问性 API 实现基于 javascript 的自动化框架。它不是 100% 最好的,但值得一看。
Instruments + 用手指实际触摸手机也是“在现实世界中”进行性能分析的好方法。
一般来说,我发现自动化 UI 测试并不值得。UI 通常会发生太多变化,以使功能规范的工作量低于其价值。YMMV。
一旦你达到了让你感到舒服的程度,我会看看这个KIF 框架。
KIF 代表 Keep It Functional,是一个 iOS 集成测试框架。它通过利用操作系统为视觉障碍人士提供的可访问性属性,可以轻松实现 iOS 应用程序的自动化。
您可以创建一个 parent UIView
,向其中添加“孩子”或子视图。子视图包含您的应用程序 UI。
父视图设置为透明的,它捕获触摸并记录它们。一旦记录下来,触摸事件就会传递给子视图。你可以在这里发送你的测试。
因为父视图是透明的,用户永远看不到它,但它仍然捕获并处理触摸事件。
设置它会涉及相当多的子类化,并且某些类(例如UIWebView
)会引入困难。但这可能是可行的。
我一直在非常成功地使用 IMAT 进行 iOS 自动化。
https://code.intuit.com/sf/sfmain/do/viewProject/projects.ginsu
我喜欢它的原因:
您可以考虑Experitest 的 SeeTest,它具有非常简单的记录和回放功能。
感谢你的帮助。正如我在评论中提到的,我应该能够在 IOS 设备中独立运行它们。我们可以使用这里描述的 sendActionsForControlEvents 。这就是我现在所需要的。