TDD và BDD khác nhau thế nào?
Trả lời ngắnTDD viết test trước cho chính người code. BDD viết kịch bản trước cho cả đội cùng hiểu giống nhau — dev, tester và người làm nghiệp vụ.
Bảng so sánh
| TDD | BDD | |
|---|---|---|
| Viết cho ai đọc | Người viết code | Cả đội, kể cả người không kỹ thuật |
| Ngôn ngữ | Code | Tiếng Việt/Anh thường, dạng Given–When–Then |
| Tầng | Hàm, lớp | Hành vi người dùng |
| Ai tham gia viết | Chủ yếu dev | Dev + BA + tester cùng ngồi |
| Chi phí | Thấp, bắt đầu ngay được | Cao — mỗi dòng cần một đoạn code đứng sau |
💡 Cách nhớ
TDD là kỷ luật cá nhân. BDD là công cụ giao tiếp. Nếu chỉ có một người đọc thứ bạn viết ra thì bạn đang làm TDD, dù có gõ chữ Given–When–Then.Chọn cái nào?
- Nếu Muốn code chặt hơn, ít bug hơn→ TDD
- Nếu Dev và BA hay hiểu lệch nhau về yêu cầu→ BDD — nhưng phải có BA chịu ngồi viết cùng
- Nếu Chỉ tester viết rồi tự đọc→ Đừng làm BDD, viết ca test thường là đủ
⚠ Bẫy thường gặp
Phần lớn dự án BDD thất bại vì giữ lại phần hình thức và bỏ mất phần trò chuyện. Nếu người làm nghiệp vụ không thật sự ngồi viết cùng, bạn chỉ vừa thêm một lớp cú pháp mà không ai ngoài tester đọc — tốn công gấp đôi, được lợi bằng không.
Câu hỏi hay gặp
- BDD có phải là Cucumber không?
- Không. Cucumber chỉ là một công cụ chạy kịch bản Gherkin. BDD là cách làm việc, có thể làm mà không dùng công cụ nào.
- Có thể làm cả hai cùng lúc không?
- Có, và nhiều đội làm vậy. BDD ở tầng hành vi để thống nhất yêu cầu, TDD ở tầng code khi dev bắt tay viết.