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

13

Есть некоторые типы ошибок, которые очень трудно воспроизвести, они случаются очень редко и кажутся случайными. Может случиться так, что я найду возможную причину, исправлю ее, протестирую программу и не смогу воспроизвести ошибку. Однако, поскольку невозможно было надежно воспроизвести ошибку, и это случалось так редко, как я могу указать это в багтрекере? Каков общий способ сделать это?

Если бы я установил statusфиксированный, а solutionфиксированный - это означало бы что-то полностью исправленное, не так ли?

Является ли обычной практикой установка statusфиксированного значения и solutionоткрытого для указания тестировщикам, что «оно, вероятно, исправлено, но требует большего внимания, чтобы убедиться»?

Изменить: большинство (если не все) средства отслеживания ошибок имеют два свойства для статуса ошибки, возможно, имена не совпадают. К statusЯ имею в виду новый, назначен, фиксированный, закрытый, и т.д. , и solutionя имею в виду открытый (новый), фиксированный, неразрешимой, не воспроизводимым, дублировать, не ошибка и т.д.

ВСЗ
источник
3
Это несколько специфично для вашего баг-трекера. Какие еще значения вы можете присвоить статусу и решению ?
шарфридж
В некоторых средствах отслеживания ошибок есть статус разрешен, а другой статус закрыт. Только QA разрешено устанавливать статус закрытым, но разработчики могут установить статус разрешен.
Брайан

Ответы:

8

Является ли общепринятой практикой установление статуса «фиксированный» и решение, открываемое для указания тестировщикам, что «оно, вероятно, исправлено, но требует большего внимания, чтобы убедиться»?

Обычный или нет, это все равно правильно делать, и вы сами объяснили, почему, несмотря ни на что, это хороший подход к

укажите тестерам, что «это, вероятно, исправлено, но требует большего внимания, чтобы убедиться»


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

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

комар
источник
6

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

eminemence
источник
+1 - это самый простой ответ. Если вы сделали все возможное, и набор тестовых групп достаточно силен, что еще вы можете сделать?
Оз
3

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

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

Например, допустим, вы меняете программу, и тестер тратит 1 час на попытки воспроизвести ошибку, а ошибка не появляется - достаточно ли было одного часа? Или дальнейшее тестирование - пустая трата времени, потому что ошибка уже исправлена?

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

Сказав это, вы можете подумать о том, как смоделировать этот процесс в вашей системе отслеживания ошибок: не пытаясь исправить это и передать тестерам, может быть состояние ошибки типа «открыто». Если тестеры не могут воспроизвести его, это, очевидно, «не воспроизводимо». Надеюсь, этого не произойдет, они найдут воспроизводимый сценарий, вы сможете найти основную причину вашей ошибки, исправить ее и установить статус «исправлено». Старайтесь избегать чего-то вроде «не знаю, если это исправлено».

Док Браун
источник
4
Для определенных типов ошибок воспроизводимый тестовый сценарий просто не существует. Например, ошибка, связанная с синхронизацией, может произойти в среднем 1 раз в миллион, но невозможно предсказать, будет ли это на 3-м или 532454-м пробеге. Тем не менее, такие ошибки являются ошибками и должны быть исправлены.
Joonas Pulakka
3
@Joonas Pulakka: я согласен. И такие ошибки могут зависеть от внешних обстоятельств. В случае встраивания они могут зависеть от скачков напряжения, вызванных чем-то не зависящим от вас. Не пытаться исправить это не всегда лучшее решение, особенно если я обнаружил запах кода, который, как я подозреваю, может быть причиной этой ошибки. В таком случае, почему я не должен это исправить?
vsz
2
@JoonasPulakka: по моему опыту в отношении воспроизводимых сценариев, в большинстве случаев, когда люди говорят «это невозможно», они просто упускают правильную идею, чтобы сделать вещи возможными. В вашем примере можно настроить сценарий с циклом «10 миллионов прогонов», что, по крайней мере, очень вероятно, что ошибка будет обнаружена в разумные сроки.
Док Браун
2
@vsz: конечно, вы должны это исправить, но я предлагаю сначала создать тест (или дать подсказку тестировщикам, что тестировать), а затем исправить, а не наоборот.
Док Браун
2
@DocBrown прав, еще один способ думать об этом состоит в том, что иногда ошибки требуют статистического подхода, чтобы «воспроизвести» их. Вполне может быть, что существует очень специфический набор входных данных / обстоятельств, которые воспроизводят ошибку, но вы НЕ МОЖЕТЕ иметь никакого представления о том, что это за входные данные, а набор возможных входных данных может быть слишком большим, чтобы его можно было перебрать. В этих случаях одним из подходов является сбор статистики о возникновении ошибки каждый раз, когда вы пытаетесь ее устранить. Это может занять много времени, и результаты могут не дать вам 100% «уверенности» в статистическом смысле, но иногда это все, что у вас есть.
Анджело
0

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

У меня есть два совета: (1) предположить, что несколько причин могут быть в силе, пока вы не узнаете иначе, и (2) выдвинуть гипотезу о том, как симптомы могут существовать, а затем разорвать каждую линию логики, которая даже отдаленно задействована. Глубокие прохождения иногда являются единственным средством для удовлетворительной цели.

Крис Кокран
источник