среда, 23 марта 2016 г.

Расследование Джордан, 04х15 — баги перед показом

Расследование ведет Джордан. 
Crossing Jordan

Когда я увидела эту серию, я тут же решила о ней написать. Ведь столько жизненного о тестировании, прям впечатлилась )))

Crossing Jordan — сериал о том, как прыткая судмедэксперт Джордан расследует преступления, ибо шило мешает ей просто делать свою работу. Первые сезоны строятся на ее оригинальном методе — они с отцом представляют картину происшествия, один играет убийцу, второй жертву. Так они замечают пропущенные ранее детали: «Погоди, я не могу в тебя выстрелить, потому что мешает вот тот мусорный бак! Значит, я подойду сюда... Ага, смотри, тут улика". Потом на него забивают)

4 сезон 15 серия — про тестирование, бекапы и «запасной план» Smile :)
Можно посмотреть, например, тут http://www.online-life.cc/6042-rassledovanie-dzhordan-2001.html


Слева направо — Найджел, Лили и Баг

В сюжете обычно завязываются два разных расследования или расследование + проблема. Нас будет интересовать только ветвь развития, связанная с багом в ПО. Действующие лица — коллеги Джордан:
  • Найджел — компьютерный гений. Тоже судмедэксперт, но именно он достает информацию с поломанных дискет, находит записи с видеокамер итд.
  • Лили — была простым помощником, но к этой серии она уже играет роль психолога. Утешает близких погибших.
  • Баг — да да, его так зовут Smile :) Но это потому, что он — спец по жучкам. В первых сериях рулил этим, называя дату смерти по личинкам.
  • Гаррет Мэйси — главный судмедэксперт бюро.
Итак, «уже завтра» состоится то ли конференция, то ли соревнование... Во все морги приедет комиссия смотреть, как судмедэксперты работают. У ребят появился шанс победить впервые за долгое время. Найджел демонстрирует свою презентацию супер-пупер-крутой автоматизированной системы, которая позволяет за считанные секунды получать информацию и вообще быстрее раскрывать убийства.

Начальник радуется за коллег и уходит домой. Баг и Лили тоже собираются домой, но задерживаются поболтать с Найджелом. Найджел тыкает пальцами по клавиатуре и внезапно бледнеет. ПРОГРАММА НЕ ЗАПУСКАЕТСЯ! Найджел случайно переименовал расширение какого-то файла. И все, финита ля комендия. Баг с Лили пытаются пошутить, "да ладно тебе, завтра посмотришь", но не все так просто:

— Вы не понимаете! Без этой программы мы не можем идентифицировать тела. Мы просто не знаем, кто есть кто!

Бекапы? Не, не слышал Smile :)

Теперь уже бледнеют все. Вечер после трудного дня, утром приедет комиссия, а все трупы неизвестно чьи. Конечно, коллеги могли бы бросить Найджела и уйти, но решают помочь. Ребята идут в морг, достают все тела, достают все дела, читают описания и пытаются сопоставить их вручную.

Лили: Хм, на трупах висят номера с идентификаторами. Почему их нет на бумажных папках? Так можно было бы легко их идентифицировать!
Найджел: (смотрит с изумлением) Но ЗАЧЕМ? Когда есть супер-программа??

Ну вы поняли, зачем Smile :)

Дальше еще фееричнее. Приходят родители одной из погибших девушек, Крис Дженкинс.
Лили находит ее дело и рассказывает родителям, что их дочь была, скорее всего, девушкой легкого поведения. Родители в шоке и ярости, кричат, что это не их дочь и вообще, «покажите нам ее». А показать нельзя, в морге бардак. Лили сплавляет родителей и возвращается к друзьям.

Они могли бы провести остаток ночи, идентифицируя трупы, чтобы сделать хорошую мину на комиссии, мол, "у нас все ок!". Но совесть не позволяет Лили отвернуться от близких погибшей.

Они начинают разбираться и находят... Еще одного Криса Дженкинса, мужчину. Карты мужчины и девушки заполнены одинаково, совпадает все, от примет до обнаруженных улик. Оказывается, программа считает ФИО уникальным идентификатором. Если два ФИО одинаковые, то она автоматически объединяет карточки! =) Ну и дальше вся серия про фикс бага.

**************************************************

