对于移动应用,仅仅完成业务功能的测试往往是不够的。如果你的关注点只是功能测试,那么,当你的应用被大量用户安装使用时,就会暴露之前完全没有预料到的问题。比如:
1、流量使用过多;
2、耗电量太大;
3、在某些设备终端上出现崩溃或者闪退的现象;
4、多个移动应用相互切换后,行为异常;
5、在某些设备上无法正常安装或卸载;
6,、弱网环境下,无法正常使用;
7、Android环境下,经常出现ANR(Application NOT Responding);
这篇文章,从交叉事件测试、兼容性测试、流量测试、耗电量测试、弱网测试、边界测试这6个最主要的专项测试来展开。
一、交叉事件测试
交叉事件测试也叫中断测试,是指App执行过程中,有其它事件或者应用中断当前应用执行的测试。
这类测试目前还都是采用手工测试的方式,并且在真机上进行,并不会使用模拟器。
交叉事件,需要覆盖的场景主要包括:
1、多个App同时在后台运行,并交替切换至前台是否影响正常功能;
2、要求相同系统资源的多个app前后台切换是否影响正常功能,比如两个app都需要播放音乐,那么两个app在切换的过程中,播放音乐是否正常;
3、App运行时接受电话和短信;
4、app运行时提示系统升级;
5、App运行时发生系统闹钟时间;
6、app运行时进入低电量模式;
7、app运行时第三方安全软件弹出告警;
8、app运行时网络切换,比如Wifi切换到4G,4G切换到3G登;
兼容性测试
兼容性测试顾名思义就是,要确保App在各种终端设备、各种操作系统、各种屏幕分辨率、各种网络环境下的功能正确性。常见的App兼容性测试需要覆盖以下的测试场景:
1、不同操作系统的兼容性,包括主流的Android和ios版本;
2、主流的设备分辨率下的兼容性;
3、主流移动终端机型的兼容性;
4、同一操作系统中,不同语言设置时的兼容性;
5、不同网络连接下的兼容性,比如WiFi,GPRS,EDGE,CDMA200;
6、在单一设备上,与主流热门App的兼容性,比如微信、抖音、淘宝等;
兼容性测试,通常都需要在真机上执行相同或者类似的测试用例,所以往往采用自动化测试手段。同时,需要覆盖大量的真实测试设备,除了大公司会基于Appium+seleniumGrid+OpenSTF去搭建自己的移动设备私有云平台外,其它公司一般都会使用第三方的移动设备云测平台完成兼容性测试。
第三方的移动设备云测平台,国外最知名的是SaucelLab,国内的是Testin。
流量测试
由于app经常要在移动互联网环境下运行,而移动互联网通常是按照流量来计费的,所以如果你的app耗费的流量过多,那么一定不受欢迎。
流量测试,通常包含以下几个方面的内容:
1、App执行业务操作引起的流量;
2、App后台运行时消耗的流量;
3、安装完成后首次启动耗费的流量;
4、安装包本身的大小;
5、App内购买或者升级需要的流量;
流量测试,往往借助于Android和ios自带的工具进行流量统计,也可以用tcpdump、Wireshark,和Fidder等网络分析工具。
对于Android系统,网络流量信息通常存储在/pro/net/dev目录下,也可以直接利用adb工具获取实时的流量信息。另外,我还推荐一款Android的轻量级性能监控小工具Emmagee,类似于windows系统性能监视器,能够实时显示App运行过程中CPU、内存和流量登信息。
对于ios系统,可以使用xcode自带的性能分析工具集中的network Activity,分析具体的流量使用情况。
但是,流量测试的最终目的,不是获得app流量数据,而是想办法减少app产生的流量。下面是常见的优化方法:
1、启用数据压缩,尤其是图片;
2、启用客户端的缓存机制;
3、启用优化的数据格式,比如同样的信息量,json文件就比xml文件小;
4、遇到既需要压缩又需要加密的场景,一定是先压缩再加密;
5、减少单次GUI操作触发的后台调用数量;
6、每次回传数据尽可能只包括必要的数据;
耗电量测试
耗电量也是一个移动应用能否成功的关键性因素,如果在功能类似的情况下,你的App特别耗电,让设备发热严重,那么你的用户一定会卸载你的App而使用其它的App。最典型的就是地图等导航应用,对耗电量特别敏感。
耗电量测试通常从三个方面来考量:
1、App运行但是没有执行业务操作的耗电量。
2、App运行且密集执行业务操作的耗电量。
3、App后台运行的耗电量。
耗电量检测既有基于硬件的方法,又有基于软件的方法。Android和ios都有各自自己的方法:
1、Android通过adb命令“adb shell dumpsys battery”来获取应用的耗电量信息;
2、ios通过Apple的官方工具Sysdiagnose来收集耗电量信息,然后,可以进一步通过 Instrument 工具链中的 Energy Diagnostics 进行耗电量分析。
弱网测试
与传统PC应用不同,移动应用的网络环境比较多样,经常出现在不同网络切换的场景,即使在同一网络环境下,也会出现网络连接状态时好时坏的情况。比如时高时低的延迟、经常丢包、频繁断线、在乘坐地铁、穿越隧道、和地下车库的场景下经常会发生。
所以,移动应用要保证在复杂网络环境下的质量。具体的做法是:在测试阶段,模拟这些网络环境,在App发布前尽可能多的发现并修复问题。
在这里,我推荐一款非常棒的开源移动网络测试工具:Facebook 的 Augmented Traffic Control(ATC)。
ATC 最好用的地方在于,它能够在移动终端设备上通过 Web界面随时切换不同的网络环境,同时多个移动终端设备可以连接到同一个 Wifi,各自模拟不同的网络环境,相互之间不会有任何影响。也就是说,只要搭建一套 ATC 就能满足你所有的网络模拟需求。
如果你对 ATC 感兴趣,可以在它的官方网站找到详细的使用说明。
边界测试
边界测试是指,移动App在一些临界状态下的行为功能验证测试,基本思路是需要找出各种潜在的临界场景,并对每一类临界场景做验证和测试。主要的场景有:
1、系统内存占用大于90%的场景;
2、系统存储空间大于95%的场景;
3、飞行模式来回切换的场景;
4、App不具有某些系统访问权限的场景,比如App由于隐私设置,不能访问相册或者通讯录等;
5、长时间使用App,系统资源是否异常,比如内存泄漏,过多的链接数等;
6、出现ANR的场景;