Исправление проблем с надежностью в IE8
В предыдущей статье Энди писал о некоторых новых функциях, внедрённых нами для повышения надёжности Internet Explorer, среди которых слабая связанность IE (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 и поделитесь своими впечатлениями. Мы полагаемся на ваши отзывы, которые помогут выявить другие проблемы, и непременно исправим их в будущих сборках. Если у вас случится сбой или зависание, пожалуйста, дайте нам знать, отослав отчёт об ошибке.
Спасибо за вашу поддержку и уверенность в отличном качестве нашего браузера!
Герман Нг (Herman Ng),
руководитель проекта
Comments
Anonymous
April 08, 2009
Неужели на глаз незаметно, что вкладки он открывает раз в 5 медленнее, чем остальные браузеры. Причем если IE6/7 вылетали не очень часто, то IE8 уже просто надоел своими ошибками...Anonymous
April 09, 2009
Присоединяюсь. Под вистой с IE8 работать невозможно, причём с ФИНАЛЬНОЙ версией, а не бетой... После открытия нескольких страниц вкладка "вылетает" и начинает восстанавливаться. В худшем случае начинает висеть весь браузер. Самое ужасное, что такое может начаться в момент регистрации на каком-либо сайте или же в момент авторизации, в итоге всё приходится делать заново :( Что-то надо делать. IE8 судя по всему, очень сырой по части стабильности. Очень нужны фиксы... :-( PS: хоть и обожаю IE, тем более восьмой, но работать приходится в Opera. Вот такой парадокс