Регрессионное тестирование
Это все о регрессионном тестировании .
Представьте себе следующего разработчика, который смотрит на ваш метод и замечает, что вы используете магические числа. Ему сказали, что магические числа являются злом, поэтому он создает две константы, одну для числа два, другую для числа три - в этом изменении нет ничего плохого; не похоже, что он изменял вашу уже правильную реализацию.
Отвлекаясь, он инвертирует две постоянные.
Он фиксирует код, и все, кажется, работает нормально, потому что нет регрессионного тестирования после каждого коммита.
Однажды (может быть, через несколько недель) что-то сломается в другом месте. И под другим я имею в виду совершенно противоположное расположение базы кода, которая, похоже, не имеет ничего общего с polynominal
функцией. Часы мучительной отладки приводят к виновнику. В течение этого времени приложение продолжает отказывать в работе, вызывая множество проблем у ваших клиентов.
Хранение оригинальных тестов, которые вы написали, может предотвратить такую боль. Отвлеченный разработчик фиксирует код и почти сразу видит, что он что-то сломал; такой код даже не достигнет производства. Модульные тесты, кроме того, будут очень точно определять местонахождение ошибки . Решить это не составит труда.
Побочный эффект ...
На самом деле, большинство рефакторинга в значительной степени основано на регрессионном тестировании. Сделайте небольшое изменение. Тест. Если это пройдет, все в порядке.
Побочным эффектом является то, что если у вас нет тестов, то практически любой рефакторинг становится огромным риском взлома кода. Учитывая , что это во многих случаях, это уже трудно объяснить руководству , что рефакторинг должно быть сделано, то это будет еще труднее сделать это после того, как ваши предыдущие попытки рефакторинга ввести несколько ошибок.
Имея полный набор тестов, вы поощряете рефакторинг, а значит, и более чистый код. Без риска, становится очень заманчивым проводить рефакторинг на регулярной основе.
Изменения в требованиях
Другим важным аспектом является то, что требования меняются. Вас могут попросить обработать комплексные числа , и внезапно вам потребуется выполнить поиск в журнале контроля версий, чтобы найти предыдущие тесты, восстановить их и начать добавлять новые тесты.
Почему все это хлопотно? Зачем удалять тесты, чтобы добавить их позже? Вы могли бы сохранить их в первую очередь.