[本文出自天外归云的博客园]
概述
在传统的软件测试流程中,每一期需求从开发到上线都要经历从需求分析与评审、测试用例评审、开发、测试、发布的流程。其中测试包含了后台测试、前端web测试、客户端测试。后台测试又包括后台代码逻辑测试、接口测试、接口压力测试等,web端测试包含了前端页面的UI界面测试、PC与移动端浏览器兼容性测试和功能测试等,而客户端测试包含的测试项目较多,而每项测试又相对技术含量较高,从而引入了专项测试的概念。和针对客户端每期需求所做的功能测试不同,专项测试的结果虽然与产品的具体功能相关,又包含独立于产品需求功能之外的部分。这也使得我们在设计客户端测试用例的时候经常会把属于专项测试中的部分内容忽略掉,从而导致了一些在设计测试用例思路上的疏漏。
移动app专项测试有哪些
从专项测试的概念出发,移动端app的专项测试包括:
安装包测试、兼容性测试、内存泄露测试、耗电量测试、流量测试、冲突测试、弱网测试、接口容错测试、系统权限测试、过度绘制测试。
在现有的业务中引入专项测试,我们需要考虑以下三点:
1. When to 专项测试?
2. How to 专项测试?
3. Why to 专项测试?
安装包测试
安装包测试介绍
安装包测试就是对包括安装、卸载、升级三种方式在内的提示信息的测试、安装和升级后的包名称、版本信息、logo、客户端主要功能的验证与测试。安装包测试的重要性不言而喻,它直接能够影响用户下载量和app激活率,间接影响用户转化率。
安装包测试主要包括以下几点:
1)常规安装包测试;
2)从低版本到高版本的覆盖安装测试;
3)从低版本到高版本的app内部升级测试;
4)过程中手机内存、硬盘不足情况下的安装包测试;
5)安装杀毒软件的前提下的安装包测试;
6)过程中强行关机、断网、电话呼入呼出、跳转到其他app内进行操作的安装包测试;
7)中断测试(检查是否能够回退到之前状态):安装中断、卸载中断、升级中断;
8)不同iOS版本、安卓版本的安装包测试。
什么时候进行安装包测试?
安装包的测试在软件测试流程中的阶段要先于功能测试阶段。
兼容性测试
兼容性测试介绍
兼容性测试就是针对app所处硬件与软件环境的不同而进行的测试。兼容性测试很重要,如果一个app换个手机就闪退,换个系统就抛异常,无疑会间接影响到用户对产品的评价,直接与间接的增加用户的流失率、减少app的下载量。
兼容性测试主要包括以下几种:
1)操作系统版本兼容:Andoird版本,iOS版本;
2)屏幕尺寸与分辨率兼容:
2.8英寸分辨率为640x480(VGA) 像素密度286PPI
3.5英寸分辨率为960x640(DVGA) 像素密度326PPI(iPhone4)
4.0英寸分辨率为1136x640(HD) 像素密度330PPI(iPhone5)
4.7英寸分辨率为1280x720(HD) 像素密度312PPI
... ...
10 英寸分辨率为2560x1600 像素密度299ppi
3)Android ROM兼容:小米、华为、魅族、中兴、谷歌、三星;
4)网络类型兼容:Wifi、3G、4G。
什么时候进行兼容性测试?
兼容性测试一般在功能测试没有问题的基础上展开,在软件测试流程中的阶段排在功能测试阶段之后、发版上线阶段之前。
内存泄露测试
内存泄露测试介绍
内存泄露测试就是为了检测在测试的过程中是否有内存泄露的情况的发生而进行的测试。偶尔的内存泄漏现象一般用户是难以察觉的,但是这部分的测试仍然非常有必要,因为内存泄露的堆积会最终消耗尽系统所有的内存,严重影响机器的性能。内存泄露测试需要借助于工具。
什么时候进行内存泄露测试
内存泄露测试贯穿着整个软件测试流程,所以内存泄露测试和功能测试同阶段进行。
耗电量测试
耗电量测试介绍
耗电量测试就是在不同的场景下为检测电量消耗程度而进行的测试。之所以要进行耗电量测试,举例来说,有用户反馈在用一款app的时候发现电量消耗很快,最后把app卸载了以后一切恢复了正常。如果用户间接的评论了产品,用户的评价将直接影响app的下载量。耗电量的测试需要借助于工具。几个典型的耗电场景如下:
1)定位,尤其是调用GPS定位;
2)网络传输,尤其是非Wifi环境;
3)屏幕亮度;
4)CPU频率(一些客户端内的操作会增加CPU频率);
5)内存调度频度(同上);
6)锁屏与唤醒的时间和次数。
耗电量测试用例的设计需围绕以上几点,结合需求与功能进行展开。
什么时候进行耗电量测试
耗电量测试可以和功能测试同阶段进行。
流量测试
流量测试介绍
流量测试就是在手机上面点击想要测试的界面或者一组场景,然后查看用了多少流量的测试。流量测试很重要,有些产品的流量消耗是严重的,而一些用户安装了流量统计软件,用户可能会考虑卸载掉那些流量消耗严重的软件或在没有wifi的情况下禁止使用相应的app。流量测试需要借助于工具。
什么时候进行流量测试
流量测试可以在确保功能没有问题的前提下与功能测试同阶段进行。
冲突测试
冲突测试介绍
冲突测试就是在运行某一程序的功能时被第三方功能或软件干扰的测试。冲突测试是一种对软件状态的测试,软件状态又分为“开始”、“挂起”、“结束”三种,所以冲突测试也是模拟干扰软件运行“开始”、“挂起”、“结束”三种状态的测试。在模块的操作过程中触发一些常见的打断,测试客户端对于事件优先级的处理是否影响功能。冲突测试的难点在要打断一个事件需要事先算好时间,而对于有些速度快难以打断的状态来说想要实现冲突测试有时需要借助于一些自动化的手段来实现。
冲突测试主要关注的点:
1)来电呼入;
2)网络切换;
3)短信通知;
4)Push消息;
5)闹钟;
6)USB插入;
7)挂起;
8)程序历史记录启动;
9)长按键关机;
10)自动横屏;
11)锁屏待机;
什么时候进行冲突测试
冲突测试涉及整个软件测试流程,例如:安装包测试中就涉及了冲突测试。所以,冲突测试贯穿整个软件测试流程,先于功能测试阶段进行。
弱网测试
弱网测试介绍
弱网测试就是在不同网络环境下对app所进行的测试。受网络状况影响的功能往往与后台接口相关,客户端内数据的更新也是通过调用后台接口并接收返回来的数据而完成的。设计弱网测试用例的关键在于分析哪些功能与后台接口挂钩,凡是与后台接口挂钩的功能,都有必要考虑是否需要针对性的设计弱网测试用例。弱网的模拟需要借助于工具。
什么时候进行弱网测试
弱网测试和功能测试同阶段进行。
接口容错测试
接口容错测试介绍
接口容错测试就是对于服务端接口返回异常或不合理的数据的情况下,验证客户端内是否能够正确处理异常数据的测试。接口返回超时及返回异常都应该对应在客户端内有合理的提示以提高用户体验度。接口容错测试需要借助抓包工具来完成对接口返回数据的修改。
什么时候进行接口容错测试
接口容错测试与功能测试同阶段进行。
系统权限测试
系统权限测试介绍
系统权限测试就是针对app需要获取系统权限处所设计的测试。在测试的过程中主要检查客户端内对于获取系统权限处的处理是否友好,功能上是否正常。我们需要对涉及到获取系统权限的功能模块做一个统计,从而确定设计测试用例的范围。往往涉及系统权限测试相关的功能点也包含在客户端每期的需求当中,所以涉及系统权限方面的测试点一般不容易被忽略。
测试用例需包含对app设置了“允许权限”、“提醒权限”、“禁止权限”三种情况:
1)允许权限:app内相关模块功能正常;
2)提醒权限:app内相关模块功能触发时会出现提醒;
3)禁止权限:app内相关模块功能触发时会友好提示,并不会有异常和崩溃的现象。
什么时候进行系统权限测试
系统权限测试与功能测试同阶段进行。
过度绘制测试
过度绘制测试介绍
过度绘制是指在一帧的时间内(16.67ms)像素被绘制了多次,每次绘制都会占用CPU,当绘制超时时就会出现卡顿现象。而过度绘制测试就是要检查在测试过程中是否有过度绘制的现象发生。测试往往需要借助于工具,因为过度绘制现象肉眼很难能够分辨。Android系统的开发者工具中提供了“强制进行GPU渲染”功能可以帮助我们来发现过度绘制现象。产品并不知道哪些功能模块会有过度绘制的风险,所以并不会把涉及过度绘制的内容写到需求说明文档中。由于需要对可能发生过度绘制的地方有一定的把握能力(一般在涉及Activity跳转的地方返回容易有过度绘制现象发生。例如:从Activity A跳转到Activity B后Activity A没有被销毁,从Activity B返回Activity A后Activity A又被重现创建,这时就容易出现过度绘制),所以实际测试中我们很容易将这部分测试用例的设计忽略掉。
过度绘制主要关注的地方举例(拿“一元乐购”app来说):
1)首页的快捷入口icon(充值、1元变20、晒单、易中商品);
2)乐购头条滚动栏可点击的部分。
想要设计这部分的测试用例,需要:
1)弄清app内可能存在的所有Activity;
2)确定能触发Activity之间跳转的功能模块;
什么时候进行过度绘制测试
过度绘制测试与功能测试同阶段进行。
移动app专项测试实施方案
从以上整体对专项测试阶段的把握来看,分三队:
第一队:安装包测试、冲突测试;
第二队:内存泄露测试、耗电量测试、流量测试、弱网测试、接口容错测试、系统权限测试、过度绘制测试;
第三队:兼容性测试。
具体实施方案
安装包测试:建议对安装方面有改动时测,无需每次都测;
冲突测试:冲突测试用例要和功能测试用例一起设计到客户端功能测试用例中;
内存泄露测试:建议通过自动化工具对测试过程全程进行监控,一旦发现泄露情况,客户端屏幕截图、收集泄露前后的日志、发送popo给客户端开发;
耗电量测试:建议通过自动化工具进行检测;
流量测试:建议通过自动化工具辅助完成测试,要求工具可以检测一段时间内app的流量,配合手工点击本次需求所涉及到的客户端与请求操作相关的按钮或操作结合设定的流量标注来确定是否有严重的流量问题;
弱网测试:建议通过自动化工具模拟各种程度的弱网,对涉及到的客户端与请求操作相关的按钮或操作进行弱网测试;
接口容错测试:接口容错测试用例要和功能测试用例一起设计到客户端功能测试用例中;
系统权限测试:系统权限测试用例要和功能测试用例一起设计到客户端功能测试用例中;
过度绘制测试:过度绘制测试用例要和功能测试用例一起设计到客户端功能测试用例中;
兼容性测试:借助兼容性测试平台完成(传统做法:到处借手机点点点)。
实施流程
对以上实施方案再次进行整理归纳,可以对传统测试流程进行改进。对于每次需求,分以下阶段——
1. 确认阶段:
1)确定涉及Activity之间跳转的功能模块;
2)确定与后台请求相关的所有按钮或操作。
2. 测试用例设计阶段:
1)功能测试用例;
2)冲突测试用例;
3)接口容错测试用例;
4)系统权限测试用例;
5)过度绘制测试用例。
3. 测试执行阶段:
1)手工测试:安装包测试(按需)、功能测试;
2)半自动测试(一半靠手点,一半靠工具):流量测试、弱网测试;
3)自动化测试(完全靠工具):内存泄露测试、耗电量测试(选取主要机型进行);
4)兼容性测试(借助于兼容性测试平台手工测试)。
自动化工具
1)自动化流量测试辅助工具,要求:可以进行一段时间内的流量统计;
2)自动化弱网测试辅助工具,要求:可以选择设置各种程度的弱网;
3)内存泄露自动化测试工具;
4)耗电量自动化测试工具。
总结
现在的移动app软件测试流程可以归纳为:四个工具、三个阶段、一个平台。
相对传统移动app测试流程的优化:
1)极大程度上丰富与完善了功能测试用例的设计方法;
2)极大程度上实现了自动化过程在测试中的开发与使用。