Я провожу тестирование большого коммерческого кода, этот раздражающий сценарий встречается слишком часто. Обычно это свидетельствует о том, что у нас нет железных процедур для сборки двоичного кода на всех платформах, которые мы поддерживаем. Таким образом, если разработчик создает свой собственный код (который он должен сделать для отладки и исправления) и не следует той же процедуре сборки, описанной в письме, существует вероятность, что системные зависшие ошибки будут магически исчезать (или появляться). , Конечно, эти вещи обычно закрываются с помощью «работает для меня» в базе данных ошибок, и, если они потерпят неудачу при следующем запуске этой проблемы, ошибку можно будет снова открыть. Всякий раз, когда я подозреваю, что ошибка может зависеть от системы, я пытаюсь проверить ее на различных платформах и сообщить, при каких условиях она возникает. Часто возникает проблема повреждения памяти, если поврежденные данные имеют достаточно большую величину, чтобы вызвать сбой. Некоторые платформы (комбинации HW и OS) могут давать сбой ближе к фактическому источнику повреждения, и это может быть очень полезно для бедного парня, который должен его отладить.
Тестер должен сделать некоторую добавленную стоимость, помимо сообщения о том, что его система показывает сбой. Я трачу много времени на отсеивание ложных срабатываний - возможно, соответствующая платформа была перегружена или в сети произошел сбой. И да, иногда вы можете получить что-то, на что действительно влияют случайные события синхронизации, аппаратные ошибки часто могут быть похожи на прототип: если два запроса данных возвращаются с одинаковым периодом времени, а аппаратная логика для обработки потенциального конфликта неверна, тогда ошибка будет появляться только периодически. Аналогично с параллельной обработкой, если только благодаря тщательному проектированию вы не ограничите решение независимостью от того, какой процессор оказался более быстрым, вы можете получить ошибки, которые случаются только один раз в голубой луне, а их статистическая бесполезность делает отладку кошмаром.
Кроме того, наш код обновляется, как правило, много раз в день, отслеживая точный номер редакции исходного кода, поскольку, когда он вышел на юг, может быть очень полезной информацией для отладки. Тестер не должен вступать в состязательные отношения с отладчиками и разработчиками, он является частью команды по улучшению качества продукта.