Подошла тема тестов.



Да да, вы не ослышались, мы пишем тесты. Я вам больше скажу, тесты это такая же часть нашей жизни как вода, воздух и код.

Тестов существует огромное количество и они отличаются целью, технологиями, покрытием и тд.



Я много прохожу собеседований, и мне всегда очень обидно, что за спринг и ссаные коллекции меня спрашивают по 20-30 минут, но ни одного вопроса по тестам! Но как тогда вы блять делаете качественный продукт, если вы не задаете мне ни одного вопроса на эту тему? Для меня это звоночек... Значит в компании культура доставки ценности не очень развита, да и в целом процессы разработки ПО страдают.



Давайте поговорим в целом про тесты, не вдаваясь в подробности. Задайте себе вопрос: "зачем они нужны" и попробуйте ответить. Не читай дальше!!! Подумай блять!



Ладно, давай я...

Первое, запомните навсегда: пока у вас не прошли все написанные тесты, вы не можете быть хоть как-то уверенным в том, что ваш код работает, как вы задумали. Вы можете только фантазировать, что он работает. Но пока все тесты успешно не пробегут, это лишь ваши догадки.



Второе, запомните как отче наш: тесты не говорят о том, что у вас нет багов, тесты говорят о том, что баги есть!!! Если у вас успешно прошли все тесты, это не значит, что нет бага. Просто, вероятно, вы не написали тест, которые проверяет этот сценарий. Но если тест упал - значит есть баг!!! Тесты это сигнализация, которая дает нам моментальную обратную связь о том, что мы что-то сломали.



Тесты помогают нам смело менять и рефакторить существующий код, не боясь сломать его, т.к. хорошо написанные тесты начнут падать, если вы что-то сломаете своими изменениями.



Это очень помогает, когда на проект приходят новички, которые не знают всех нюансов и тонкостей, и как правило, чаще всего что-то ломают. В этом случае тест сразу скажет нам об этом и такое ПО не будет релизиться до тех пор, пока не будут устранены все проблемы.



Есть еще очень один важный нюанс: хорошо написанные тесты помогают понять намерения разработчика. Это практически тоже самое, что читать Javadoc. Тесты это сценарии, которые говорят вам, как ваш код должен работать с точки зрения клиента (под клиентом подразумевается не только end user, а также другой код, который вызывает ваш). Когда вы читаете такие тесты, вы как будто читаете рассказ о тестируемом коде, и уже исходя из тестов можно понять, как код работает.



Тесты - это инструмент, который помогает нам повышать качество нашего продукта.



Если вы не пишете тесты, можете выкинуть в помойку ваши каракули. На рабочем столе есть корзина, вот туда...



В следующих статьях подробнее разберу типы тестов и пирамиду тестирования.