2004.3.15
我想我会从一个古老的故事开始,一个非常古老的故事,要回到Windows 1.0时代。如有雷同,纯属虚构。
距Windows 1.0正式发布还有大约2个月的时间,所以大约是1985年的8月或9月。微软在18个月前预告过Windows,当时我们在新闻报道中被斥为蒸汽朋克。为此,项目团队承受着巨大的压力,需要尽快发布全功能版的Windows。
无论如何,正如我所说,现在大约是正式发布前2个月。负责Windows内存管理器的开发人员在周一上班时向团队宣布,他刚刚提交了一个新版的内存管理器,支持将可移动数据段交换到磁盘上,此前Windows只支持代码码的扇入扇出,不支持数据段的扇入扇出。
Steve Ballmer当时是整个Windows项目负责人,听过前面那哥们的话之后,他唯一的评价是:“好吧,我想开掉这个SB,我真地想开掉这个SB,但我们需要这个功能。”
下面是另一个故事,我曾考虑另开一篇讲述它,但最终还是将之一并展现,以与前一个故事形成鲜明对比。
这也是个Windows 1.0的故事,这次是关于打印子系统的。打印子系统的开发人员显然受前一个故事启发,决定在Windows正式发布的2周前重构打印子系统。
现在开发人员测试Windows打印功能时,是用notepad打开一个文件,向他们办公室里的Epson MX-80点阵打印机打印,如果一切正常,他们再提交更改过的代码。但在Windows 1.0时代,打印子系统需要支持很多notepad不支持的特性,比如变宽字体、粗体、斜体、下划线等等,这些都需要得到测试。
好吧,基于历史经验,Windows打印子系统测试负责人Linne Puller听到这个消息后,彻底崩溃了,她再三要求在提交更改之前先测一轮。那家伙同意了,但他不明白这有什么意义,因为他已经全部自测过。
Linne和另一位Windows打印测试员Valorie Holden通宵测试后,将足有一英尺(大约30.48厘米)高的打印纸堆在那家伙的桌上。
“所以那些是测试结果?姐们,这太多了,你们不能只给我看测试失败的结果吗?”
“不,那些都是测试失败的结果”
“哦”
毋庸置疑,这次代码更改未被提交,测试人员又一次挽救了开发人员。
这真地是一个古老的故事,近二十年前了。那时的Windows开发团队被称为一群牛仔,这实际上是Steve Ballmer最终直接负责该项止的原因。
后来的二十年里,微软在软件工程方面取得了很大进步。即使回到当年,上述两例仍属反面教材。如今,项目会早早严格锁定。所有新特性将由DCR(设计变更请求)评审委员会评审,该委员会成员包括开发、项目管理、测试等等。在对新特性展开编码工作之前,所有三方都得签字同意才行。
此外,测试团队密切参与新功能的开发。至少,在任何重大变更提交之前,要先进行Linne和Valorie所做的预测试,现在我们称之为"冒烟测试"。微软的每个开发团队都有自己的"冒烟测试",称呼上五花八门,但它们都有某种形式的流程,允许测试团队否决/评论代码更改质量。某天或许我会写写这件事。
八卦,Valorie Holden是微软暑期实习生,一直实习到12月。她是我上大学时的女朋友,暑假来微软实习,担任测试工程师。1985年12月我俩订婚,我俩的幸福婚姻已经持续了十七年。
《未完待续》
scz: LO与Valorie Holden都是卡内基梅隆的。LO是CMU CS专业的,好像是1983年前后毕业的,从上文看,他媳妇可能是他师妹?