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

     2023-03-07     182

关键词:

【中文标题】使用 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 UIAutomation 测试 iOS Web 应用程序

】如何使用InstrumentsUIAutomation测试iOSWeb应用程序【英文标题】:HowtotestiOSwebapplicationusingInstrumentsUIAutomation【发布时间】:2012-11-0607:45:03【问题描述】:当我测试本机应用程序时,我可以选择目标(选择目标列表中列出的来自真实... 查看详情

Instruments:我可以使用 Instruments 命令行模式运行 iOS 应用程序吗?

】Instruments:我可以使用Instruments命令行模式运行iOS应用程序吗?【英文标题】:Instruments:CanIrunaniOSAppusingInstrumentscommandlinemode?【发布时间】:2013-05-0217:19:31【问题描述】:我从这个问题中读到:CantheUIAutomationinstrumentberunfromthecomma... 查看详情

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

】使用Instruments.app从终端进行Mac、iOS自动化测试【英文标题】:Mac,iOSautomationtestfromTerminalusinginstruments.app【发布时间】:2011-11-1606:50:40【问题描述】:我正在使用以下命令从命令行运行iOSUIAutomation测试:instruments-t/Developer/Platforms/... 查看详情

针对 iPhone 应用的 Instruments UI 自动化测试

】针对iPhone应用的InstrumentsUI自动化测试【英文标题】:InstrumentsUIAutomationtestsforiPhoneapp【发布时间】:2012-04-2310:55:55【问题描述】:我是UI自动化使用工具的新手,我有以下问题:-应用程序启动,我得到主窗口屏幕(其中包含登... 查看详情

ios性能优化:instruments使用实战

最近采用Instruments来分析整个应用程序的性能.发现很多有意思的点,以及性能优化和一些分析性能消耗的技巧,小结如下。Instruments使用技巧关于Instruments官方有一个很有用的用户使用Guide,当然如果不习惯官方英文可以在这里找... 查看详情

没有 Xcode 项目文件的 iOS 应用程序测试

...他们也不愿意共享项目文件。那么请告诉我是否可以使用Instruments识别应用程序的本机对象?【问题讨论】 查看详情

Apple Instruments 在跟踪 iOS 分配时停止工作

】AppleInstruments在跟踪iOS分配时停止工作【英文标题】:AppleInstrumentsstopsworkingwhentracingiOSallocations【发布时间】:2015-09-0810:44:22【问题描述】:我正在使用Instruments的Allocations工具检查XamariniOS应用的内存使用情况。我遇到了一个问... 查看详情

了解 Xcode 中的 Instruments,测试泄漏

】了解Xcode中的Instruments,测试泄漏【英文标题】:UnderstandingInstrumentsinXcode,testingforleaks【发布时间】:2012-01-0502:36:07【问题描述】:我刚开始使用Instruments,这是一个很好的小工具,用于测试内存分配/泄漏以及所有这些很棒的东... 查看详情

如何使用uiautomation进行ios自动化测试

...已经切换成5.1了,因此它可能是iPhone5.1模拟器)。3.启动Instruments(Product>Profile),或者通过⌘I。4.选择左边的iOSSimulator,然后再选择Automation模板,然后点击“Profile”。5.Instruments就已经启动好后,然后直接开始录制了。这里先停... 查看详情

Xcode Instruments - 测试框架?

】XcodeInstruments-测试框架?【英文标题】:XcodeInstruments-testingaframework?【发布时间】:2017-05-0415:18:59【问题描述】:我们已经编写了非ARCObjective-C框架,并希望在Instruments中测试它是否存在漏洞。我们习惯于测试一个完整的应用程... 查看详情

Instruments 指出内存不足警告,但内存使用率非常低

】Instruments指出内存不足警告,但内存使用率非常低【英文标题】:Instrumentspointsoutlowmemorywarning,butverylowmemoryusage【发布时间】:2012-01-2714:50:04【问题描述】:我使用工具来测试我的应用。在我的应用程序中,有一个tableView可以加... 查看详情

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

】从InstrumentsJavascript代码访问本机IOS函数【英文标题】:AccessingnativeIOSfunctionsfromInstrumentsJavascriptcode【发布时间】:2013-09-0206:43:11【问题描述】:有人可以帮我解决这个问题吗?我有一个访问通讯录的ObjectiveC应用程序;建立用户... 查看详情

UIAutomation 功能测试的 iOS 代码覆盖率

...。现在我想运行我的UIAutomation功能测试,但是一旦我使用Instruments命令开始我的测试,模拟 查看详情

Instruments:Allocations:VM 信息对 iOS 应用有用吗?

】Instruments:Allocations:VM信息对iOS应用有用吗?【英文标题】:Instruments:Allocations:IstheVMinformationusefultoaniOSapp?【发布时间】:2013-11-2806:03:47【问题描述】:我有一个非常大的通用二进制文件。堆分配中的活动字节是我所期望的但... 查看详情

iOS:以 txt 格式从 Instruments 获取日志

】iOS:以txt格式从Instruments获取日志【英文标题】:iOS:FetchlogsfromInstrumentsintxtformat【发布时间】:2012-02-0301:14:25【问题描述】:有什么方法可以获取从Instrument生成的文本格式的测试用例日志。我希望将其传递给文本文件,以便我... 查看详情

UI Automation Instruments:如何重置应用程序状态?

】UIAutomationInstruments:如何重置应用程序状态?【英文标题】:UIAutomationInstruments:Howtoresettheappstate?【发布时间】:2013-11-0608:10:29【问题描述】:我是UIAutomationwithInstruments的新手,但我还没有找到重置应用状态的方法。我应该如何... 查看详情

在 Instruments 中运行 SenTestingKit 单元测试

】在Instruments中运行SenTestingKit单元测试【英文标题】:RunningSenTestingKitunittestsinInstruments【发布时间】:2012-06-1307:29:47【问题描述】:我正在开发一个数据库访问库,并尝试使用已编写的单元测试来检查内存泄漏。这些是基于SenTes... 查看详情

(ios + phone gap) - 使用仪器配置最终应用程序

...最终应用程序【英文标题】:(ios+phonegap)-Profilefinalappwithinstruments【发布时间】:2011-09-2710:15:15【问题描述】:是否可以使用内置的性能监控工具Instruments为IOS测试phonegap应用程序?当我在仪器中运行APP时,它会显示“无法获取pid12... 查看详情