xcode developer tools简介
一、instruments
Instruments 是性能分析、动态跟踪 和分析OS X以及iOS代码的测试工具。
常用的有四种:
- Allocations:用来检查内存分配,跟踪过程的匿名虚拟内存和堆的对象提供类名和可选保留/释放历史
- Leaks:一般的查看内存使用情况,检查泄漏的内存,并提供了所有活动的分配和泄漏模块的类对象分配统计信息以及内存地址历史记录
- Time Profiler:分析代码的执行时间,执行对系统的CPU上运行的进程低负载时间为基础采样
- Zombies:检查是否访问了僵尸对象
其他的:
- Blank:创建一个空的模板,可以从Library库中添加其他模板
- Activity Monitor:显示器处理的CPU、内存和网络使用情况统计
- Automation:用JavaScript语言编写,主要用于分析应用的性能和用户行为,模仿/击发被请求的事件,利用它可以完成对被测应用的简单的UI测试及相关功能测试
- Cocoa Layout:观察约束变化,找出布局代码的问题所在。
- Core Animation:用来检测Core Animation性能的,给我们提供了周期性的FPS,并且考虑到了发生在程序之外的动画,界面滑动FPS可以进行测试
- Core Data:监测读取、缓存未命中、保存等操作,能直观显示是否保存次数远超实际需要
- Energy Diagnostic :用于Xcode下的Instruments来分析手机电量消耗的。(必须是真机才有电量)
- GPU Driver :可以测量GPU的利用率,同样也是一个很好的来判断和GPU相关动画性能的指示器。它同样也提供了类似Core Animtaion那样显示FPS的工具。
- Network:分析应用程序如何使用TCP / IP和UDP / IP连接使用连接仪器。就是检查手机网速的。(这个最好是真机)
备注:只有本地项目通过xcode安装到测试机(真机及模拟器)的测试应用才会没有权限的问题,如果直接监测非本地编译安装的测试应用,会报错权限或者证书的问题。
总结:测试人员可以借助该工具监测应用性能,开发人员可以借助该工具定位到内存泄漏的具体代码位置等(需源代码)。
二、simulators
主要作用:模拟iOS平台设备,在模拟器上运行对应的程序,以方便没有实体设备的时候去调试程序。
亲测结果:解压禅聊ipa文件,直接将Runner.app文件拖拽至模拟器后,不能直接打开,搜索后发现只能安装基于源代码打包出来的 App Bundle。具体参考https://www.cnblogs.com/lulushen/p/9087239.html
可安装本地项目到指定模拟器上运行调试,如下图:
模拟器特点:
①可多开
②可拖拽控制大小
③可截图,示例命令行:xcrun simctl io booted screenshot screenshot.png
④可通过无线调试真机,亲测后发现有报错,暂无解决方案,如下图:
⑤finder与simulator共享文件夹,运行命令:xcrun simctl addmedia booted <PATH TO MEDIA FILE>
亲测后发现有报错,暂无解决方案,如下图:
⑥通过simulators打开URL,如命令:xcrun simctl openurl booted http://www.baidu.com
模拟器会启用safari打开百度的页面
总结:该工具主要对开发有用,对于测试,实在没有真机的情况下可用来安装测试应用,但在没有源代码的情况下安装测试应用非常麻烦。
三、Accessibility Inspector
简介:可以非常方便快速地获取iOS APP中各个控件元素的层级结构,有利于UI automation的实现。
如上图:左上角选择测试机后,点击蓝色定位button,鼠标移动到某元素上后,右侧会显示该元素的相关信息。
总结:移动端自动化时可用于定位元素,但相对于其他元素获取工具,这个不是很直观,比较逊色。
四、FileMerge
FileMerge可进行代码比较、合并的工具。
示例:
①选择要比对的两个文件夹,点compare
②比较完成后,会显示比较结果,灰色文件表示相同,黑色文件表示不同。
③双击黑色文件,可打开具体比较的页面。
④右下角选择merge操作
总结:开发merge代码可使用,对日常测试工作用处不大。
五、CreateML
CreateML是快速创建机器学习模型的工具
可参考https://www.jianshu.com/p/a08ad66d8ad2
总结:目前我们的应用与机器学习无关,暂无使用的场景。
六、Reality Composer
可以直观地创建3D内容,设置3D内容的交互动作,位置,材质等,实时预览,在代码中方便地调用
可参考:https://blog.csdn.net/shadowcz007/article/details/94420410
总结:目前暂无使用场景。