INSTRUMENTS调试工具的使用(十)
版本记录
版本号 | 时间 |
---|---|
V1.0 | 2017.06.24 |
前言
我们在做app的时候,不是做完功能就结束了,很多时候是需要进行检查和优化的,而xcode自带了一个很好的检查工具,可以检测内存泄漏。还可以查看哪一个方法比较耗时。还可以检测离屏渲染等等,随后的几篇我们就说一下这个工具的使用。感兴趣的可以看这几篇。
1.INSTRUMENTS调试工具的使用(一)
2.INSTRUMENTS调试工具的使用(二)
3.INSTRUMENTS调试工具的使用(三)
4.INSTRUMENTS调试工具的使用(四)
5.INSTRUMENTS调试工具的使用(五)
6.INSTRUMENTS调试工具的使用(六)
7.INSTRUMENTS调试工具的使用(七)
8.INSTRUMENTS调试工具的使用(八)
9.INSTRUMENTS调试工具的使用(九)
这一篇就先说一下线程与自动化测试(利用脚本)相关。
二十六、Threads/Locks Instruments[线程相关]
以下 instruments 收集线程相关的数据。
Java线程(Java Thread)
Java Thread instrument 工具记录 Java 线程的初始化和销毁。它显示:
- 每个测量的时间
- 总线程数
你可以指定特定颜色标示线程运行时,等待,和阻塞的状态。
二十七、UI Automation[界面自动化相关]
使用Automation Instrument工具
Automation instrument 工具允许你让 iOS 应用的用户界面测试自动化。自动化 界面测试可以让你:
- 省去关键人员和释放其他工作资源
- 执行更多综合测试
- 开发可重复的回归测试
- 减少程序错误
- 高开发周期,产品更新
Automation instrument 工具由你的测试脚本指导,演示你应用的用户界面元素, 允许你记录分析结果。自动化功能可以模拟许多用户设备支持的用户操作。Automation instrument 工具的一个最大的好处是可以可以和其他 instruments 工具一起执行复杂的测试,比如跟踪内存泄露和隔离性能问题的原因。
注意:为了保护,该 instrument 工具不允许你处理任何和你证书不相关的进程。这包括拷 贝任何在 iTunes App Store 下载的应用。
重要:模拟动作可能无法防止测试设备自动锁定屏幕。所以在设备上运行测试之前,你应该 设置设备的 Auto-Lock 偏好设置为 Never(设置->通用->自动锁定->永不)。
输出测试结果和数据
你的脚本报告日志信息给 Automation instrument 工具,而 instrument 工具收 集并报告给你分析结果。
当编写你测试脚本时,如果为了帮你诊断出现的任何故障的地方,你应该尽可能 的输出更多的信息。最低限度是当每个脚本开始和结束,确定测试执行,并记录通过 和失败状态时,你应该输出日志。这种最小记录在 UI 自动化的自动完成的。你只需 要简单的使用你的测试脚本的名称来调用 logStart,运行你的测试脚本,然后合适 的时候调用 logPass 或者 logFail。
二十八、User Interface Instruments[用户界面相关]
以下的 instruments 工具为应用层事件收集数据。
Cocoa事件(Cocoa Events)
Cocoa Events instrument 工具记录通过 NSApplication 类 sendEvent:方法发送事件。该方法是分配事件给 Cocoa 应用的主要方法。你可以使用该 instrument 工具 来把应用程序事件和其他应用程序行为关联起来,比如内存和 CPU 占有率等。该 instrument 工具运行在当个进程之上。它的实现使用了 DTrace 技术,并且可以导入 DTrace 脚本。
该 instrument 工具捕获被发送事件的类型。跟踪面板可以被设置来显示以下任何数据信息:
- 栈深度(Stack depth)
- 线程 ID(Thread ID)
- 事件种类(The Event Kind)
Carbon事件(Carbon Events)
Carbon Events instrument 工具记录由 Carbon Event Manager 里面的函数 WaitNextEvent 返回的事件。你可以使用该 instrument 来把应用的事件和其他应用 的行为关联起来,比如内存和 CPU 占用率等。该 instrument 工具运行在单个进程之 上。它的实现使用了 DTrace 技术,并可以导入 DTrace 脚本。
该 instrument 工具捕获发送事件的类型。跟踪面板可以被设置来显示以下数据信息:
- 栈深度(Stack depth)
- 线程 ID(Thread ID)
- 事件种类(The Event Kind)
后记
关于instruments的界面以及基础工具的介绍就先写这么多了,以后会增加具体使用时的用例,这样理论结合工程原码更能大家深入理解,instruments工具非常强大和有意思,感兴趣的可以看一下。