Bạn nói đúng. BDD không loại bỏ các vấn đề với sự mơ hồ ngôn ngữ - hoàn toàn không. Như những người khác đã chỉ ra, các đoạn được dịch cần phải được khớp bằng cách xác định đúng chúng, nhưng điều này cũng không giải quyết được vấn đề mơ hồ tiềm ẩn.
Bây giờ tại sao BDD thực sự có giá trị mặc dù không giải quyết vấn đề này? Có một số lý do và danh sách này chắc chắn không đầy đủ.
Sự mơ hồ chưa được giải quyết
Đây không phải là một lý do có lợi cho BDD cũng như chống lại nó. Nhưng khi bạn đối chiếu nó với các cách tiếp cận khác như câu chuyện hoặc yêu cầu của người dùng, thì tất cả các cách tiếp cận phát triển SW đều gặp phải sự mơ hồ về ngôn ngữ vì tất cả đều bắt đầu theo cách này hay cách khác với công thức ngôn ngữ tự nhiên.
Về mặt kỹ thuật, vấn đề mơ hồ ngôn ngữ đã được giải quyết bằng các ngôn ngữ nhân tạo như lojban , nhưng một lần nữa, khách hàng và nhà phát triển của bạn rất có thể sẽ không biết ngôn ngữ đó.
Ngôn ngữ phổ biến
BDD đi đôi với ý tưởng về một ngôn ngữ có mặt khắp nơi. Có thể chỉ định các kịch bản cùng với tất cả khách hàng, người thử nghiệm và nhà phát triển, chỉ mang lại cho BDD một lợi thế so với các phương pháp khác.
Xem xét một kỹ sư yêu cầu truyền thống viết ra tất cả các yêu cầu. Khi bạn là người kiểm tra hoặc khách hàng nhận được tài liệu 300 trang có đầy đủ các yêu cầu để xem xét, bạn sẽ gặp nhiều vấn đề cấp bách hơn thuật ngữ được sử dụng ở đó.
Câu chuyện của người dùng làm tốt hơn một chút trên mặt trận đó, vì họ cũng bao gồm tất cả các bên liên quan trong sáng tạo của họ. Về mặt ngôn ngữ phổ biến, tôi sẽ không nói rằng các câu chuyện của người dùng hoặc BDD là tốt hơn - mặc dù chúng khác nhau đáng kể ở điểm tiếp theo.
Khả năng kiểm tra
Một khía cạnh chính của BDD là thông số kỹ thuật của bạn thực sự có thể thực hiện được (thông qua Cucumber hoặc tương tự). Không có yêu cầu cũng như câu chuyện người dùng cung cấp tính năng này. Đối với cá nhân tôi, đó là điểm bán hàng chính của BDD.
Trái ngược với yêu cầu truyền thống - chúng tôi đã nói với các kỹ sư yêu cầu từ lâu rằng các yêu cầu của họ phải có thể kiểm tra được. Tuy nhiên, mọi dự án đều thấy một trường hợp ở đâu đó, những người kiểm tra trực tuyến nhận ra rằng họ không biết làm thế nào để kiểm tra một yêu cầu nhất định.
Câu chuyện của người dùng, nếu được thực hiện đúng, bao gồm những người thử nghiệm trong giai đoạn sáng tạo ban đầu của họ để đảm bảo điều đó. Thật không may, đây là một trường hợp lý thuyết đụng độ với thế giới thực, nơi tôi đã thấy rất nhiều câu chuyện mà chưa có người thử nghiệm nào nhìn thấy trước đây.
Mặt khác, BDD tự động cung cấp cho bạn một kịch bản thử nghiệm có thể thực hiện được. Không có lời bào chữa và không có cách nào khác (trừ khi bạn hoàn toàn bỏ qua các lớp tự động hóa và chỉ viết ra các kịch bản cho thơ ưa thích).
Tổng quát hơn, Test First là một nguyên tắc rất bổ ích trong tất cả các giai đoạn phát triển phần mềm và BDD là ứng dụng của nó cho lớp ngoài cùng của sự phát triển (so với TDD ở cấp độ đơn vị).
Tóm lược
Tóm lại, BDD không nâng bạn khỏi những vấn đề mơ hồ về ngôn ngữ tự nhiên. Tuy nhiên, nó giúp bạn giải quyết vấn đề đó thông qua hai điểm quan trọng: Tập trung vào một ngôn ngữ phổ biến để giảm sự mơ hồ (nó sẽ loại bỏ hoàn toàn chúng, nhưng nó giúp ích rất nhiều!) Và bằng cách buộc bạn phải viết thực thi thông số kỹ thuật. Điểm thứ hai là giúp giải quyết các vấn đề mơ hồ chủ yếu là vì đó là điểm mà sự mơ hồ bắt đầu hiển thị như các vấn đề khác.