我对 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% 最好的,但值得一看。
仪器 + 用手指实际触摸手机也是“在现实世界中”进行性能分析的一个很好的方法。
一般来说,我认为自动化 UI 测试并不值得。 UI 通常变化太大,以至于功能规范的工作量低于其价值。 YMMV.
一旦您达到了满意的程度,我就会看看这个 KIF 框架。
KIF,代表 Keep It Function,是一个 iOS 集成测试 框架。它允许通过利用 操作系统为具有以下权限的用户提供的可访问性属性 视力障碍。
您可以创建一个父视图
UIView
,向其中添加“子视图”或子视图。子视图包含您的应用程序 UI。
父视图设置为透明,它捕获触摸并记录它们。记录后,触摸事件将传递到子视图。您可以在这里发送您的测试。
由于父视图是透明的,用户永远看不到它,但它仍然捕获并处理触摸事件。
设置此功能将涉及大量子类化,并且某些类(例如
UIWebView
)会带来困难。但也许是可行的。
感谢您的所有帮助。正如我在评论中提到的,我应该能够在 IOS 设备中独立运行它们。我们可以按照here所述使用sendActionsForControlEvents。 这就是我现在所需要的。
您可以考虑Experitest的SeeTest,它具有非常简单的记录和重播功能。
我在 iOS 自动化中使用 IMAT 非常成功。
https://code.intuit.com/sf/sfmain/do/viewProject/projects.ginsu
我喜欢它的原因: