首页 › 案例
微软 · 2002

百分之一的 bug

微软让崩溃的程序「打电话回家」。在这些报告涉及的 bug 里,1% 造成了报上来的一半错误。

◷ 约 2 分钟

来微软之前,史蒂夫·鲍尔默只在一家公司干过:在「一家最大的消费品公司之一」推销布朗尼粉和蓝莓松饼粉。

2002 年 10 月,已经是微软首席执行官的他给客户写信,一上来就提到了这份旧工作。他说,做消费品的人,靠千百万人每天买东西反馈回来的「海量数据」,慢慢摸清大家想要什么样的蛋糕粉、什么样的洗发水。软件没有这样的数据。程序卡死、崩溃了,客户很少打电话找技术支持,直接关掉了事,bug 就这么藏了起来。

微软 Office 部门的一个小团队做了一套办法,到 2002 年,它已经装进了 Office、Windows 和微软大多数主要产品里。程序一出错,客户就可以给微软发一份错误报告。鲍尔默坦白说,让软件像 E.T. 一样「打电话回家」是有风险的。微软为此设计了一种很小的报告格式,叫「minidump」,「点一下鼠标,几秒钟」就能传完。他保证,这些报告「除了找 bug、修 bug,不做任何别的用途」。

工程师看调用栈、看加载了哪些模块、看异常类型。一堆报告里,慢慢显出了一个形状。「大约 20% 的 bug 造成了 80% 的错误,」鲍尔默写道。接下来是让他「震惊」的部分:「1% 的 bug 造成了一半的错误。」

活儿的先后顺序就此变了。鲍尔默说,微软现在能给调试工作「排优先级」,换来客户体验上「最大的改善」。靠错误报告,Office XP 第二个服务包消除了一半以上的 Office XP 错误。Visual Studio .NET 第一个测试版里报上来的崩溃,团队记录并修掉了 74%。

这些数据也照到了别家公司的 bug。大约 450 家公司查过跟自家驱动、工具和应用有关的错误报告。鲍尔默说,涉及第三方防火墙软件的错误,从年初到写信时降了 67%。

七年后,微软工程师发表论文,介绍这套后来叫 Windows 错误报告的系统,那时它已经跑在大约十亿台电脑上。他们写到了这条曲线会怎么变:一个团队把用户最常撞上的 bug 一个个找出来修掉,一个服务包接一个服务包,曲线就慢慢变平。大洞先补上,之后每修一个,换回来的都比上一个少一点。

这件事里藏着几个道理

帕累托法则(80/20 法则)在收上来的错误报告涉及的 bug 里,约两成造成了八成的错误,微软于是能先修引发报错最多的那几个。

出处

  1. Steve Ballmer,Connecting with Customers,微软高管致客户信,2002 年 10 月 2 日
  2. Susan M. Menke,Microsoft's Ballmer says 1 percent of software bugs cause 50 percent of errors,GCN(Route Fifty 转载),2002 年 10 月 3 日
  3. Kirk Glerum 等,Debugging in the (Very) Large, Ten Years of Implementation and Experience,SOSP 2009