军规六 设计通知和消息展示
使用App过程中,最烦的莫过于接收到各种已安装的App发送的各类通知,而这些通知的行为和触发的方式又各有不同,让用户感到无所适从。
1,测试App安装时是否明确申明在用户使用App时需要用到的权限,否则App在提交到操作系统官方应用商店时会被拒绝,或者在用户安装App的时候被拒绝。
2,测试App在用户使用过程中是否有合适的通知和消息显示,例如GPS、蓝牙、用户照片或短信、用户位置等资源。如果测试人员在使用App过程中改变权限获取本不该得到的权限时,在iOS上App会访问不到它想获得的资源,在Android平台上,操作系统会弹出安全性异常的提示框,并强制关闭App。
在此时,如何才能提高向用户申请访问权限的成功率?不妨检查一下App在需要用户授权时是否遵循以下的设计原则和实践:
第一点,App向用户申请访问权限的第一次很关键
第一次申请访问权限的契机很重要,一旦用户点击了“不允许”后很难再改变用户的想法,例如iOS系统设置中如需改变权限需要较为繁琐的步骤。因此,不要在用户第一次打开App时候直接申请访问权限,过于突然,安全考虑,用户更倾向于选择“不允许”。而是先向用户讲述授权后的便利,用户有所了解后再次申请访问权限。
第二点,给用户更多机会了解App之后再次申请权限
在申请权限时,“Not Now”比“Don't Allow”更有效,可以等用户对App有更多了解后再次询问。虽然这种方法会向用户询问两次,但是避免了第一次被用户直接拒绝。另外,也可在第一次申请时使用图片等形式更形象地展示授权的好处。
第三点,让用户来触发什么时候对App进行访问权限的授权
让用户来触发什么时候对App进行访问权限的授权,因为只有用户在清楚自己下一步想要做什么的时候,才会对App申请的访问权限作出正确的判断。但是这种方式在考量和设计方面最为复杂。
可以看出,对于用户越是友好和便利的App申请访问权限的方式,测试用例的设计也就越复杂,因此测试用例中需要覆盖能触发每种App申请访问权限的方式的测试路径。
3,测试App在后台运行时是否有合适的通知和消息显示,由于用户可以在iOS的通知中心中对App的通知方式进行单独设置,如果为App设置了不同通知方式,测试人员需要对这几种通知方式都进行测试,来避免出现诸如用户关闭了锁屏页面的App消息通知,但是却看到了App通知的状况。
还有两个测试点需要注意:
第一点,iOS的状态栏在通话、导航、录音、使用热点等情况下会变为双倍宽度显示,需要测试人员在使用App中状态栏从标准宽度变为双倍宽度,还有从双倍宽度变为标准宽度的情况进行测试。另外,根据App展示通知和消息时,需要思考用户可以对App进行什么样的操作,比如点击通知或消息,进入App等。
第二点,iOS允许App在其图标右上角显示未读信息的计数。值得注意的是,计数显示是由iOS操作系统处理的,但是计数的数字却是App提供的。这样会出现一个问题:已经通过通知栏等方式读取了信息,但是并没有从App计数中减去,导致App图标右上角未读信息的计数显示和真实的计数不一致。
4,测试App的消息推送功能,针对不同的推送消息方式,测试人员需要为它们单独设计测试用例。
对App自己完成消息推送的情况,测试人员需要测试关闭App自身服务或App后台服务器时,App是否会崩溃,App对于新消息的处理,以及App消息推送的性能等。
对App采用推送通知框架的情况,测试人员可以让推送通知框架的提供商关注后台服务器出错的场景,但是依然需要测试在App接收到错误的推送通知,推送通知框架服务不可用时App会如何处理。
5,测试App在出错时是否有合适的通知和消息显示。在测试正常功能的消息显示之外,测试人员还需要测试在出错的场景中App是否给用户显示了恰当的信息。显然,给用户只显示便于技术人员定位问题的错误代码并不能解决用户的问题;给用户显示很长或者步骤很多的解决方法或提示也不能解决用户的问题;给用户显示的提示信息里打印出log就更不可取了。在信息过剩的时代,用户不会一直停留在App中关注消息的变化,所以我们需要通过消息的推送和展示,增加用户对于App的粘性。
军规七 支持操作系统特性
只有了解iOS和Android操作系统的不同设计理念,才能更好地设计测试用例,更全面地测试App。
1,Android的App测试设备的碎片化
对于iOS操作系统,App只需要支持有限的设备和分辨率,不需要像Android测试App时操心设备的碎片化对App的影响。Google公司采用的是开放的策略,所以很多厂商都会对Android进行订制,使得采用Android操作系统的设备铺天盖地,Android的碎片化也很严重。
2,Android App更容易受到恶意软件的攻击
开放策略下导致App的apk安装文件被破解的几率比iOS要高一些,所以更需要确保App的安全。
3,iOS和Android对于App间通信的处理方式不一样
iOS操作系统对于App的运行机制做出了限制,绝大多数情况下App进入后台后会马上进入suspend或terminate状态,也就是说不能执行代码;iOS中也没有类似Android中Service的概念,但存在某些例外。
某些重要的任务,例如保存用户数据、网络下载等,可以申请一小段限定时间的后台运行时间,长度大概在600s左右,所以在短时间段内能进行的操作非常有限。
某些特点类型的App可以获得没有时间限制的后台运行,包括音乐播放类,音频录制类,定位/导航类,VoIP类,下载类,定期更新类。
Apple公司提供了iOS内的App调用协议URL Schema来处理。
4,Android和iOS就是否支持扩展存储有所不同
5,iOS和Android对Widget的实现和使用不同
6,测试Android App对于Dalvik和ART运行环境(RunTime)的兼容性
7,测试iOS App在特定设置下的行为
军规八 及时显示和同步消息
对于消息显示,测试人员在测试过程中不能只是简单地验证消息在各种情况下是否能正常的显示,还需要考虑到App中各种缓存对于消息显示的影响。
一般在以下的环境中,我们才会在App中使用缓存机制:
1,App需要提供网络服务;
2,App中至少有一部分数据不需要实时更新,哪怕是很短时间(3~5min)的缓存也是有好处的;
3,App可以针对某种数据设定固定的过期时间,而不会导致其功能和用户体验出现问题;
App使用缓存机制有哪些好处呢?
1,对用户来说可以减少流量的消耗;
2,减少由于网速过慢而导致用户长时间等待的状况,App的响应速度变快了;
3,App因从网络加载数据而出错的情况会大大减少,提高了App的稳定性;
4,App在一定程度上可以算是支持离线浏览;
5,对App开发和维护团队来说,则可以减轻App请求对服务器进行大量访问的压力。
我们在设计App的过程中一般都会采用“内存”、“文件”、“网络”的顺序结构来设计App的缓存机制。
在测试时需要考虑另外几点:
1,对于同时支持iOS和Android的App,需要在这两种操作系统平台上安装App,测试App消息的同步显示;
2,在同一种操作平台上也需要在多个设备上安装App;
3,需要选取App支持消息同步显示的不同版本进行测试;
4,对于App在安装和登录后被关闭了的情况,测试在别的App消息都被同步了之后,再次打开这个App,观察是否会接收到别的App上被同步的消息。
军规九 适应特定用户界面对功能和显示的影响
同一个App在不同设备厂商所提供的用户界面上显示效果会各有不同。例如:
1,三星的TouchWiz用户界面;
2,HTC的Sense用户界面;
3,LG的UX用户界面;
4,小米的米柚MIUI用户界面;
5,魅族的Flyme用户界面;
6,Sony的Xperia UI用户界面;
对于iOS App而言,在iOS 8出现之前Apple公司对于产品的升级,都会考虑到不同设备上分辨率的不一致,但是随着iOS 8和iPhone 6以及6Plus的推出,iPhone 6以及6Plus上具备的放大显示的功能会让App在标准显示和放大显示的模式下,显示效果有所不同,所以测试人员需要对这两种模式下的显示效果进行测试。
军规十 支持多种文件格式
1,App支持Office文件
App如果需要支持微软Office的各种文件格式,测试人员在测试的时候就需要对每一种文件格式进行验证,确保App在打开这些文件时对应的功能都能正常工作,数据也能正常显示。
2,App支持图片文件
如果App需要处理图片文件,测试人员首先需要确定哪些图片格式是需要支持的,然后根据优先级来测试相应的图片功能。图片的格式很多,通常如果不是有特殊要求,一般只需要支持几种通用的图片格式:BMP,JPEG,PNG,GIF和TIFF。另外,需要App至少能对图片进行简单的放大和缩小,尤其是对于GIF图片进行展示时,App需要展示GIF的动态变化,而不是只显示GIF第1帧的内容。
3,App支持视频和音频文件
常见的视频文件格式有MP4,3GP,AVI,RMVB,MKV和MOV;常见的音频有MPEGI,WAV,AAC,OGG和APE;而编码方式又有MPEG系列和H.26X系列。在测试App对这些视频或者音频文件格式的支持,以及对这些编码方式的支持时,需要对这些因素进行组合,并确定测试的优先级,保证最重要的功能的完备。
军规十一 支持多语言和地区设置
iOS操作系统不论在什么国家和地区发布,都会支持多语言和地区设置。App不支持多语言和地区设置会影响用户输入;App不支持多语言和地区设置的影响有:
1,时间和日期格式;
2,App同时支持多语言显示时,还需要注意不同语言文字对于显示的影响,比如如果把英文单词按照中文处理,认为每一个字符都是独立的,然后把单词拆开,就有可能会导致换行显示不正常;
3,除了多语言文字的显示,对于多语言文字的复制和粘贴,测试人员也需要进行测试,哪怕App只支持单一语言,测试人员也需要考虑用户有可能无意粘贴别的语言文字到了输入框的情况。