这两天被手淘ios版3.25bug刷屏了,影响还是挺大的,仅3.25日当天截止到下午5点在微博上的话题阅读量,已经突破8000万。给广大网友带来一次吃瓜盛宴。我们先简单回顾下这个bug的故事线:

  • 我查看手机淘宝在App Store的更新记录,3.20号发布了一个版本。应该是针对淘宝直播更新的版本。
  • 3.25号凌晨,开始有用户碰到手淘启动后,在页面停留10s钟,会弹出一个弹框“您使用的程序是内测版本,目前已经过期,请更新到最新版本”。
  • 3.25号上午,打开手淘还是能复现,但是弹框会秒消失。推测阿里的工程师,应该使用了IOS热修复技术,但是热修复并不能让弹框消失,只能将弹框隐藏,因此大家会看到弹框秒消失。(热修复,只需要服务端下发一个patch包,然后手淘重启,patch包代码即可生效)。
  • 3.25号16点(通过淘宝官方微博推断的时间),手淘又更新了一个版本,解决弹窗的问题。苹果提供了一个机制,假如上传到App Store的包有明显缺陷,可以撤回,并且替换一个新的包。这个新包的审核速度会非常快。
  • 所以大家现在去App Store上看手淘的发版记录,可以看到一周前发布一个版本,两天前发布一个版本。(写这篇文章时是3.27号)。

至于问题的原因,我不敢妄加揣测,我只能说,3.20号发布了包,但是3.25号突然才出现问题,留给大家的想象空间还是很足的。这里我想来跟大家聊聊,通过这个事件,有哪些我们作为软件测试工程师可以反思的点,避免我们踩同样的坑。

在之前文章中,表达过我的观点:任何线上问题,一定是流程存在漏洞,而不能单纯说是某个人的问题。所以接下来也主要从流程上进行反思。

代码review

我觉得代码review应该有两道防线,第一道防线是推动研发流程中,开发做好代码review。比如某同学A修改了部分代码,那么需要同学B和同学C两个人帮他review代码,并且同学A在提交代码时,要附上谁帮他review代码,领导才允许合并代码。我之前在手淘时,貌似只有发版前修改bug,才有这样的代码review机制。不过,review代码费时、费精力,需要结合公司情况来推动。

第二道防线是我们测试工程师,这要求你有一定的代码基础,你可以不会写代码,但是可以尝试能看懂开发的代码。这个颗粒度可以调节,比如:当你能力还达不到看懂代码时,可以看开发本次提交了哪些文件?有没有不相关的文件;当你有阅读代码的能力时,可以看代码是新增的,还是在原来基础上改的,改动大不大等等。不过,这加重了测试同学的工作压力,后续可以结合精准测试来挖掘每次开发改代码的测试点。

敬畏线上包

我们团队之前也碰到过非常低级但是影响很大的bug,比如有一次将一个测试的升级框发到了线上,造成了用户的大面积投诉。从那时起,团队内部就有了一个行动指南:敬畏线上包

所有发布到线上的包,必然是要经过测试工程师的验证和测试,Android可以直接通过apk安装,但是IOS相对麻烦一些,需要用到testflight,但也是可以验证的。

这样,会很大程度的降低一些非常低级的问题跑到线上的风险。

回归用例库需要不断更新迭代

我觉得多数公司,应该都有自己每次发版上线前的必然要回归的用例库,比如,我们之前团队的发版回归用例有:安装、卸载、升级、各个主页面场景等。

所谓,“一年被蛇咬,十年怕井绳”,比如:这次手机淘宝碰到了时间变化造成的严重bug,那我觉得完全可以将时间维度的变化(比如:一周、一个月、一年)加入到回归用例库,来避免同类的问题再次出现。

所以我觉得,回归用例库只有不断更新迭代,才能不断的完善和提升产品的质量。

舆情监控是产品的体检表

我是特别建议软件测试工程师,在产品发版之后,能从各个渠道了解下用户的反馈。因为这是第一手的资料,能反馈产品从质量到交互设计方方面面的信息。

在手淘,它们有自己完善的舆情监控平台,可以从微博、app反馈等多个渠道收集用户的反馈信息。假如一般的公司没有这样的平台,可以手动去微博搜索、或者去App Store中收集用户的评论。

总之,一个问题,越早被“自己人”发现,就能将风险降到最低,影响降到最小。

写在最后

瓜吃完了,不知道你有没有什么想法或者感受?可以在评论区留言,或者去知识星球「测试开发技术圈」(目前限时免费开放中)进行交流。

