Тестирование занимает особое место в работе каждого из нас. Это очень важная, сложная, не самая приятная, часто недоведённая до конца, недооценённая часть нашей работы. Поэтому я, как практикующий разработчик и технический руководитель небольшого стартапа, был рад возможности побеседовать с экспертом в этой области и задать ему свои наболевшие вопросы. Почему программисты не работают по 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