Действительно ли отличные программисты используют модульное тестирование?

Мне было интересно, действительно ли великие программисты (Кнут, Керниган, Торвальдс и др.) являются сторонниками обширного модульного тестирования. Я могу представить крупные проекты, над которыми они работали над добавлением их для решения проблем масштабирования совместной работы, но, скажем, использовались модульные тесты Knuth в TeX? И это не влияет на мое решение использовать их, это просто вопрос любопытства.

Ответ 1

В этом интервью Кнут объясняет, что он не фанатичный блок-тестер:

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

В том же ответе, где он объясняет, как он выиграл соревнование по программированию в Стэнфорде (гонку), будучи единственным участником, использующим перфокартные карты на серийном мэйнфрейме, - все остальные использовали эти новомодные интерактивные терминалы на временной шкале, поэтому, конечно, финишер второго места занял более часа, чем Кнут.

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

Ответ 2

Джошуа Блох делает:

InfoQ: Вы считаете, что другие инструменты и процессы, такие как модульное тестирование, Тестируемое развитие или пара программирование также помогает в программировании эффективно в Java?

Джошуа Блох: Абсолютно. Единичное тестирование является ключевым. И сначала пишите свои тесты это замечательная вещь.

Ответ 3

Кнут не unit test.

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

Конечно, Кнут также сказал *:

Остерегайтесь ошибок в приведенном выше коде; Я только доказал это правильно, не пробовал.

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

Ответ 5

Да, есть много замечательных программистов, которые практикуют модульное тестирование. Как насчет Мартина Фаулера, Роберта С "Дядя Боб" Мартин, Майкл Перс и, конечно, Кент Бек. Вопрос не в том, "проверяет ли Джон Скит единичное тестирование", может ли ты работать над кодом Джона Скита и знать, сломаешь его или нет? Не могли бы вы работать над своим собственным кодом, который вы написали два года назад, и знаете, сломаете ли вы его или нет? и наконец... точно, сколько людей с QA у вас есть в вашем офисе? и сколько времени вы проводите с программным обеспечением в QA, не генерируя деньги для вас? Как быстро вы можете определить ошибки?

Тестирование модулей - это то, что мы делаем, чтобы перенести затраты на разработку программного обеспечения до самого начала, когда его дешевле, до того, как 20 QA начнут смотреть на него и до того, как вы потеряете клиента, потому что вы не смогли исправить ошибку достаточно быстро.

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

Ответ 6

Я лично понятия не имею, ребята ли они/выступали за формальные модульные тесты

Имейте в виду, однако, что Кент Бек объясняет, что TDD следует рассматривать как формализацию типов практик, которые естественным образом используют великие программисты, даже не осознавая этого. Это для нас плохие соки, которые не являются гениями, и помогает нам писать гораздо более надежный код, сделать его более адаптируемым и не позволяет тратить время на написание кучи кода, который никогда не используется. Я обнаружил, что он полностью нацелен на эту оценку.

Ответ 7

Наверное, нет.

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

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

Для записи я ненавижу модульное тестирование. Назовите это почтением.

Ответ 8

Из чтения Ayende blog, я понимаю, что некоторые из его самых успешных проектов не имели ни одного или нескольких модульных тестов. Однако он использует их во многих проектах, как правило, не во всех проектах. (опять же из того, что я собрал, читая его блог).

Ответ 9

Джон Скит попробовал модульное тестирование, но все его тесты прошли без кода.

Или что-то в этом роде.