понедельник, марта 10, 2008

Отчет об ошибке

Вы заранее знаете все что будет написано в этом посте. И тем не менее все равно хочется написать. Каким должен быть отчёт об ошибке в программе? Про это написано множество статей и даже книжек. Мне иногда кажется что из-за того что их написано такое множество, и выходит так, что большинство отчётов невозможно толком понять.

Поэтому я завязываю с предисловием и перехожу к сути дела.


  1. Перед тем как добавить новый отчёт об ошибке (новый баг, CR типа дефект, называйте как хотите) необходимо убедиться что его ещё нет в системе.

  2. Уточнить о какой версии продукта (и модуля, и если нужно подмодуля) идет речь. До последней цифры, даже если их 18.

    Например: Программа Феликс, версия 4.2.1121.1356b

  3. Описать проблему в примерно таком порядке:
    1. Краткое описание
      Неправильное сложение отрицательных чисел
    2. Последовательность шагов, которую нужно проделать для того чтобы проблему воспроизвести
      • Ввести операцию сложения (ну может Феликс в польской записи работает :-) )
      • Ввести '-2' в качестве первого аргумента
      • Ввести '-3 в качестве второго аргумента
      • Нажать на кнопку получения результата
    3. Ожидаемый результат - вы думали что когда это проделаете, то получится то-то
      Ожидали получить -5
    4. Полученный результат - а на самом деле получилось ....
      Получили -1
    5. Существует ли способ получить ожидаемый результат (способ обойти ошибку)? Если да, то какой?
      Да, если сначала ввести -3, а потом -2 то сложение выполняется верно
  4. Все сообщения об ошибках должны быть обязательно приведены (желательно в виде скриншота)
    Сообщений об ошибках не выдаётся


И все ...

P.S. Зачем нужен пункт, описывающий способ обойти ошибку (если он существует)? Во-первых, для удобства приоритезации. Ошибкам обычно присваивается приоритет и часто ошибке которая не приводит к полной потере работоспособности имеет смысл присвоить более низкий приоритет. Во-вторых, часто описание способа обхода дает разработчиками ключ к пониманию того, почему же собственно программа неправильно работает.