[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-testirovanie-chto-takoe-tdd-i-bdd":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},1292,"chto-takoe-tdd-i-bdd",42,"testirovanie","Тестирование","✅","Что такое TDD и BDD?","TDD (Test-Driven Development) -- методология разработки, при которой тесты пишутся до кода. BDD (Behavior-Driven Development) -- расширение TDD с фокусом на поведение системы, описанное бизнес-языком в формате Given-When-Then.\n\n### Цикл TDD: Red-Green-Refactor\n\n```\n1. RED      -- написать failing test\n2. GREEN    -- написать минимальный код, чтобы тест прошёл\n3. REFACTOR -- улучшить код, не ломая тесты\n```\n\n### Пример TDD\n\n```java\n\u002F\u002F Шаг 1: RED -- тест для несуществующего метода\n@Test\nvoid shouldCalculateDiscount() {\n    PricingService service = new PricingService();\n    assertEquals(90.0, service.applyDiscount(100.0, 10)); \u002F\u002F метода ещё нет\n}\n\n\u002F\u002F Шаг 2: GREEN -- минимальная реализация\npublic double applyDiscount(double price, int percent) {\n    return price * (100 - percent) \u002F 100;\n}\n\n\u002F\u002F Шаг 3: REFACTOR -- улучшаем, тест остаётся зелёным\n```\n\n### BDD: Given-When-Then\n\n```java\n@Test\n@DisplayName(\"Когда применяется скидка 10%, цена уменьшается на 10%\")\nvoid discountScenario() {\n    \u002F\u002F Given -- начальное состояние\n    var pricing = new PricingService();\n    double originalPrice = 100.0;\n\n    \u002F\u002F When -- действие\n    double discountedPrice = pricing.applyDiscount(originalPrice, 10);\n\n    \u002F\u002F Then -- ожидаемый результат\n    assertThat(discountedPrice).isEqualTo(90.0);\n}\n```\n\n### Сравнение TDD и BDD\n\n| Критерий | TDD | BDD |\n|----------|-----|-----|\n| Фокус | Корректность кода | Поведение системы |\n| Язык | Технический | Бизнес-язык |\n| Формат | Тест -> Код -> Рефакторинг | Given-When-Then |\n| Участники | Разработчики | Разработчики + бизнес |\n| Инструменты | JUnit, TestNG | Cucumber, JBehave |\n\n### Ключевые принципы\n\n- TDD заставляет думать о дизайне API до реализации -- код получается тестируемым\n- BDD Given-When-Then -- универсальная структура любого теста, даже без формального BDD\n- Mockito BDD: `given(mock.method()).willReturn(value)` + `then(mock).should().method()`\n\n### Частые ошибки\n\n- TDD для всего -- для тривиального CRUD overhead превышает пользу\n- Слишком детальные тесты -- тест привязан к реализации, рефакторинг ломает тесты\n- BDD без участия бизнеса -- Given-When-Then полезен как формат, но полноценный BDD подразумевает Cucumber + бизнес-аналитиков\n\n### Как используется в 2026\n\n- Given-When-Then -- стандартная структура тестов даже без формального BDD\n- TDD применяется точечно для сложной бизнес-логики, алгоритмов, edge cases\n- Cucumber\u002FGherkin -- для acceptance-тестов с участием non-technical stakeholders\n\n> **На собеседовании:** интервьюер хочет услышать цикл Red-Green-Refactor для TDD и формат Given-When-Then для BDD. Частая ошибка -- сказать, что TDD это \"просто писать тесты\" без упоминания цикла, или спутать BDD с обычным тестированием.","","middle",[15],"testing",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что такое TDD и BDD? — Gymterview","TDD (Test-Driven Development) -- методология разработки, при которой тесты пишутся до кода. BDD (Behavior-Driven Development) -- расширение TDD с фокусом на пов","TDD (Test-Driven Development) -- методология разработки, при которой тесты пишутся до кода. BDD (Behavior-Driven Develop",[15,13],"TDD (Test-Driven Development) -- методология разработки, при которой тесты пишутся до кода. BDD (Behavior-Driven Development) -- расширение TDD с фокусом на поведение системы, описанное бизнес-языком в формате Given-When-Then.",true]