BDD là extension của TDD, tập trung vào behavior từ góc nhìn user/business thay vì implementation kỹ thuật.
- Given-When-Then — Given (ngữ cảnh/tiền điều kiện: 'Given a user with $100 in account'), When (hành động: 'When they transfer $50'), Then (kết quả mong đợi: 'Then the balance should be $50').
- Gherkin — scenario dạng human-readable trong file
.feature(Given/When/Then/And/But); Cucumber parse và map tới step definitions trong code. - Lợi ích — ngôn ngữ chung giữa dev, QA và business stakeholders; scenario là living documentation; người không technical có thể review và viết scenario.
- Trong Jest/Vitest — BDD style qua describe/it:
it('should deduct amount from sender balance when transfer succeeds')đọc như specification; có thể dùng naming Given-When-Then trong unit test mà không cần Cucumber. - Lưu ý — Cucumber.js thường overkill trừ khi business stakeholders thực sự viết scenario; BDD không chỉ là syntax — phải thực sự đưa business vào việc định nghĩa behavior, không chỉ bọc test có sẵn bằng Given/When/Then.