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

18 continuous-integration performance-testing ios

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

  • 启动时间
  • 帧率

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

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

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

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

Ste*_*tew 9

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

  1. 使用附带调试器的fruitstrap

  2. 使用instruments命令行工具和UIAutomation

    • 我知道仪器工具可以在CI中自动启动设备上的应用程序(我希望它也安装它们,但我们有这方面的果实,直到Apple修复它).因此,您可以编写一个非常简单的小UIAutomation测试,为您的应用程序提供足够的时间来进行性能分析.
    • Jonathan Penn为UIAutomation和构建脚本提供了一个很好的小型演示项目,该脚本可以使用fruistrap与"安装"步骤集成,以便在设备上进行尝试

在这两种情况下,我在libusb周围使用一个小包装器来给我附加设备的设备ID,因此我插入CI机器的设备越多,它运行的设备就越多,https://github.com/sgleadow/ iphone_detect

  • 刚刚看到我的名字.:)这是我的示例代码的链接,用于从命令行运行UI自动化:https://github.com/jonathanpenn/AutomationExample我正在处理更详细的说明,并找出触发它运行的方法在设备上.你可能会发现我在这里写的一些东西也很有帮助:http://cocoamanifest.net/features/ (2认同)