IOS 中是否有任何现有的 UI 控件自动化库[已关闭]

问题描述 投票:0回答:7

我对 IOS 编程非常陌生。我的任务是确定是否可以自动化 UI 进行测试。这就是我想做的:

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

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

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

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

iphone ios ui-automation ios-ui-automation
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];
}

4
投票

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

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

一般来说,我认为自动化 UI 测试并不值得。 UI 通常变化太大,以至于功能规范的工作量低于其价值。 YMMV.


4
投票

一旦您达到了满意的程度,我就会看看这个 KIF 框架

KIF,代表 Keep It Function,是一个 iOS 集成测试 框架。它允许通过利用 操作系统为具有以下权限的用户提供的可访问性属性 视力障碍。


2
投票

您可以创建一个父视图

UIView
,向其中添加“子视图”或子视图。子视图包含您的应用程序 UI。

父视图设置为透明,它捕获触摸并记录它们。记录后,触摸事件将传递到子视图。您可以在这里发送您的测试。

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

设置此功能将涉及大量子类化,并且某些类(例如

UIWebView
)会带来困难。但也许是可行的。


0
投票

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


0
投票

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


0
投票

我在 iOS 自动化中使用 IMAT 非常成功。

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)获取
© www.soinside.com 2019 - 2024. All rights reserved.