Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя
36 лет живу, 16 лет программирую, 7 лет путешеству...  · 25 авг 2021  · ryabenko.pro

Принципы F.I.R.S.T. и почему их нужно соблюдать

Роберт Мартин в своей книге "Чистый Код" описал 5 простых принципов которым должны соответствовать юнит тесты. Вкратце принципы звучат так:
Fast - тесты должны быть невероятно быстрыми, чтобы их хотелось запускать как можно чаще
Independent - тесты не должны зависеть от результатов выполнения других тестов
Repeatable - тесты должны всегда выдавать одинаковый результат в любом окружении
Self-Validating - результат выполнения тестов бинарен и полностью автоматизирован. Разработчик должен видеть явный ответ тесты прошли или нет.
Timely - тест должен быть написан вовремя, то есть прямо перед кодом который позволит тесту пройти успешно.
В последнем пункте дядюшка Боб прямо говорит: Если писать тест после кода то:
  • можно обнаружить что написанный код тяжело тестировать
  • можно решить что написанный код тяжело тестировать
  • можно писать код который будет не тестируемым
Несоблюдение этих принципов чревато получения от тестов результатов прямо противоположных ожидаемым. Вместо стабильного кода - набор костылей, вместо ускорения разработки - трата времени на борьбу с тестами, вместо прокачки навыков - увязание в собственном коде и невозможность дать четких сроков выполнения даже для простых задач.
Эти пять принципов необходимо знать наизусть и всегда использовать. Первые четыре очень просты, хотя придется постараться чтобы сделать тесты действительно быстрыми (все тесты должны выполняться меньше, чем за секунду). Что касается пятого принципа - писать тесты до кода - это тот самый Test Driven Development, для освоения которого обычно требуется несколько месяцев.
Программирование+1
А когда-то прекрасно писались невероятные программы без всяких тестов. Может "в консерватории что-нибудь поправить?"(с)
@Василий Горчаков, да, и без скрамов тоже были успешные проекты. И TDD и Скрам повышают только шансы на стабильность кода и успех продукта, но не гарантируют.