Как справляться с невоспроизводимыми ошибками

Вы когда-нибудь оказывались в таком положении - клиент сообщает об ошибке, но вы не можете воспроизвести ошибку. Даже команда QA не может воспроизвести ошибку. Мы столкнулись с такой ситуацией с нашим настольным приложением (C #, windows forms). Что вы предлагаете сделать, чтобы воспроизвести ошибку, или отследить сценарий, который приводит к ошибке.


person jess    schedule 09.11.2010    source источник
comment
Нам, вероятно, понадобится значительно больше информации, чтобы здесь было много пользы ... Я знаю, что делал такие вещи, как наблюдал, как клиент воспроизводит ошибку на своей машине, пока я просматриваю удаленно. Это может быть болезненный опыт, но он может оказаться полезным или бесполезным.   -  person Andrew    schedule 09.11.2010


Ответы (2)


Да, это обычная ситуация.

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

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

person Mark Byers    schedule 09.11.2010

Все зависит от того, с какой ошибкой вы столкнулись (логическая, пользовательский интерфейс, многопоточный или фактический пользователь).

  • Убедитесь, что клиент предоставил вам всю необходимую информацию для воспроизведения ошибки.
  • Если возможно, попросите клиента показать вам, как воспроизвести ошибку, или, по крайней мере, отправьте несколько снимков экрана, показывающих, как это было сделано.
  • Убедитесь, что вы написали какой-нибудь модульный тест, чтобы попытаться скрыть ошибку, попробуйте доказать, что она существует.
person Adriaan Stander    schedule 09.11.2010