Нужны ли тесты именно вашему проекту?
Всем привет! Меня зовут АйТи Синяк!

В последнее время в моем окружении часто возникает вопрос о важности/нужности тестов. И я решил попробовать опубликовать мое текущее видение ситуации (надеюсь это будет череда статей/видео), чтобы можно было отвечать коллегам ссылкой на всеми любимый Хабр.
Начну, пожалуй, с воспоминаний.
Стою я как-то перед Лидом, совсем зеленый еще, и спрашиваю его:

— A зачем нам нужны тесты?
А он в ответ заводит шарманку о их важности. Как в банках, каждый час поломки сайта, стоит сто тысяч долларов и им любая возможность найти баг на вес золота, поэтому там покрыто тестами все вдоль и поперек!
а я не унимаюсь с вопросами:
— А у нас то сайт по аренде квартир, пользователей очень мало, нам то зачем?
Лид понял, что покодить он не сможет и решил объяснить как обстоят дела:
— Помнишь когда регестрируется новый арендодатель на сайте и указывает что он из Екатеринбурга, мы даем ему заполнить опросник.
— Да, та форма про которую мы вечно забываем, когда правим инпуты на сайте и потом тестировщики уже который раз нам задачу пере открывают
— Все верно, поэтому я и пишу тесты для этой формы, когда ты запушишь комит, тесты выполнятся на CI и тебе придет письмо о том что ты сломал опросник. И ты, находясь еще в контексте, все поправишь. В итоге и тебе проще и команде тестирования сэкономишь время на переоткрытии тикета.

— Ого, ты прав, а я об этом и не подумал — задумался молодой Синяк.
— Еще у нас покрыт тестами поиск — продолжил Лид. — Мы собрали статистику, какие слова и их сокращения чаще используются в поиске. Например, вместо двухкомнатная квартира пишут двушка в центре. Наш тест проверяет правильность ответов на самые популярные запросы, а это очень важно для бизнеса, т.к. по той же статистике поиск является самым популярным способом для поиска квартиры, а это эквивалентно прибыли. В итоге команде тестирования не нужно перепроверять при каждом релизе все варианты поиска, а бизнес нами доволен, потому что поиск еще ни разу не подводил.

— Точно! — воскликнул молодой Синяк. — Я помню, как ребята команды тестирования радовались этому, я тогда не понимал всей важности момента… И-и-и … Последнее что я не могу понять, это зачем для тестирования понадобился StoryBook, как это вообще связано?
— Тут все просто, у нас есть календарь для выбора дат, он бывает разным, для выбора просто даты или даты и времени или выбора промежутка дат. Точно такой же набор календарей с другим дизайном используется в админке. Если сюда еще добавить темную тему, то у нас уже почти 10 видов одного календаря.

— Поэтому было решено покрыть тестами все состояния — продолжал Лид. — , чтобы никто случайно переделывая для админки календарь не сломал на главной странице сайта.
Для этого и используется StoryBook, в котором собираем в одном месте все типы календарей во всех состояниях (открытый список дат или уже выбранные даты) и с помощью специальных инструментов делаем скриншоты этих страниц и сохраняем в проекте.
И уже после любых изменений в этом календаре наши тесты будут сравнивать скриншот до изменений и после, и показывать какая разница между ними. Таки образом мы всегда знаем, что ничего не сломалось, да и команде тестирования гораздо проще просмотреть StoryBook, чем бегать по всему сайту чтобы проверить все ли выглядит по дизайну.

— Звучит как нанотехнология, сравнивать две картинки, пойду скорей смотреть как это работает! — восторженно пропищал молодой Синяк.
Примерно так я и познакомился с тестами. В тот день у меня пришло осознание, что тестами можно покрыть буквально любой проект. Потому что в любом проекте есть богом забытые страницы, переиспользуемый UiKit и конечно же ключевой функционал приносящий деньги.
Просто подумайте об этом, если вдруг youtube перестанет выдавать интересные именно Вам видео или Yandex Radio начнет вместо хип-хоп выдавать рок музыку, а в ленте Instagram появятся абсолютно незнакомые вам люди. Все это можно покрыть тестами и быть спокойными при каждом релизе.