Мысль о бидидизме

Sep 17, 2017 20:34


Не подумайте плохого - мне идея BDD (Behavior Driven Development) очень нравится. В этом случае смешивается анализ, программирование, тестирование; разработчик разбирается в проблеме, одновременно пишет код, тесты, создаёт документацию. Отмечу, что под разработчиком я подразумеваю не только программиста, но вообще любого, кто связан с этим процессом (аналитика, дизайнера, программиста, тестировщика).

Однако, что-то в последователи BDD упускают. Я не говорю про те проблемы, которые BDD имеет: уверен, что если кому-то нравится так работать, и что если процесс экономически выгоден, то со счетов его сбрасывать нельзя ни в коей мере. Но вспомним требования к тестам, которые давно уже стали мантрой:

  1.  Быстрота (Fast). Тесты должны выполняться быстро.
  2.  Независимость (Independent). Результаты выполнения одного теста не должны быть входными данными для другого.
  3.  Повторяемость (Repeatable). Тесты должны давать одинаковые результаты не зависимо от среды выполнения.
  4.  Очевидность (Self-Validating). Результатом выполнения теста должно быть булево значение.
  5.  Своевременность (Timely). Тесты должны создаваться своевременно.

Очень правильные требования. А теперь рассмотрим, как jbehave / cucumber рассматривают сценарии: каждый шаг сценария определяется как маленький тест. В этом случае нарушаются 2 и 4 требования к тестам, потому что:

  • каждый последующий шаг может зависеть от предыдущего (исключение - шаги, связанные конструкцией And);

  • в большинстве случаев только последний шаг (Then) делает проверку условия.

... может, это неправильно - рассматривать каждый шаг как тест?! Или примеры BDD неправильно показывают методологию?!

разработка через тестирование, проблемы, разработка через поведение, статьи писать, bdd

Previous post Next post
Up