Jaa


如何帮助我们改进 IE 可靠性

 

去年,您在使用 IE9 平台预览版本、Beta 和发布候选版期间提供的结构化反馈为我们构建最可靠的 IE 版本提供了极大的帮助。您通过 Windows 错误报告和其他方法发送给我们的错误报告,帮助我们修复了用户遇到的影响重大的问题。您的实际浏览体验使我们能够采用内部测试所无法匹敌的方式识别可靠性问题。

在本文中,我们向您介绍 IE9 可靠性的工程设计流程。我们将为您介绍发送反馈的各种渠道。介绍如何分类和优先化数据以首先解决最重大的问题。最后,我们将分享我们自己的数据,展示 IE9 如何在 IE8 基础之上改进可靠性。

欢迎您在使用最终的 IE9 版本期间通过我们的遥测系统发送反馈。持续的错误报告使我们能够通过未来的累积更新继续实现对 IE9 可靠性的改进。

通过 Windows 错误报告报告崩溃

如果在 IE 中遇到崩溃自动崩溃恢复等功能可帮助减轻这些崩溃的影响,但我们希望从源头杜绝它们的发生。我们使用了多种不同的机制来收集关于崩溃的信息。其中一种机制就是 Windows 错误报告。

对于选择启用 Windows 错误报告的用户,IE 会在崩溃发生时收集浏览器的状态信息并将该信息封装到一个错误报告中。此信息有助于开发人员调试错误根源并修复崩溃。如果在浏览期间遇到浏览器挂起,Internet Explorer 也会发送错误报告。我们将在以后的文章中介绍挂起相关的内容。

请记住,Microsoft 在提交错误报告时会保护您的隐私。IE 在将错误报告安全地传回 Microsoft 之前,会向您请求权限。

clip_image003
Windows 错误报告对话框

在 IE9 Beta 和 RC 版本中,我们使用了反馈发送工具和 Microsoft Connect 等其他机制来接收您对 IE 可靠性的反馈。这些机制最终可能会向我们报告重复的问题,但我们会在内部删除报告的重复问题。您的报告有助于构建庞大且具有统计意义的数据量,使我们能够确定值得解决的可靠性问题。

了解 IE 崩溃的原理

收集了丰富的崩溃样本之后,我们根据崩溃来源对数据进行分类。这有助于我们大致了解哪些区域对 IE 可靠性具有较大影响。我们会专门安排人员在每个类别中进行改进。

clip_image005

在 IE9 Beta 期间,以下类别可能产生可靠性问题:

IE 代码错误

IE 代码错误是大部分崩溃的根源。由于引入了大量新代码,IE 崩溃与第三方崩溃的比率在预发行版(Beta 和发布候选版)中较高。

加载项

尽管加载项是 IE 浏览体验的核心部分,但它们也是 IE 中可靠性问题的主要原因。与加载项相关的崩溃通常在打开新选项卡或启动 IE 时发生。一些加载项不兼容较新的 IE 版本,可能导致崩溃。

ActiveX 控件

如今的许多网站使用 Flash、Silverlight 和 QuickTime 等 ActiveX 控件来显示交互式内容和视频。因为 ActiveX 控件在本质上是在浏览器中运行的 Windows 应用程序,所以质量较差的控件可能导致浏览器选项卡崩溃或挂起。

图形驱动程序

IE9 向硬件加速图形的过渡高度依赖于生态系统中显卡驱动程序的质量。我们发现,在 IE9 Beta 期间从 反馈发送工具收到的崩溃报告中有 41% 是由显卡驱动程序造成的。这些崩溃发生在与加载项崩溃类似的场景中,所以它们对正常浏览具有非常重要的影响。

其他第三方软件

许多软件程序(比如防病毒工具和自定义下载管理器)可能影响 IE 的可靠性。

绘制“故障曲线”

下一步是对来自每个类别的数据进行整理,以便我们可以系统地分析崩溃。我们使用“故障曲线”确定问题的优先级,这些曲线是一些条形图,其中每一个条形图表示一种唯一的崩溃,崩溃按从最常遇到到最少遇到排序。

绘制了故障曲线之后,我们从曲线顶部最常遇到的问题开始分析每个问题。曲线尾部的问题通常会在具体的硬件和软件配置中遇到。修复它们可能也很重要,但我们首先从最常遇到的问题开始,以确保最大化我们的工作的影响。

clip_image007

上面的故障曲线示例展示了我们如何成功地解决自 IE9 Beta 以来 IE 代码中最常发生的 50 种崩溃。

确保可靠的体验

通过在 IE 团队中和与第三方开发人员合作完成的工作,我们通过解决所报告的大部分崩溃,不断地改进浏览体验的可靠性。本节介绍我们如何在每个类别中最终修复缺陷:

内部可靠性问题

我们记录来自 Beta 和发布候选版的 IE 代码中最常发生的崩溃错误。我们在继续监视新问题的大量数据的同时解决这些缺陷。

我们还结合各种有效的遥测来源。我们使用您的“发送反馈”报告帮助再现通过 Windows 错误报告分析的问题。崩溃的成功再现可帮助开发人员确定问题根源并帮助测试人员验证崩溃是否已修复。

上面的故障曲线图为我们对 IE 问题的修复绘制了一幅准确的进度图。总之,我们修复了自 IE9 Beta 以来报告的 IE 代码中的问题中的 85%,我们将在累积更新中继续修复该曲线尾部的问题。

IE9 中的质量和可靠性改进是巨大的。在最终的 IE9 版本上运行压力和持久测试的时间是在 IE8 上的 6 至 7 倍。

第三方错误

我们与来自全球的供应商合作解决来自 IE9 Beta 和更高版本的重要的第三方可靠性问题。我们使用 WinQual 计划与供应商分享错误报告信息。我们保证他们只能访问与自己的产品相关的错误报告。

众所周知,存在故障的加载项或图形驱动程序可能在一些重要使用场景中导致 IE 反复崩溃。IE 中有两种内置机制可帮助我们解决这些问题:

  • 加载项: 我们使用升级顾问禁用任何已知的不兼容加载项,以便即使以前安装了这些加载项,现在也可以成功启动 IE。当升级顾问在启动时阻止了一个加载项,IE 会向您通知该操作并为您提供检查该加载项更新的选项。
  • 图形驱动程序: IE9 包含已知不兼容图形驱动程序的一个“软件回滚列表”,它根据错误报告和内部测试编译而来。如果使用这些驱动程序,IE 将使用软件呈现代替GPU 图形加速呈现。在此模式下运行可预防驱动程序导致浏览器崩溃。

目前为止,您提交的错误报告帮助第三方供应商解决了来自 IE9 Beta 的一些重要崩溃。我们更新了 IE9 RC 的软件回滚列表并简化了升级顾问体验(后续文章中将详细介绍)。

您的反馈很重要

我们根据本文中介绍的方法来解决 IE 以及来自 IE9 Beta 和 IE9 RC 的各种第三方组件的常见崩溃,这离不开您提供给我们的错误报告和其他类型的反馈。最终得到了一个高质量的 IE9 版本,它在压力和持久可靠性方面的分数很高。

可靠性工程设计是一个封闭的反馈循环。在最终版本发布之后,我们将使用来自更大用户群的反馈来继续改进可靠性。随着网络和软件生态系统的不断发展,我们会通过累积更新发布对重要问题的修复,构建越来越可靠的体验。

再次感谢您使用 IE9 平台预览版、Beta 和发布候选版并以各种形式提交反馈。您的贡献使 IE 每天都变得更加可靠。

—Herman Ng,项目经理,Internet Explorer