如何自动为iOS应用程序创建性能报告?

时间:2012-07-22 10:03:41

标签: ios continuous-integration performance-testing

对于我的一些iOS应用程序项目,我希望我的CI服务器能够报告以下属性:

  • 启动时间
  • 帧率

作为随时间变化的图表,以及“低水位线”,如果测量结果不在特定标准内,则构建失败。我已经找到了一些我需要的东西。

  • CI服务器将是Jenkins。
  • 我可以使用Transporter Chief将构建的应用程序放到iPad上。
  • 要衡量启动时间,我可以找到启动main()和离开application:didFinishLaunchingWithOptions:之间的持续时间。
  • 要衡量帧率,我可以将CADisplayLink放入应用并对其duration属性进行采样。
  • 如果这些测试输出JMeter XML,那么Jenkins可以通过Performance插件显示输出。

我还没有解决的问题是,我应该如何将这些测试嵌入到我的应用中并在iPad上启动?如上所述,我可以应用程序部署到iPad,但后来我不知道如何启动它来收集测试结果。我的单元测试在模拟器上运行 - 我不想在那里运行性能测试: - )。

我想有一个解决方案,包括越狱iPad并通过SSH控制应用程序,如果可能的话,我宁愿不要沿着那条路走下去。如果您已经完成了这项工作并且可以解释它是如何工作的,我仍然希望听到它。

2 个答案:

答案 0 :(得分:9)

我还使用fruitstrap在CI中的设备上安装应用程序。在启动应用程序方面,我知道两种方式:

  1. 使用附带调试器的fruitstrap

  2. instruments命令行工具与UIAutomation一起使用

    • 我知道这些乐器工具可以在CI中自动启动设备上的应用程序(我希望它也安装了它们,但是在Apple修复它之前我们已经有了这个功能)。因此,您可以编写一个非常简单的小UIAutomation测试,为您的应用程序提供足够的时间进行性能分析。
    • Jonathan Penn有一个很好的小型演示项目,用于UIAutomation和构建脚本,可以使用fruistrap与“安装”步骤集成,在设备上试用它
  3. 在这两种情况下,我在libusb周围使用一个小包装器来给我附加设备的设备ID,因此我插入CI机器的设备越多,它运行的设备就越多,https://github.com/sgleadow/iphone_detect

答案 1 :(得分:1)

您可以使用lldb在设备上启动应用程序吗?

如果是这样,它也可以捕获日志输出。