滴,
滴滴,
滴滴滴,
下午五点半,一阵急促的闹铃,打破了刚刚想到的测试思路
A:hey,兄弟,该定外卖了
B:emmm...
B:放下手中的水杯,拿起手机,熟练的解锁,滑动桌面,找到某团外卖
B:???不是刚过完618么?这么快又“双11”了?
B:我没有女朋友......
A:......
原来,某支付app,图标显示了一个“11.11”,就仿佛在讽刺着这条单身狗
哎,刚刚那个问题怎么复现来着,怎么想不起来了呢?想了半天,还是回忆不起来,算了,人老喽,我再试试。
对了,我这两天没更新app,怎么图标自己换了?
带着这个疑问,和大家分享一下app的图标,是如何做到偷天换日的。
首先我们了解一下相关信息和替换原理,再来设计用例。
app的icon都有哪几种?
默认icon:指安装完成后,在桌面/菜单显示的icon
动态icon:指打开后,用户可以手动选择替换的icon
定时icon:指在某个时间点,展示的与默认样式不同的icon
所以,我们上面遇到的,是定时icon。
定时icon如何替换?
与服务端实时交互:客户端预埋icon,在某个时间点启动app,服务端告知客户端替换。优点:灵活配置,适合互联网app
不与服务端交互:客户端预埋icon及展示的开始/结束时间,在时间段内替换icon。优点:节省宽带,适合做单机app的彩蛋
所以,我们在早晨启动了这个app后,刚好是在活动时间段启动的,所以他就偷偷的给换成了待“双11”的icon了。
原来如此,刚还以为手机被外星人给chao控了呢!!(外星人躺枪)
icon可能会在哪里显示?
app:桌面、抽屉桌面、主动创建的快捷方式、app内的关于、app的图标选择列表(动态icon的选择列表)
系统:资源管理器、安装页面、卸载页面、抽屉桌面的快捷方式、任务管理器、手机设置(如应用设置、权限设置、耗电排行、应用锁等等)等
以及下面可能会忽略的地方:
分享渠道浮层:如将截图分享到你的app
推广渠道的下载页面:如第三方app内的推广下载、应用商店中的icon等
系统通知栏:如微信-游戏-下载游戏时,通知栏提示的icon和通知栏常驻icon
分享第三方的消息卡片:如分享到QQ的消息卡片,卡片底部的来源APP处的icon
其他:待补充(作者刚吃完外卖,现在只想来个饭后觉)
作为测试,该如何下手呢?
在向开发大佬和度娘了解了实现原理(自行搜索)后,我们的测试工作就变的很简单了0ω0(不要听这句话,不过相信你已经有了思路)
服务端在收到请求后,在正确的时间点,返回客户端需要的数据
app启动后,切到桌面,在桌面看到对应的icon即可(看实现方式,安卓部分机型,可能需要重启app呢)
最后,这种需求,需要我们识别出什么风险呢?这里面还有什么特殊操作呢?
特殊操作
1、iOS端需要添加还原默认icon的功能,以应对App Store的审核
2、如果服务端通过老接口下发数据,则需区分版本,避免资源浪费
3、校验服务端下发数据,和协议中的数据不一致的情况
4、活动结束后,客户端需清理掉icon资源,以缩减app的体积
5、覆盖安装更新的版本(更新的版本中已经删掉了icon的资源)
6、请UI同学校验有红泡通知时的样式,以及第三方app给图标添加的标识,如上图的华为手机,添加支付保护后,显示的“√”
7、安卓端,部分手机可能需要重启手机,才能替换icon
8、安卓端,部分手机在替换icon的时候,会比较慢,且启动时会提示未安装此应用程序
10、定时icon,或者app未上线时,分享到微信等渠道后的消息卡片,卡片的小尾巴,展示默认icon(防止泄密)
11、更换默认icon时,分享到QQ等渠道的消息卡片,卡片的小尾巴,需要上应用商店后,才展示更换后的icon(这个不需要我们关注)
12、记得校验服务器的时间准不准
13、还没编好,等你来补充!