iOS测试

专项测试
在功能测试之后,需要来说说专项测试了。专项测试是很多测试类型的统称。在专项测试中,主要需要做性能测试、稳定性测试、兼容性测试、电量测试和网络测试。本文不会将这些测试类型的具体做法都进行介绍。针对 iOS 的特点,主要介绍性能测试中的内存测试、电量测试和网络测试方案。
内存测试。内存测试在 iOS 系统中特别重要。首先,iOS 系统会对应用有内存数限制,超过一定数量程序会被强行关闭。另外,不断少量的内存泄露会使程序卡顿,极大地影响了用户体验。内存测试需要有内存测试工具,主要使用 Xcode 和 Instruments 这两个 Apple 提供的工具。在检测内存时,首先推荐 Xcode 的代码分析功能。选择图 3 中的 Analyze,Xcode 会对项目代码进行内存分析,如果发现有循环引用等问题时,Xcode 会给出提示,以及详细的引用关系,如图 4 所示。
图 3. 选择 analyze 分析


iOS测试_第1张图片
图 3. 选择 analyze 分析

图 4. analyze 结果


iOS测试_第2张图片
图 4. analyze 结果
在对内存静态分析没有问题之后,就需要使用 Instruments 这个工具对内存进行动态扫描了。在 Xcode 中选择 Product>Profile,编译程序并唤起 Instruments,选择 Leaks 模板,操作页面,查看程序是否有内存泄露。
图 5. Instruments 分析结果
iOS测试_第3张图片
图 5. Instruments 分析结果
当 Leaks 模板显示红色条状时(如图 5),说明有明显的内存泄露,可通过 Leaks 的 Call Tree 来查看程序的调用树,如图 6 所示。
图 6. call tree 分析
iOS测试_第4张图片
图 6. call tree 分析

选择 Call Tree 后,勾选左侧的 Invert Call Tree、Hide System Libraries 选项,此时可以看到右侧显示程序中存在内存泄露的方法,单击左侧箭头可以展开内存泄露下程序的调用树,如图 7 所示。在这里你可以详细地看到代码的调用过程,很清楚地定位到有问题的代码位置。
图 7. 泄露定位图


iOS测试_第5张图片
图 7. 泄露定位图
当然,有些并不严重的内存泄露 Instruments 不会用红色标示出来,这时就需要通过查看内存的增长情况来判断是否有内存泄露。例如:内存的分配一直在增长,当退出某一个页面时,内存并没有丝毫的释放。这时就需要仔细地分析和耐心地排查了。具体的一些更细节的内存排查方法,还需要参考苹果官方文档和一些内存专题的文章学习,以进行更加细节的内存问题定位。

电量测试。电量测试在专项测试的优先级中,并没有稳定性和兼容性测试高。但是稳定性和兼容性方面业内已经比较成熟了,在各种技术分享和一些技术文章中也有大量的实践讨论。所以,本文不再针对稳定性和兼容性测试进行描述,直接开始电量测试相关的测试总结。iOS 的耗电量都是一些硬件设备造成的,当然硬件的很多不合理和不必要的使用都是通过软件程序来控制的。所以 Instruments 工具的电量分析会帮助你扫描在 iOS 应用使用过程中各种耗电的硬件是打开还是关闭状态。比如,需要格外关心 GPS 的使用、Wi-Fi 和手机网络的使用频度等。如图 8 所示。此时的电量分析只能通过一些硬件的使用开发来定性地进行分析。
图 8. 电量分析

iOS测试_第6张图片
图 8. 电量分析
在电量分析中,更需要有一款能定量输出具体电量消耗的工具。电量分析可以使用 iOS App 进行检测,具体的 App 名称在此就不具体说明了。App 检测电量都是通过一些软件的算法,虽然已经非常准确,但是还是存在一定的电量误差。最准确的电量测试方法需要使用精密仪器——电量测试仪。电量测试仪的原理是中断所有手机供电(包括电池供电),然后电量测试仪为手机供电。电量测试仪测试出来的电量是手机整体的用电情况,并不是某一个应用使用的电量。所以,在使用电量测试仪时,需要尽量关闭其他应用。
电量测试的过程中为了减小误差保证测试数据的准确,需要注意以下几点:
Case 要有重点;
Case 要尽量的小;
Case 最好是可持续时间长的,比如导航计算,视频播放和音频播放;
Case 如果不可持续,需要重复多次,取平均值。
转载:
http://www.ibm.com/developerworks/cn/mobile/mo-cn-ios-testing/index.html
http://my.oschina.net/bluedreamjn/blog/536049
https://viktyz.gitbooks.io/iosnotebook/content/Notes/Note_00020_20151221.html

你可能感兴趣的:(iOS测试)