4

我对IOS编程很陌生。我有一个任务要查找是否可以自动化我的 UI 进行测试。这就是我想要做的:

  • 在我的应用程序中放置一些随机的代码(听起来很糟糕,但可能是预定义的事件)将事件消息发送到屏幕上的控件。

  • 由于它只是代码,我应该能够获取该应用程序,将其部署在任何 iPhone 或 iPad 上并运行该程序。

  • 一旦应用程序被我的代码完全自动化,我想对获得的性能数据进行分析会很容易。

我见过 FoneMonkey 但看起来它需要在每台设备上手动记录用户交互。

欢迎任何想法或建议。

  • 拉利斯
4

7 回答 7

5

你好 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];
}
于 2011-07-22T00:23:36.553 回答
4

Apple 有一个通过工具和可访问性 API 实现基于 javascript 的自动化框架。它不是 100% 最好的,但值得一看。

Instruments + 用手指实际触摸手机也是“在现实世界中”进行性能分析的好方法。

一般来说,我发现自动化 UI 测试并不值得。UI 通常会发生太多变化,以使功能规范的工作量低于其价值。YMMV。

于 2011-07-21T23:07:06.363 回答
4

一旦你达到了让你感到舒服的程度,我会看看这个KIF 框架

KIF 代表 Keep It Functional,是一个 iOS 集成测试框架。它通过利用操作系统为视觉障碍人士提供的可访问性属性,可以轻松实现 iOS 应用程序的自动化。

于 2011-07-22T04:21:41.877 回答
2

您可以创建一个 parent UIView,向其中添加“孩子”或子视图。子视图包含您的应用程序 UI。

父视图设置为透明的,它捕获触摸并记录它们。一旦记录下来,触摸事件就会传递给子视图。你可以在这里发送你的测试。

因为父视图是透明的,用户永远看不到它,但它仍然捕获并处理触摸事件。

设置它会涉及相当多的子类化,并且某些类(例如UIWebView)会引入困难。但这可能是可行的。

于 2011-07-21T22:43:55.527 回答
0

我一直在非常成功地使用 IMAT 进行 iOS 自动化。

https://code.intuit.com/sf/sfmain/do/viewProject/projects.ginsu

我喜欢它的原因:

  1. 它建立在 Apple 提供的 javascript 自动化之上,您可以从 Instruments 或命令行启动它
  2. 它为javascript iOS自动化提供了一个测试运行器(想想N-Unit)
  3. 为检索 UI 元素提供了一种简洁的机制(类似于其他自动化工具使用的对象映射)
  4. 无需更改您的应用程序代码(无需使用特定库构建或检测您的代码)
  5. 通过读取 plist 文件在测试运行后提供类似 jUnit 的报告,这由我的 CI 工具(Teamcity、Jenkins、CruiseControl)获取
于 2012-08-01T17:39:01.997 回答
0

您可以考虑Experitest 的 SeeTest,它具有非常简单的记录和回放功能。

于 2011-07-24T15:17:09.983 回答
0

感谢你的帮助。正如我在评论中提到的,我应该能够在 IOS 设备中独立运行它们。我们可以使用这里描述的 sendActionsForControlEvents 。这就是我现在所需要的。

于 2011-07-22T22:05:38.243 回答