понедельник, 30 апреля 2012 г.

Зачем нужны логи?

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

Вам не нужны логи? Все падения ручных тестов легко воспроизведете сами?

Ок. Выпустили продукт в продакшен, звонит пользователь - у меня упало!
Вы по его путанным объяснениям и так и сяк систему корячите - нет проблемы. Ведь пользователей не учат локализовывать проблемы, запоминать ВСЕ свои шаги (а порой бага воспроизводится только при обязательном выполнении некоего пункта). Он просто "ввел данные", и все.

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

Навеяно обсуждением локализации проблем на тренинге Алексея.

В принципе, иногда хватает даже не столько логов, сколько журнала действий пользователя.

Это:
  1. Нужно пользователям. Например, руководители смогут отслеживать то, что сделали их подчиненные.
  2. Нужно нам. Чтобы, получив звоночек от пользователей (у нас проблема!), можно было просто открыть боевой стенд (если мы говорим о веб-приложении) и посмотреть журнал - а что, собственно говоря, сейчас происходило? Это поможет навести на мысль, куда копать дальше.
Ну и кусочек собственного опыта. Ведь действительно, даже логи не всегда спасают...

Был у нас такой случай. По просьбе пользователей сделали журнал действий пользователя. Логировалось создание, редактирование. Но не удаление - им было не нужно.

И вот! Отрелизились, все хорошо, smoke-тесты проблем не обнаружили.

Потом приходит запрос от пользователя - "а что это такое в логах? что за система??".
Смотрим - "Карточка пользователя. Событие - изменение. Автор - Система"...

Я тут же полезла менять карточку, размышляя, как могла упустить такую очевидную ошибку, ведь я ее даже не видела на тестовом стенде! Хм... Изменила карточку, автор в логах корректный... Полезла посмотреть на боевой, какие роли были у измененного. Стала играться на тестовой системе.

Ну никак. Что делают с такими проблемами? Правильно, откладывают в долгий ящик. Не воспроизводится же. Пользователям изредка появляющаяся запись в логах особо не мешала, я воспроизвести не могла, программисты разводили руками.

Но ведь одно дело - когда проблему посчитали низкоприоритетной. и ее решение отложили. А другое - когда ты даже локализовать проблему не смог! Так и пыталась я периодически ее воспроизвести.

И вот наконец... Через пару недель, в следующий релиз, проводя smoke, я внезапно обнаружила ровно такую же запись (так как время было ближе к полуночи, никто больше ее оставить все равно не мог). И вот наконец-то, наконец-то!!!  Меня осенило!

Тут надо признать, что локализация проблемы, которую вы долго и упорно не могли отловить, приносит в 100 раз больше удовольствия, чем нахождение обычной ошибки. Так что чувство распирающей гордости/радости я помню до сих пор :) И когда я сказала начальству, что нашла таки ЕЕ, у меня сразу попросили ссылочку - всем было интересно, не одна я искала причину :)))

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

Мораль сей басни такова - если уж логируете, логируйте все :)

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

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