2012.3.15 微博热报:Azure 闰年 Bug、Google 如何测试和 Grizzly

阅读数:968 2012 年 3 月 14 日

话题:GoogleWindows Azure语言 & 开发架构文化 & 方法

闰年 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 除了软件测试工程师,还有软件测试开发工程师,他们的工作就是保证软件的可测试性!

walking 熊说:

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 评测

SinaAppEngineSina App Engine的官方微博,昨天发表微博,推荐 grizzly:

《Introduction to GrizzlyMemcached》由于 memcached 是集中式的缓存,所以他的客户端就很重要了。这篇文章介绍了使用 grizzly(一个用 java 语言实现的 NIO 框架) 作为 memcache 客户端,以及这种客户端的 I/O 模型,跟其他客户端的连接模式对比,并做了一些性能对比测试。http://t.cn/zOIGfat

PiouseLeo指出:

看了一下 benchmark 的结果,没有看错的话,GrizzlyMemcached 除了在 multi-set 上有优化,性能脱颖而出之外,其他操作的性能都与 JavaMemcached 不相上下。不知道 GrizzlyMemcached 的稳定性,以及作为一款开源组件的生命力如何。

今日微博推荐

时蝇喜箭

推荐理由:关注并经常推荐很多国外的编程资源,可以通过“【关注】”关键字搜索他的微博。


欢迎读者关注@InfoQ,推荐热门话题,可私信@InfoQ,同时请您说明推荐理由。