Тестирование занимает особое место в работе каждого из нас. Это очень важная, сложная, не самая приятная, часто недоведённая до конца, недооценённая часть нашей работы. Поэтому я, как практикующий разработчик и технический руководитель небольшого стартапа, был рад возможности побеседовать с экспертом в этой области и задать ему свои наболевшие вопросы. Почему программисты не работают по TDD? Как правильно решать проблемы, связанные модульным тестированием системы, работающей с базой данных? Как избавиться от «человеческого фактора» и автоматизировать, в конце концов, тестирование пользовательского интерфейса?
[![][1]][2]
В рамках подготовки [**Joker 2016**][3] вышел пост [про легаси][4], который вызвал бурное обсуждение тестирования в Java, которое мы решили продолжить в интервью с Николаем Алименковым.
![][5]Николай — специалист в области разработки на Java уже с 12-летним стажем. Помимо основной рабочей деятельности, он — сооснователь и тренер тренингового центра XP Injection, активный участник и докладчик на международных конференциях. При его участии были организованы IT-конференции Selenium Camp, JEEConf, XP Days Ukraine и IT Brunch. Мы поговорили как о том, что можно улучшить в области тестирования в своей команде «здесь и сейчас», так и о том, к каким технологическим переменам нам следует готовиться в будущем.
** — Николай, мой первый вопрос — про самотестируемый код, использующий ассерты внутри самого себя. Твоё отношение к этой практике. **
— Мне кажется, что эта идея заведомо была некорректной. Предполагалось, что такие проверки могут заменить тесты и сделать код самоверифицированным, но, к сожалению, не срослось. Причина очень простая: в этой идее полагаются на то, что, разработчик, когда он пишет код, одновременно думает и о реализации, и о побочных явлениях, которые могут произойти. Но разработчики не так хорошо переключают контекст налету. Вместо этого юнит-тесты заставляют делать сначала фокус на тестирование, а потом возвращаться к фокусу на разработку.
[Читать дальше →][6]
[1]:
https://habrastorage.org/getpro/habr/post_images/2d8/a56/bb0/2d8a56bb0fab8ebaed85a78590df32df.jpg
[2]:
https://habrahabr.ru/company/jugru/blog/309502/
[3]:
http://jokerconf.com/
[4]:
https://habrahabr.ru/company/jugru/blog/308528
[5]:
https://habrastorage.org/getpro/habr/post_images/f7f/4ca/359/f7f4ca359574a0741464736ec15810b5.jpg
[6]:
https://habrahabr.ru/post/309502/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut