之前一直觉得 iOS 测试就是 Xcode 自带那几样,直到接手一个项目才发现,不同测试环节要用的工具差异很大,有的做自动化回归、有的盯实时性能、有的收线上崩溃。这里把 iOS 开发中常用的测试工具按类别做个集锦盘点,每个类别内对比一下各工具的定位。

单元测试与 UI 测试

XCTest 是 Xcode 自带的测试框架,写单元测试和 UI 测试都在它上面,CI 里可以用命令行直接跑。XCUITest 做 UI 自动化,模拟用户操作流程,测试用例可以录制生成。
对于纯原生项目来说,这套方案和 Xcode 集成最好,覆盖率统计、测试报告都能直接用。第三方框架方面,Kiwi 和 Quick 提供更接近 BDD 风格的写法,适合团队习惯行为驱动开发的场景。这类测试工具负责功能正确性,性能问题它们管不到。

性能监控与调优

性能监控工具分两类:专项采集型和日常监控型。Instruments 是专项采集的代表,Time Profiler 看 CPU、Allocations 看内存、Energy Log 看能耗,定位问题非常准,但每次跑要配模板,挂上后 App 本身会变慢,测得的数据和真实用户环境有偏差,适合出问题后的深度分析。
PerfDog 做定点性能采集,跑几分钟出一份 FPS、CPU、内存的对比报告,适合发版前做性能对比。
KeyMob 属于日常监控型,USB 连上 iPhone 就能实时看 CPU、GPU、内存、FPS 曲线,不需要重新编译和配模板,改完代码随手扫一眼曲线有没有异常,适合日常开发中持续观察。它还支持查看过去 6 个月的使用记录和能耗数据,做长时间追踪时用得上。三种类型配合起来,从日常检测到深度分析再到专项对比都覆盖了。

崩溃收集与分析

线上崩溃收集用 Firebase Crashlytics 或 Sentry,能自动上传崩溃堆栈和出现频率,配合符号表定位代码问题。测试阶段可以用 Xcode Organizer 看设备崩溃日志,也可以把设备日志导出来手动分析。
KeyMob 也提供崩溃日志分析能力,支持导出和查看设备上的 crash report,还能对崩溃日志做符号化和格式化处理,测试过程中不用专门开 Xcode 就能处理,对崩溃文件的删除管理也支持。

日志调试

Xcode 控制台能看 NSLog 和 OSLog,按进程过滤,也可以查看设备日志。调试阶段频繁插拔设备看日志的话,用 KeyMob 这类工具的日志面板更方便,连上 iPhone 就能实时过滤按进程名和关键词查,崩溃日志也能一起处理,不用在 Xcode 和设备之间来回切。

真机测试平台

TestFlight 做内测分发,和 App Store Connect 深度打通,外部测试者最多 10000 人。Firebase Test Lab 做云端自动化测试,录制脚本在云端真机上回放,适合发版前跑兼容性回归。BrowserStack 做远程真机调试,浏览器里操作真实 iPhone,适合人工 UI 走查。这些平台解决的是分发和远程设备的问题,侧重点不一样,按团队需求选就行。各分类的测试工具组合起来,就是一套完整的 iOS 测试方案。