Зеленый набор тестов не означает, что ваш код правильный; это означает, что вы еще не нашли неисправность. Предупреждение Дейкстры — это напоминание о необходимости писать тесты, которые пытаются взломать ваш код, а не тесты, которые его подтверждают. Эта дисциплина сейчас важнее, чем...
Зеленый набор тестов не означает, что ваш код правильный; это означает, что вы еще не нашли неисправность. Предупреждение Дейкстры — это напоминание о необходимости писать тесты, которые пытаются взломать ваш код, а не тесты, которые его подтверждают. Эта дисциплина имеет большее значение сейчас, когда ИИ создает код, который проходит простые тесты, скрывая при этом случаи, которые потерпят неудачу в полевых условиях.
В 1970 году Эдсгер Дейкстра написал фразу, которую должен запомнить каждый инженер: «Тестирование программ можно использовать для того, чтобы показать наличие ошибок, но никогда — для того, чтобы показать их отсутствие!» Это кратко и точно. Неудачный тест говорит вам нечто определенное: здесь есть дефект. Пройденный тест расскажет вам гораздо меньше, чем кажется. Это говорит лишь о том, что этот вход на этом пути на этот раз не подвел.
Прохождение теста доказывает, что вы еще не обнаружили дефект. Ничего больше.
Большинство инженеров читают эту строку, соглашаются с ней, а затем работают так, как будто верно обратное. Комната становится зеленой, и кажется, что задача выполнена. Но зеленый цвет не является доказательством правильности. Это лишь означает, что на этот раз сбоя не было обнаружено. Разрыв между этими двумя вещами и есть причина большинства производственных ошибок — входные данные, о которых вы не подумали, порядок, который вы не пробовали, плата, которая ведет себя не так, как включенная.