使用 Instruments 测试 iOS 应用程序开发的最佳实践

Posted

技术标签:

【中文标题】使用 Instruments 测试 iOS 应用程序开发的最佳实践【英文标题】:Best practice testing the iOS application development with Instruments 【发布时间】:2012-05-06 10:33:31 【问题描述】:

我想知道为客户提供的专业应用程序如何如此优雅,流畅,并且很少或没有应用程序崩溃。因为我一直认为问题主要在于内存泄漏、NSZombie 或性能不够好。

我发现使用 Instruments Tool 解决一些问题非常棒。但我只是熟悉内存泄漏和僵尸模板。当然,我认为还有其他有趣的工具可以更好地跟踪和修复我们的应用程序。 (系统使用、自动化测试等。有什么想法吗?)

我的问题:使用 Instruments 提升应用程序的最佳策略是什么?推荐仪器模板或任何建议?

让我们分享您的经验并讨论!

*更新:* 我可以问更多问题,我应该将这个问题编辑到 wiki 吗?我们可以分享策略应该不仅仅是问题。

【问题讨论】:

只需按 Cmd+I。之后,仪器将被打开,选择你想用仪器做什么,然后......测试 【参考方案1】:

我主要(大约 98.2% 的时间)使用泄漏和分配模板。此外,很多人不知道 - 但在 Xcode 4 中,您可以直接从 Xcode 使用工具启动应用程序。从顶部菜单中,只需选择 Product -> Profile。

另外 - 即使在使用 ARC 时,您仍然应该注意如何使用内存以及如何分配对象。很多时候,ARC 做得很好,但我的代码中的一个小的编程更改导致分配的对象少得多。 ARC 将在您编写代码时为您提供帮助,但这不是不测试和分析您的应用程序以使其尽可能高效的借口。

【讨论】:

【参考方案2】:

是的,仪器很重要。 ARC 缓解了一些最严重的内存问题。分析(在产品菜单上)也被低估了。

查看程序 123,提高应用程序的稳定性,在应用程序框架部分的 WWDC 2011,它很好地讨论了可能影响代码稳定性的其他问题(我尤其认为测试的讨论很好)。

最后,优雅不是工具的产物,而是良好设计的产物。制作一款优雅的产品需要大量的工作。拥抱HIG 和其中包含的更广泛的哲学主题。此外,与您尊重的开发人员一起进行代码和设计审查。

【讨论】:

【参考方案3】:

CPU 采样器(时间分析器)会告诉您程序的执行时间在哪里。如果您的应用程序“慢”,此工具通常可以帮助您确定消费者出现问题的时间,以及(如果您了解您的程序)如何解决这些问题。

定期运行此工具,以了解您的程序以及它们所依赖的抽象背后的实现——不要等到问题出现。


您可以使用 CPU 采样器来记录程序线程的调用堆栈。这是以高频率记录的。采样器显示信息,例如花费最多时间的函数以及它们花费的时间百分比。您可以向调用者收取库或函数的费用,有效地选择您想要的粒度,或隐藏您无法更改的内容。一旦你找到了你感兴趣的函数/方法,你可以在 Instruments 中查看源文件,它会分解你花了这么长时间的东西。

【讨论】:

你能给我举个使用 CPU 采样器的例子吗?只是一些问题和解决方案。 (有一些图片描述很棒)【参考方案4】:

Apple 引入了称为自动引用计数 (ARC) 的甜蜜功能,​​它几乎可以为您控制所有内存。您只需要设置属性的弱/强参数。它几乎消除了所有内存泄漏问题。 至于工具——我不知道除 Instruments 之外的任何其他应用程序。 Instruments 拥有所有... Instruments :) 我需要,用来做测试。

【讨论】:

当然,ARC 是新 Xcode 中真正令人惊叹的功能。帮助开发人员处理内存管理问题。但我认为它是强大应用程序中更重要的因素。 :)

以上是关于使用 Instruments 测试 iOS 应用程序开发的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

了解 Xcode 中的 Instruments,测试泄漏

如何使用 Instruments UIAutomation 测试 iOS Web 应用程序

使用 Instruments.app 从终端进行 Mac、iOS 自动化测试

从 Instruments Javascript 代码访问本机 IOS 函数

ios测试必备技能, Instruments - Allocation测试内存

iOS性能优化:Instruments使用实战