dz

тестирование и жизнь

Oct 08, 2013 15:12

Мой экспресс-пост про тестирование вызвал бурление мнений.

В частности, меня объявили тестофобом и непрофессионалом. :)

Товарищи. Тесты всякие нужны, тесты всякие важны. Игнорировать их нельзя. Профессиональная разработка БЕЗУСЛОВНО включает в себя тестирование.

Но. Надо понимать, что НИКАКОЙ тест ничего не ГАРАНТИРУЕТ.

Два примера для упорных.

1. Юнит-тесты и TDD.

Выполняя задачу в рамках разработки, пинаемой тестированием (TDD) Бангалорский девелопер закоммитил в транк код функции возведения в степень следующего содержания: "return 4;". Функция успешно прошла юнит-тестирование и принесла детишкам много-много радости на этапе отладки.

Вопросы к фанатам tdd.

q1a: каков был тест для этой функции.

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

2. Но, конечно, главный бастион у нас - это регрессы. Полезность и осмысленность регресс-тестов никто не отрицает, они - наше всё. Только надо и тут чётко понимать - НЕ ГАРАНТИЯ.

Один мой знакомый забросил стезю программиста после того, как его перестали допускать до кода проекта. Почему перестали? А он его сломал. И вся остальная команда - включая крайне опытных разработчиков высочайшего класса - несколько дней стучалась головой об стену, пытаясь понять, что за ФЕЕРИЧЕСКИЙ бред творится в коде - причём повсеместно.

Нашли чудом. Благо - проект был небольшой, и код буквально перечитали от начала до конца. (Диффов не было - это 1986-й год, проект под ДОС).

Что же сделал наш кудесник? Поменял два байта.

Было

#define True 1
#define False 0

стало

#define True 1
#define False -1

Автор коммита говорил потом, что так красивее.

q2: покажите регресс-тест из любого вашего проекта, который поймает такое.

уроды, проекты, юмор, программирование

Previous post Next post
Up