关于手机淘宝3.25bug我的一些思考与建议的更多相关文章

  1. iOS开发之三个Button实现图片无限轮播(参考手机淘宝,Swift版)

    这两天使用Reveal工具查看"手机淘宝"App的UI层次时,发现其图片轮播使用了三个UIButton的复用来实现的图片循环无缝滚动.于是乎就有了今天这篇博客,看到“手机淘宝”这个 ...

  2. 手机淘宝UWP

    各位园主好! bug 走势: 哪天bug 足够少,哪天就可以发布了  :) 2015/10/23: 49 2015/10/26: 40 2015/10/27: 36 2015/10/28: 30 20 ...

  3. 手机淘宝中的那些Web技术-使用了类似PhoneGap的实现

    Native APP与Web APP的技术融合已经逐渐成为一种趋势,使用标准的Web技术来开发应用中的某些功能,不仅可以降低开发成本,同时还可以方便的进行功能迭代更新.但是如何保证Web APP的流畅 ...

  4. Android热补丁技术—dexposed原理简析(手机淘宝采用方案)

    上篇文章<Android无线开发的几种常用技术>我们介绍了几种android移动应用开发中的常用技术,其中的热补丁正在被越来越多的开发团队所使用,它涉及到dalvik虚拟机和android ...

  5. 《转》冯森林:手机淘宝中的那些Web技术(2014年)

    Native APP与Web APP的技术融合已经逐渐成为一种趋势,使用标准的Web技术来开发应用中的某些功能,不仅可以降低开发成本,同时还可以方便的进行功能迭代更新.但是如何保证Web APP的流畅 ...

  6. Appium(Python)驱动手机淘宝App

    请注意操作步骤: 1. 用数据线连接手机, 打开开发者模式, 并赋予相关权限, 并保持不锁屏状态: 2. 启动Appium桌面服务端: 3. 运行程序: 首次运行, Appium会在手机上安装3个Ap ...

  7. iOS 手机淘宝加入购物车动画分析

    1.最终效果 仿淘宝动画 2.核心代码 _cartAnimView=[[UIImageView alloc] initWithFrame:CGRectMake(_propView.frame.size ...

  8. iOS手机淘宝加入购物车动画分析

    本文转载至 http://www.jianshu.com/p/e77e3ce8ee24 1.最终效果 仿淘宝动画 2.核心代码 _cartAnimView=[[UIImageView alloc] i ...

  9. 手机淘宝轻店业务 Serverless 研发模式升级实践

    一.前言 随着 Serverless 在业界各云平台落地,阿里内部 Serverless 研发平台.各种研发模式也在业务中逐步落地,如火如荼.在此契机下,淘系团队启动了轻店 Serverless 研发 ...

随机推荐

  1. Python 字符编码判断

    题记 在获取中文字符的时候,如果出现乱码的情况,我们需要了解当前的字符串的编码形式.使用下面两种方法可以判断字符串的编码形式. 法一: isinstance(s, str) 用来判断是否为一般字符串 ...

  2. 用新架构适配MI3中遇到的各种坑

    用新架构适配MI3中遇到的各种坑 首先不得不说hendy架构的强大之处, mi3也直接开机但是遇到各种坑,不能怪架构不够强大,只有说miui定制化太高.下面详细说一下mi3适配中的各种坑.有些坑会附带 ...

  3. HTTP Continuation or non-HTTP traffic

    发现一个 HTTP      Continuation or non-HTTP traffic的数据包,之前没有碰到过.不懂其意义,一看长度,显示1460,与TCP segment of a reas ...

  4. Hello World!(这不是第一篇)

    如题,这不是第一篇blog,但是为了表示这个闲置了1年多的blog现在被我正式启用了,我还是走个过场吧. #include <iostream> using namespace std; ...

  5. numpy.random模块用法总结

    from numpy import random numpy.random.uniform(low=0.0, high=1.0, size=None) 生出size个符合均分布的浮点数,取值范围为[l ...

  6. 7-29 jmu-python-不同进制数 (10 分)

    输入一个十进制整数,输出其对应的八进制数和十六进制数.要求采用print函数的格式控制进行输出,八进制数要加前缀0o,十六进制数要加前缀0x. 输入格式: 输入一个十进制整数,例如:10 输出格式: ...

  7. boostrap3 bootstrap-datetimepicker.min.js设置中文语言

    问题 bootstrap3中使用bootstrap-datetimepicker遇到设置中文语言的问题 解决办法 bootstrap-datetimepicker在使用的时候要先引入momentjs中 ...

  8. 题解-[HNOI2001]遥控赛车比赛

    题解-[HNOI2001]遥控赛车比赛 前置知识:记忆化搜索.\(\texttt{Bfs}\). 参考资料 https://www.luogu.com.cn/blog/CYJian/solution- ...

  9. .Net Core 为 x86 和 x64 程序集编写 AnyCPU 包装

    前言 这几天研究了一下 vJoy 这个虚拟游戏手柄驱动,感觉挺好玩的.但是使用时发现一个问题,C# SDK 中的程序集被分为 x86 和 x64 两个版本,如果直接在 AnyCPU 平台编译运行就有隐 ...

  10. Layabox UI 笔记

    1.UI List  官方文档是 https://ldc2.layabox.com/doc/?language=zh&nav=zh-js-3-3-7 通常用List的时候会出现滚动条按钮比例拉 ...