Коротка відповідь
seniorTDD — це підхід, коли тест пишеться перед реалізацією функціоналу. BDD розширює TDD, фокусуючись на поведінці через сценарії користувача. `test('adds two numbers', () => { expect(add(1,2)).toBe(3); });`
Повне пояснення
Що це і навіщо TDD (Test‑Driven Development) – метод розробки, де тест створюється до коду. BDD (Behavior‑Driven Development) – розширення TDD, що описує поведінку через сценарії користувача.
Ключові принципи
- Red‑Green‑Refactor: спочатку тест падає (red), потім код проходить (green), після чого рефакторинг.
- Покриття: тест охоплює всі граничні випадки і помилки.
- Документація: тест сам по собі описує вимоги.
Як це працює
- Написати тест, що описує бажану поведінку.
- Запустити тест – він падає.
- Реалізувати мінімальний код, щоб пройти тест.
- Перевірити, що всі тести проходять.
- Рефакторинг коду без зміни поведінки.
Практика і реалізація (JavaScript/TypeScript)
// BDD‑сценарій з Jest
describe('User login', () => {
it('should authenticate valid credentials', async () => {
const res = await login({email: 'a@b.com', pwd: '123'});
expect(res.success).toBe(true);
});
});
Тестування
- Unit: Jest, Vitest.
- Integration: Supertest для API.
- E2E: Playwright, Cypress.
Безпека і приватність Тести перевіряють, що паролі не зберігаються у відкритому вигляді і що API відповідає на CSRF‑запити.
Оптимізація і типові помилки
- Перевантаження тестів: фокус на критичних шляхах.
- Залежність від зовнішніх сервісів: використання моків.
Часті помилки
- Тест не охоплює граничних значень.
- Тест залежить від порядку виконання.
- Неправильне використання моків, що призводить до «зелених» тестів.
Cheatsheet
- TDD: test → code → refactor.
- BDD: scenario → step → outcome.
Follow‑up питання
- Як впровадити TDD у великий проект?
- Які інструменти найкраще підходять для BDD у Node.js?