Повышение надежности в IE8

Источник: thevista

В предыдущей статье Энди писал о некоторых новых функциямх, внедрённых нами для повышения надёжности Internet Explorer, среди которых свободно связанные сессии (от англ. Loosely Coupled IE) и автоматическое восстановление после сбоя (от англ. Automatic Crash Recovery). Эти функции помогают снизить отрицательный эффект от возникающих проблем с надёжностью (сбои и зависания). Если такое случается, указанные функции позволят как можно скорее восстановить работоспособность программы.

Как разработчики мы видим свою цель в том, чтобы сбоев было как можно меньше. В этой статье мне хотелось бы показать вам, какие подходы мы используем, чтобы определять, присваивать приоритет и устранять проблемы со стабильностью IE8. Каждый из этих подходов соответствует различным аспектам продукта и равно полезен в обеспечении надёжности для разных типов пользователей.

Отзывы конечных пользователей
Конечные пользователи - наш ценнейший ресурс в вопросах, касающихся надёжности. Мы получаем огромное количество информации о проблемах, с которыми сталкиваются пользователи, именно по каналам поступления пользовательских откликов. Мы также максимально используем инструментарий отчётов об ошибках (от англ. Windows Error Reporting), через который в Microsoft поступают детальные описания сбоев и зависаний, с которыми сталкиваются пользователи. Обработка этих сообщений помогает нам понять, насколько надёжен наш браузер в различных пользовательских системах, и находить наиболее важные проблемы, связанные со стабильностью.

В статье за прошлый месяц я рассказывал, как мы используем график случаев сбоя (кривую сбоев) для определения и исправления ошибок, вызванных неудовлетворительной стабильностью программы в бета-версии Windows 7. Такой же схеме мы следовали при подготовке к выпуску окончательной версии IE8. Ниже вы видите изображение кривой сбоев, пик которой приходится на бета-версию IE8. Информация основана на данных, собранных в течение 50 дней после выхода очередной сборки. Зелёные столбики - это ошибки, уже исправленные в IE8.


Диаграмма сбоев программы. Каждый столбик - сбой программы. Сортировка по количеству случаев. Легенда расположена справа в рамке.

Кривая демонстрирует, что небольшое количество сбоев испытывают очень многие пользователи. Столбики в левой части диаграммы - это наиболее вероятные сбои в самых распространённых сценариях использования. То, что оказалось в "длинном хвосте" диаграммы - сбои, возникающие относительно редко при специфических конфигурациях оборудования и ПО. Несмотря на важность исправления таких ошибок, мы сосредоточились в первую очередь на самых болезненных моментах и осторожно продвигались дальше вниз по графику. Наиболее существенные ошибки, которые пока не исправлены, будут устранены чуть позже с помощью обновлений. На сегодняшний день мы устранили причины 80% сбоев и зависаний IE8, о которых нам сообщили.

Проверка функций программы
Тестирование стабильности начинается с уровня отдельных функций и позволяет улучшить качество конечного продукта, начиная с самого основания. Создатели каждой из функций запускают автоматический поиск ошибок для своей порции кода и исправляют их. Можно сказать, что эти люди - наиболее интенсивные пользователи соответствующих функций, и могут определить ошибки, пропущенные в автоматическом режиме. Таким образом, большинство проблем со стабильностью было выявлено и устранено ещё на этом этапе.

Дополнительно наш коллектив интенсивно использовал несколько механизмов, с помощью которых выискивают и определяют потенциальные проблемы в исходном коде программы, такие, как переполнение буфера, повреждение памяти, неинициализированная память и пр. Многие из этих проблем могли стать огромной проблемой для пользователей, но, к счастью, мы справились с ними ещё до того, как они стали известны кому-то ещё.

Использование продукта внутри компании
Коллектив разработчиков IE наряду с огромным количеством людей внутри корпорации Microsoft ежедневно пользовались последними версиями IE8. Критическая важность такого подхода в том, что мы могли напрямую работать с теми сотрудниками, которые сталкивались с проблемами, чтобы выявить причины сбоев и быстро исправить их, запуская отладчик иногда прямо у них на компьютере.

Внутренние пользователи тоже отправляют нам отчёты через систему сообщений об ошибках Windows. Мы используем их сведения для исправления наиболее критичных ошибок в текущих сборках. Участок кривой сбоев, сформировавшийся за счёт таких сообщений, в значительной мере совпадает с картиной, полученной с помощью данных от обычных пользователей.

Например, многие из наших коллег перешли на бета-версию Windows 7 за несколько недель до её открытого выпуска. Данные, генерируемые в результате массового тестирования, позволяют нам создавать предварительный вариант графика сбоев. Мы начали исследовать группу сбоев, которую можно охарактеризовать как наиболее критичные. Исправляя эти ошибки досрочно, мы шли с опережением графика, и поэтому у нас была возможность быстро отреагировать на проблемы пользователей спустя короткое время после выпуска бета-версии.

Лабораторная проверка стабильности
Для исследования сбоев в более развёрнутых пользовательских сценариях мы тестировали продукт на нескольких лабораторных ПК, постоянно наблюдая за поведением новых функций в текущих сборках. Мы использовали технологии, которые условно называем стрессовым и непрерывным тестированием.

Стресс-тесты
Стрессовое тестирование браузера очень важно для определения архитектурных проблем, вызывающих сбои, наряду с иными скрытыми проблемами. Мы стремились организовать стрессовое тестирование IE8 в заранее определённом промежутке времени без перерыва. Замеряя этот промежуток, мы быстро перемещались по различным веб-страницам и совершали те же действия, что и обычные пользователи: открытие и закрытие вкладок, окон и т.д. Мы надеемся, что нам удалось выявить некоторые важные проблемы, которые не заметны при рутинном использовании браузера. В нашем стресс-тесте нам удалось в рамках единственной сессии - за один день - открыть 100 тысяч веб-страниц!

Непрерывное тестирование
Часть нашей концепции стабильности IE8 - позволить IE работать без перерыва так долго, как этого хотят пользователи. Мы разработали несколько вариантов тестирования, симулирующих длительное использование браузера и замеряли, как долго выполняется тест, пока не происходит сбоя или получения сообщения о нехватке памяти. Затем мы пытались устранить важнейшие причины сбоев как можно скорее. Мы также тестировали потребности в памяти после периодов долгого использования.

Заключение
Каждый из использованных подходов сыграл важную роль в улучшении стабильности IE8. Более того, нам удалось представить сделанные нами усовершенствования в количественном выражении, используя различные тесты и методы анализа, и сравнивая результаты с IE7. Например, в рамках стресс-тестирования мы убедились, что IE8 может работать 12 часов подряд, в отличие от IE7, который больше 8 часов не выдержал. К тому же мы обнаружили, что IE8 после 24-часовой сессии использует на 90% меньше памяти, чем IE7. Установить это нам помогло непрерывное тестирование.

Мы уверены, что наши подходы к выявлению проблем с надёжностью IE8 послужили причиной существенных усовершенствований браузера. Мы надеемся, что вы начнёте использовать Internet Explorer 8 и поделитесь с нами своими впечатлениями. Мы полагаемся на ваши отзывы, которые помогут выявить другие проблемы, и мы непременно исправим их в будущих сборках. Если у вас случится сбой или зависание, пожалуйста, дайте нам знать, отослав отчёт об ошибке.

Спасибо за вашу поддержку и уверенность в отличном качестве нашего браузера!


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=22886