Системы отслеживания ошибок (bug tracking system BTS) - Пример обработки одной ошибки

E-mail Печать PDF
Рейтинг пользователей: / 7
ХудшийЛучший 
Индекс материала
Системы отслеживания ошибок (bug tracking system BTS)
Зачем нужны BTS
Пример обработки одной ошибки
Классификация программных ошибок
Структура хорошего отчета по ошибке
Основные атрибуты отчета об ошибке
Советы Джоеля Спольски по использования BTS
Жизненный цикл ошибки
Рассмотрение конкретной BTS на примере Mantis
Все страницы

Пример обработки одной ошибки

На основе статьи Джоеля Спольски «Работа над ошибками малой кровью»

http://russian.joelonsoftware.com/Articles/PainlessBugTracking.html

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

ID-Номер

 

1203

Проект

 

Bee Flogger 2.0

Раздел

 

Ftp Клиент

Название

 

Загрузка файла роняет ftp сервер

Назначено

 

Закрыто

Статус

 

Закрыто-Решено-Исправлено

Важность

 

2 - Необходимо исправить

Архитектура

 

2.0 Alpha

Версия

 

Сборка 2019

Компьютер

 

Макинтош iMac Джилл. MacOS 9.0, 128Mb ОЗУ, 1024x768, миллионы цветов

Описание

 

1 ноября 2000 Открыто Джилл, очень-очень хорошим тестером.

* Запустить Bee Flogger
* Создать новый документ без имени содержащий букву "а"
* Щёлкнуть кнопку ftp на панели
* Попробовать загрузить документ по ftp на сервер
 
ОШИБКА: ftp сервер не отвечает.
Команда ps -augx показывает, что ftp сервер вообще не выполняется.
В корневом каталоге содержится дамп памяти.
 
ТРЕБУЕТСЯ: ftp сервер не должен падать.

1 ноября 2000 Джилл, очень-очень хороший тестер, поручила работу над ошибкой Вилли, ведущему разработчику.

2 ноября 2000 (вчера) Решено - Исправлять не будем - Вилли, ведущий разработчик.

Не наш код, Джилл. Это proftpd, входящий в поставку Linux.

2 ноября 2000 (вчера) Возобновлено (поручено Вилли, ведущему разработчику) Джилл, очень-очень хоршим тестером.

Неубедительно. Мне никогда не удавалось уронить proftpd другими ftp клиентами. Наш же клиент роняет его каждый раз. Ftp серверы сами по себе не падают.

3 ноября 2000 (сегодня) Вилли, ведущий разработчик поручил работу над ошибкой Майку, простому программисту.

Майк, взгляни-ка сюда. Может твой код в клиенте делает что-то не то?

3 ноября 2000 (сегодня) Решено - Исправлено. Майк, простой программист.

Я думаю, что я передавал имя пользователя вместо пароля или что-то типа того...

3 ноября 2000 (сегодня) Реактивировано (поручено Майку, простому программисту) - Джилл, очень-очень хорошим тестером.

Всё то же самое в 2001-й сборке.

3 ноября 2000 (сегодня) Отредактировано Майком, простым программистом.

О как! Очень странно. Надо будет взглянуть внимательнее.

3 ноября 2000 (сегодня) Отредактировано Майком, простым программистом.

Мне кажется это в MikeyStrCpy()...

3 ноября 2000 (сегодня) Решено - Исправлено Майком, простым программистом.

Уфффф!!! Исправлено!

3 ноября 2000 (сегодня) Закрыто Джилл, очень-очень хорошим тестером.

Похоже-таки исправлено в сборке 2022 - закрываю.

Итак, вот что произошло.

Майк, простой программист, колдовал над новой возможностью своей превосходной программы для макинтошей: ftp клиентом. В один прекрасный момент из хулиганских побуждений он написал свою собственную функцию копирования строк.

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

Позже на той же неделе, Джилл, очень-очень хороший тестер, терзала код, нажимая все клавиши подряд и выполняя другие, столь же коварные тесты. Внезапно произошло что-то очень странное — ftp сервер, на котором она проверяла клиента, упал! Да, я знаю, что это был Линукс, а компьютеры под Линуксом никогда не падают, но эта чёртова штука таки упала! А ведь Джилл даже не дышала на ftp сервер. Она просто пыталась загрузить на него файл, используя код для Mac-а, написанный Майком.

Поскольку Джилл была очень-очень хорошим тестером, она аккуратно вела запись всех своих действий. Она перезагрузила всё, что было можно. Начала повторять свои действия на чистой машине, и — гляньте-ка — это случилось снова! Ftp сервер опять упал! Дважды за один день! Вот тебе, Линукс!

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

Джилл ввела информацию об ошибке в базу данных. Кстати, даже сам процесс записи информации об ошибке требует определенной дисциплины: бывают хорошие описания, а бывают и плохие.

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

Вилли, ведущий разработчик, взглянул на описание ошибки и решил, что, вероятно, что-то не в порядке с ftp сервером, и пометил её как "исправить невозможно". В конце концов, не они же писали код ftp сервера.

Когда ошибка разрешена, она назначается обратно тому, кто открыл её. Это важный момент. Ошибка не исчезает только потому, что программист так решил. Золотое правило гласит, что закрыть ошибку может только тот, кто её открыл. Программист может только "решить" ошибку, в смысле — "ага, я думаю, ошибка исправлена", но реально закрыть ошибку и убрать её из списка может только человек, увидевший её впервые. Только он может подтвердить, что ошибка в самом деле исправлена, или согласиться с тем, что по каким-либо причинам исправить её невозможно.

Джилл получила е-мэйл: ошибка опять вернулась к ней. Она посмотрела комментарии Вилли. Что-то ей показалось неверным. Куча народа годами использует этот ftp сервер с различными приложениями, и он не падает. Это происходит только когда используется код Майка. Джилл реактивировала ошибку, объяснив своё решение, и вернула её на рассмотрение Вилли. Вилли поручил ошибку Майку для исправления.

Майк изучил ошибку, думал долго и упорно, но, тем не менее, сделал неверные выводы. Он исправил несколько несвязанных между собой ошибок и решил, что в их число попала ошибка Джилл.

Ошибка вернулась к Джилл с описанием "решена-исправлена". Джилл попробовала повторить шаги, ведущие к ошибке, и глядите-ка, ftp сервер опять упал. Она опять реактивировала ошибку и теперь поручила её исправление непосредственно Майку.

Майк был озадачен, но, в конце концов, он-таки нашёл источник ошибки. Он исправил её, проверил, и — эврика! Ftp сервер больше не падал. Опять он пометил ошибку как "решено-исправлено". Джилл тоже повторила все действия, приводившие к ошибке, и убедилась, что ошибка исправлена. После этого она с чистой совестью закрыла её.



 

Добавьтe Ваш комментарий

Ваше имя (псевдоним):
Ваш адрес почты:
Заголовок:
Комментарий:

Комментарии, категория: "IT"

Интересное




Похожие материалы

Партнёры