Рассмотрим следующий код (из требования, в котором говорится, что 3 является особенным по какой-то причине):
bool IsSpecial(int value)
if (value == 3)
return true
else
return false
Я бы протестировал это с помощью пары функций - одна с именем TEST (3IsSpecial), которая утверждаетчто при пропуске 3 функция возвращает истину, а другая передает некое случайное значение, отличное от 3, и утверждает, что функция возвращает ложь.
Когда требование меняется и говорят, что теперь оно становится 3, а 20 являются специальными, я бы написалдругой тест, который проверяет, что при вызове с 20 эта функция также возвращает true.Этот тест провалился бы, и я затем пошел бы и обновил условие if в функции.
Теперь, что если в моей команде есть люди, которые не верят в модульное тестирование, и они вносят это изменение.Они будут напрямую переходить и изменять код, и, поскольку мой второй модульный тест может не проверять 20 (это может быть случайный выбор типа int или наличие какого-либо другого int в жестком коде).Теперь мои тесты не синхронизированы с кодом.Как я могу гарантировать, что, когда они изменяют код, какой-то модульный тест или другой проваливается?
Я мог бы сделать что-то совершенно не так, поэтому любые другие методы, чтобы обойти это, также приветствуются.