闰年 bug 导致微软 Azure 故障
2 月 29,微软的云计算平台出现故障,现在原因出来了 http://t.cn/zOVFOtS 很简单,无证程序员在计算日期的时候偷懒了 :需求是要算出第二年的今日,码农实现的时候直接取了当前日期,然后把年份加一,结果 2013 年 2 月 29 号悲剧了。
新浪网研发中心总经理符庆明指出:
这个故障报告写的很全面,可以学习他们对故障的分析和处理改进思路,值得一读
Wang_Hong_ 也说:
出问题后的 Root cause analysis 做的不错,针对 Prevention, Detection, Response, Recovery 四个方面做出了改进计划。
发生问题的不只是微软,杜安放 -SHA 提到:
我们的系统也出现了这个问题,js 里面简单的给年份加上 1,导致 js 出错,导致整个业务流程中断。
揭巴说:
很多 bug 都是这样产生的,测试不够充分吧。但这个 bug 完全可以避免,把年份 +1 这种操作很多高级语言的 Datetime 类中都应该有 DateAdd 之类的函数,而不是把日期的年份拆出来单独加 1 再拼回去
iSwanliu 指出:
顺便贴个软件随想录里关于微软和闰年的典故。1991 年 Joel 同学在微软当 vba 的程序经理,比尔盖茨来开 review 会,问你们有人真地看 过有关实施的所有细节吗?比如,所有这些日期和时间函数。Joel 答,是的,比如 1900 年的 2 月要特别处理,1900 不是闰年。。。 http://t.cn/zOIHpqR
淘宝日照的点评很到位:
单点相关的逻辑需要全盘代码 review,严格控制代码质量,这些地方不适合多人协作。另外一点就是手自一体,不仅仅需要自动化,也应该考虑关闭自动化提供手动模式
闯车了的总结是:
事实证明, 一个小小闰年 bug,就能让你标榜高可用的云计算平台,像多米诺骨牌一样迅速坍塌。一个仓促的决定就能让一切瞬间成为泡影。
Google 如何做测试?
伯乐在线官方微博发布的一条微博说:
《Google 是如何做测试的》James Whittaker 是 Google 工程师。在他所有被问及的问题中,最多的就是问 Google 是如何做测试的。尽管在博客中(google testing blog)中有过零碎的解释说明,但 James 特意写了一篇文章,以解答这个问题。(其实 Google 也没有真正的测试部门,全文…… http://t.cn/zOI7W65 )
接下来,伯乐在线官方微博在评论中又推荐了另一篇文章:
前两周有篇介绍文章:《Facebook 是如何做自动化测试的?》( http://t.cn/zOGIwtX )
HuZhenbo 总结:
Google 的做法:1 测试没有独立的部门,他们是产品团队的一部分;2 软件质量更多是开发人员而不是测试的责任,整个团队都有责任保障软件的质量 3 软件测试工程师主要的工作是自动化测试框架的搭建和代码编写 4 除了软件测试工程师,还有软件测试开发工程师,他们的工作就是保证软件的可测试性!
James Whittaker 貌似最近回微软了。完全靠 Dev 去保证代码和产品质量是不合理的, 人总是有避免发现自己的错误的倾向。保证可测性其实需要 PM、Dev、Test 共通协作, 剩下的 Test 工作主要安排在 tester 角色, google 的开发测试和测试有合并的可行性。所以个人认为, PM、SDE、SDET 还是比较高效的工程组合。
虞卿一言指出:
开发同学本身需要拥有良好的测试思想和实施测试的各种能力
有了能如何,现实中有多少家公司,多少项目组在做?由于工期紧张,有多少开发是从实现市场价值的角度去写代码的呢?
welkinwalker 给出参考:
how google tests software 是一个系列,都在 http://t.cn/GV8fL 。现在都写到 part seven 了,这个是 part one 的翻译版
Memcached 客户端 grizzly 评测
SinaAppEngine 是 Sina App Engine 的官方微博,昨天发表微博,推荐 grizzly:
《Introduction to GrizzlyMemcached》由于 memcached 是集中式的缓存,所以他的客户端就很重要了。这篇文章介绍了使用 grizzly(一个用 java 语言实现的 NIO 框架) 作为 memcache 客户端,以及这种客户端的 I/O 模型,跟其他客户端的连接模式对比,并做了一些性能对比测试。 http://t.cn/zOIGfat
PiouseLeo 指出:
看了一下 benchmark 的结果,没有看错的话,GrizzlyMemcached 除了在 multi-set 上有优化,性能脱颖而出之外,其他操作的性能都与 JavaMemcached 不相上下。不知道 GrizzlyMemcached 的稳定性,以及作为一款开源组件的生命力如何。
今日微博推荐
推荐理由:关注并经常推荐很多国外的编程资源,可以通过“【关注】”关键字搜索他的微博。
评论