Про валидацию тестовой модели
Меня в своё время вот какой факт застал врасплох: если у вас все зашибись с автотестами, и все кейсы покрыты, то это, оказывается, ваще не значит, что все работает.
Если ваши автотесты работают с заглушками внешних систем (это правильный вариант), то при столкновении с реальной системой все может пойти не так. Также тесты могут не учитывать какие-то нюансы вашей инфраструктуры. Да и каких-то особенных кейсов может быть больше, чем вы думали изначально.
В общем, несмотря на то, что тест зелёный, все равно необходимо проверять, что все реально работает, как надо. Это называется валидацией тестовой модели, и это очень важно. Очень важно. Пока тест не провалидирован руками, ему верить нельзя.
Как это делается? По-разному, но лучше всего это делать как можно чаще - сразу после реализации даже небольшого куска функциональности. Одно из главных правил Lean: если что-то болит, надо делать это как можно чаще.
На этой идее стоит экстремальное программирование. Плохо с проектированием - внедряйте практики регулярного ежедневного и ежечасного рефакторинга. Плохо с тестами - пишите каждый тест после каждого кусочка кода, а лучше даже вообще до. Плохо с мерж-конфликтами? Мержите в мастер каждый день, а лучше - каждый час.
Вот и с валидацией так же: позеленили тест-кейс - сразу ставьте на стейджинг (копию прода) и проверяйте, будет ли соответствовать в проде ваш тест тому, поведению, которое вы планировали реализовать.
Впрочем, тут для фуллстеков есть нюанс: если вы зелените тесты на бэке, то фронт, вполне вероятно, может быть ещё не готов. Поэтому часть сложных кейсов с бизнес-логикой имеет смысл валидировать только тогда, когда для них уже готов фронт, а бэк стараться предварительно валидировать какими-то квази-тестами: например, интеграционными смоуками с реальной внешней системой.
Без такой дисциплины постоянной валидации вам придётся уже в конце разработки проходить все это руками кейс за кейсом и править все косяки. И вот тут легко может притаиться какой-нибудь отстойный нежданчик. А скорее всего целая куча таких нежданчиков.
И тогда, как минимум, вы окажетесь в дурацкой ситуации, когда фича вроде как написана, но сколько там ещё багов на самом деле - одному богу говнокода известно. То есть фича готова, но не готова, а когда будет, вы не знаете и никто не знает.
Еще обиднее может быть, когда на тесте выяснится, что, например, весь ваш подход к интеграции/реализации был неверный, и фичу необходимо очень сильно переделать. Вот это вообще антикайф, отвечаю.
PS: в комментариях непонятки, поэтому уточню. Если ваш автотест зелёный, а ручками не работает, то, значит, автотест неправильный. В этом суть валидации. Правьте тест, правьте поведение и валидируйте по новой.
Если и тест зелёный, и ручками все хорошо, то это не значит, что тест правильный, но теперь это уже вопрос ревью.
Post #135
758
- ❤ 2