作者:武海峰
链接:http://www.zhihu.com/question/21588174/answer/27439394
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
链接:http://www.zhihu.com/question/21588174/answer/27439394
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
有很多方面需要考虑到,我列几点有明显特征的(我这里特指跟网络有交互的移动互联网应用,不是那种单机版的应用):
看到 @孟双双 补充说的网络环境,我再补充一下网络相关的。网络方面可以重点关注三类测试:
- 功能测试:手机软件的基本功能。倒不一定完全由测试人员来完全执行,但却是所有测试中最重要的,需要测试人员做很好的测试策略和职责划分。
- 稳定性测试:大多数手机应用是需要保证能够稳定运行一定时间的(尤其是对于一些记事类应用),而且在应用的运行状态发生切换后需要继续保持当前的状态,不出现闪退。
- 性能测试:这部分分为两个方面,一部分是后台服务的性能测试(API的响应时间和响应报文大小),一部分是应用自身的性能情况(占用CPU、内存、I/O、电量情况,以及页面到页面之间的切换速度,如果是游戏或动画,还要保证能够在一定的帧率以上)。
- 安全测试:关键的机密数据连接有没有走加密连接;本地数据库有没有做加密处理,是否会被其他恶意应用读取;后台服务的接口是否安全,会不会受SQL注入的影响;应用有没有做混淆,会不会被逆向以及会不会在渠道方被修改重新签名挂马;敏感数据是否存在了SD Card上等等。
- 地理位置定位测试:大多数业务软件(电商类)都支持获取用户的地理位置信息,方便做一些本地业务的定制(尤其是对于O2O行业),至少需要考虑到三方面:1. 城市是否能准确定位;2. 定位位置精度是否符合要求;3. 地理位置名称解析过程无误。
- 应用升级兼容性测试:需要保证应用能够在升级或跨版本升级后一些关键数据得以保留,而不必用户重新设置,诸如用户账户认证信息、亮度设置、用于标示设备的UUID和一些关键的应用功能开关设置等等。
- 设备兼容性测试:随着Android设备的快速分化以及iOS设备的缓慢分化,应用需要适配在不同配置的硬件平台上(不同的CPU体系结构、不同的RAM配置、不同的Flash存储、不同的传感器配置、不同的网络模式等等),同时还要兼顾不同的OS版本,所以需要很大的精力放在系统兼容性和设备兼容性测试上。
- 耦合应用测试:对于今天的移动应用,“孤岛”模式的应用已经不复存在。大多数应用需要跟其他应用进行交互,从而达到“社交化”或“分享”以及“支付”的功能,这样,它在运行时跟其他软件的交互就存在一定的不确定性,这时如果应用有版本升级,我们需要关注升级后的耦合应用跟我们的应用之间的交互是否还依旧有效。
- PUSH跳转测试:现今的移动应用同样还存在通过推送服务来让用户到达特定页面的特征。这样我们需要对PUSH服务能否到达特定页面并正确展示特定页面做测试。
- 统计上报测试:对于大多数应用来说,收集一些用户数据有助于他们对用户行为作出分析,从而对比是不是一些新功能的加入能提高用户的活跃度或转化率。这些信息都需要一定的上报方案才能获取、入库和分析。所以对于QA来说,这部分工作并不弱于一般功能测试。
看到 @孟双双 补充说的网络环境,我再补充一下网络相关的。网络方面可以重点关注三类测试:
- 功能测试(用户体验方面)。在有些2G/3G网络上请求延迟会比较大,建立连接速度慢,以及不断进行大量的分散请求也会导致功耗增大、反复建立连接导致完成所有请求/响应时间长,这些都需要关注到。同时,应用内提供一套支持节约流量的使用模式也是一种可取的途径。另外,应用自身也可以考虑加上一定的离线工作模式,如将一些关键数据在WiFi连接时或有网时进行预取。参考豆瓣电台离线模式或虾米的歌单离线收听。不过此类测试可以通过一些工具来模拟网络延迟大或是丢包严重的情况,用2G/3G网络直接测试的环境构造成本会比较大。
- 适当的性能测试。功能测试已经能发现很多用户体验方面的问题,但这是大概的。如果要特别精细地定位问题瓶颈,需要通过性能测试详细分析延迟出现在哪里,是在建立连接的过程还是服务端响应的过程,或者是应用本地处理返回的数据上。
- 由于运营商在2G/3G网络环境上的复杂配置,很多情况下应用到服务端的连接会出现各种各样的怪象,导致用户无法在操作应用端时成功将请求发往服务端。这部分无法直接通过测试来保证(除非你**真的**有足够的资源可以做好众测)。建议跟运维组联系部署或租用全国范围内的电信、联通、移动网络监控(监控到关键域名下URL的响应)。