ios - 如何自动为 iOS 应用创建性能报告?

标签 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 控制应用程序,如果可能的话,我宁愿不走那条路。如果您已经做到了并且可以解释它是如何工作的,我仍然很想听听。

最佳答案

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

  1. 使用附带调试器的 fruitstrap

  2. instruments 命令行工具与 UIAutomation 结合使用

    • 我知道 instruments 工具可以在 CI 中自动启动设备上的应用程序(我希望它也安装了它们,但在 Apple 修复它之前我们有水果)。因此,您可以编写一个非常简单的 UIAutomation 小测试,让您的应用有足够的时间进行性能分析。
    • Jonathan Penn 有一个不错的 UIAutomation 小演示项目和构建脚本,可以使用 fruistrap 将其与“安装”步骤集成以在设备上试用

在这两种情况下,我都在 libusb 周围使用了一个小包装器来为我提供连接设备的设备 ID,所以我插入 CI 机器的设备越多,它运行测试的设备就越多,https://github.com/sgleadow/iphone_detect

关于ios - 如何自动为 iOS 应用创建性能报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11599334/

相关文章:

objective-c - 限制社交分享选项并为每项服务设置自定义消息

gitlab - 我可以只安排一个特定的 GitLab CI/CD 作业吗?

node.js - 在用于系统测试的开源项目中保护 travis ci 环境变量

java - 推荐一个NoSQL数据库来替代这个包含大对象和多属性的MySQL数据库

ios - 在 Info.plist 文件中设置时,颠倒方向不起作用

ios - XCTestRunner 可以访问目标应用程序的 View Controller 属性吗?

ios - 如何通过 View 设置默认 UITextField 值已加载

continuous-integration - Angular CLI VSO 持续集成

jmeter - 在 Jmeter 中使用今天的日期作为变量

java - 加特林机的替代品