Чем мне понравилась именно эта серия? Жизненная она!

1. Работает — не трогай

Анекдот «работает — не трогай» вызывает улыбку, но все так. Если завтра у вас ПСИ (приемо-сдаточные испытания), не стоит сегодня фиксить «вон тот малююююсенький баг, который ни на что больше не повлияет, ну честное слово же!».

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


И уж важные файлы переименовывать точно не стоит Smile :)

2. Кто будет так делать?

Иногда баги сложно обосновать. Тестировщик изменил расширение файла и все полетело к чертям. Он потирает ручки и заводит блокер. Ужас, кошмар, страшная ошибка! А разработчик смотрит, кривится и закрывает — «Кому надо менять расширение? Никто так делать не будет!»


Учитесь обосновывать свои баги! Да, конечно, иногда обоснования никуда не годятся: «Я то думал иначе, ВСЕ, ПРОГРАММА МНЕ СОЛГАЛА И Я УШЕЛ.А вы потеряли клиента!!!». А иногда обоснование есть, но разработчик не видит в нем ценности. И эту ценность надо донести.

Исправление должно принести ценность. Или избавить от страшных последствий. Если из-за случайного переименования файла перестает работать морг — это плохо. Если нельзя опознать трупы и получить информацию по ним — надо исправлять. Потому что все, что может случиться плохого, у реального пользователя обязательно произойдет. Заведем ошибку по шаблону:

************************************************************

Fatal Error после изменения расширения файла morg.org


Шаги для воспроизведения

  1. Переименовать расширение у файла morg.org (находится в home_morg\bin) на любое другое, например, morg.txt
  2. Запустить программу

Результат
Синий экран смерти, см рис _Fatal Error_.
Откат расширения обратно не помогает.

Ожидаемый результат
Внятная ошибка — «Файл home_morg\bin\morg.org не найден». Если переименовать его обратно, все работает.

************************************************************

3. Уникальность идентификатора

Это просто прекрасный баг. А я как раз с данными работаю, стандартизация, поиск дубликатов, вот это все =) Со всей серьезностью подтверждаю — совпадение ФИО еще ни о чем не говорит. Более того, могут совпадать даже даты рожденияи и адрес (близняшки или адрес рабочий).

Когда вы выбираете уникальный идентификатор, убедитесь в том, что он реально уникальный. Особенно, когда от него многое зависит. И задача тестировщика этой мега-системы была подумать, «а что произойдет, если к нам в морг поступят две Ивановых Марии?». Проверить, ужаснуться слиянию и срочно заводить баг:


************************************************************

Одинаковые ФИО объединяются в одну карточку


Шаги для воспроизведения
  1. Завести в систему тело с именем «Женя» и описанием «белая женщина 25 лет с синяком на руке».
  2. Завести второе тело с таким же именем — «Женя», но другим описанием — «черный мужчина 53 лет»
  3. Выйти из системы
  4. Зайти снова и открыть карточку «Женя»
Результат
Описание:
— белая женщина 25 лет с синяком на руке
— черный мужчина 53 лет

То есть две разные карточки схлопнулись в одну

Ожидаемый результат
Карточки остались разными, так как ФИО может быть неуникально, а улики и описание объединять нельзя.

************************************************************

Уверена, что разработчика придется еще поубеждать, что неуникальные ФИО попадут в один и тот же морг, ведь «так же не бывает Smile :)». Того же Найджела в устном разговоре можно припугнуть тем, что они попадут четко перед комиссией, «и что тогда?». Ну и потом, разработчик же делает программу «на века», значит, она будет долго служить. А уж за 5-10--20-40 лет точно неуникальные попадутся. И прикиньте, дело 50 летней давности объединится с новым! Тот случай, когда, даже если баг закрыли, нужно хотя бы попробовать его отстоять. Тут, главное, убеждать «в мире клиента», не просто кричать «я считаю, что БАГ, ИСПРАВЛЯЙ!!!», а показывать последствия, чтобы сам захотел исправить =)

См также:

Шаблон бага — использовался в статье.
Шаблон улучшения — такой же шаблон, только для улучшения =)
Как заводить задачи в баг-трекер — подробнее о том, как ставить задачу и заполнять обязательные поля.

Комментариев нет:

Отправить комментарий