【发布时间】:2012-07-20 21:50:11
【问题描述】:
对于我的一些 iOS 应用程序项目,我希望我的 CI 服务器能够报告以下属性:
- 启动时间
- 帧率
两者都是随时间变化的图表,并且带有“低水位标记”,因此如果测量结果不在特定标准内,则构建会失败。我已经找到了一些我需要的东西。
- CI 服务器将是 Jenkins。
- 我可以使用 Transporter Chief 将构建的应用程序放到 iPad 上。
- 为了测量启动时间,我可以找到启动
main()和离开application:didFinishLaunchingWithOptions:之间的持续时间。 - 要测量帧速率,我可以将
CADisplayLink放入应用程序并对其duration属性进行采样。 - 如果这些测试输出 JMeter XML,那么 Jenkins 可以通过 Performance 插件显示输出。
我没有解决的是,我应该如何将这些测试嵌入到我的应用程序中并在 iPad 上启动它?如上所述,我可以将应用程序部署到 iPad,但是我不知道如何启动它来收集测试结果。我的单元测试在模拟器上运行 - 我显然不想在那里运行性能测试:-)。
我想有一个解决方案涉及越狱 iPad 并通过 SSH 控制应用程序,如果可能的话,我宁愿不走这条路。如果您已经做到了这一点并且可以解释它是如何工作的,我仍然很想听听。
【问题讨论】:
-
我知道您对在模拟器中进行性能测试的想法不屑一顾,但如果您对相对性能数字或一段时间内的趋势感兴趣,那可能是一个不错的权宜之计。我不知道你如何在设备上自动启动应用程序:/
-
@BenScheirman 我不相信我从模拟器中得到的任何数字,即使是相对数字。 “嘿,这在我的 20GB 的 8 核 Mac 上并没有变得更糟”并没有告诉我任何关于第一代 iPad 的行为。
-
是的,你是对的。让我真正渴望看到这个问题的结果:)
-
我也许可以帮助越狱过程,我个人不知道任何人如何在未越狱的手机上开发,这对开发非常有帮助
标签: ios continuous-integration performance-testing