Open Jacobvu84 opened 3 years ago
Như đã nói ở trên, cách tốt nhất để hiểu được yêu cầu của người dùng là chúng ta hãy bắt đầu bằng một cuộc trao đổi cụ thể.
Và cách tốt nhất để bắt đầu cuộc trao đổi về một tính năng nào đó. Chúng ta nên bắt đầu bằng câu hỏi
Bạn có thể đưa cho tôi một ví dụ về vấn đề này ?
Đây là điểm bắt đầu cho buổi trao đổi theo hướng áp dụng BDD process.
Để kích thích tiêu thụ của khách hàng. Chúng ta cần một chương trình khuyến mại. ( requirement )
Lúc này mọi thứ vẫn còn khá trừu tượng và ở dạng high level. Nó giống với feature hoặc user story hơn là các tính năng cụ thể. sau khi break down the requirement. Bởi vậy khi áp dụng BDD chúng ta cần lấy thêm các thông tin cụ thể và chi tiết hơn nữa để minh họa cho việc user sử dụng một TÍNH NĂNG RÕ RÀNG nào đó (particular feature) để họ có thể đạt được mong muốn của mình.
Chúng ta cần khám phá chi tiết không nên lướt sóng trên bề mặt.
User Story: Đổi quà từ việc tích lũy điểm từ chương trình mua sắm
B.A: Sẽ bắt đầu, Người mua có thể yêu cầu tích điểm cho bất cứ giao dich phát sinh nào
Dev: Bạn có thể đưa cho tôi một ví dụ về vấn đề này ?
Đây là giai đoạn để khám phá.
Trước khi BA đưa ra một example hoặc counterexample. Chúng ta cần xem xét một số khía cạnh nên có ở một example.
Chương trình tích điểm | Input | Rule | Outcome |
---|---|---|---|
Capuchino | Cafe | 2 | |
Bia Hanoi | Đồ có cồn | 10 | |
Chuối | Trái cây | 5 | |
Olong | Chè | 5 |
Điều quan trọng của việc dùng kỹ thuật này là chỉ chứa các thông tin phục vụ cho việc phân tích nghiệp vụ. Không đưa các thông tin không liên quan gây nhiễu cho người đọc ví dụ như giá từng sản phầm trong phần Input
Từ đây ta có thể đưa ra các example
Scenario: Tích điểm khi mua sắm
Given bảng điểm được tích lũy cho mỗi loại mặt hàng hóa
| Tên hàng hóa | Danh mục | Điểm tích lũy |
| Capuchino | Cafe | 2 |
| Bia Hanoi | Đồ có cồn | 10 |
| Chuối | Trái cây | 5 |
When anh ấy mua 10 lon bia
Then anh ấy tích được 90 điểm
Điều quan trọng của các kịch bản này là phải có khả năng automate được ( executable specifications)
Phần thực hành automate có thể sử dụng cucumber, serenity....
Đây là kỹ thuật phổ thông nhất khi áp dụng BDD
Trong kỹ thuật này chúng ta có những conversation về business rule, sau đó giải nghĩa những rule này bằng những ví dụ cụ thể. Các vị dụ có bao gồm các những counterexample.
Trong quá trình thảo luận về một example hay một counterexample nào đó có thể nó dẫn ta tới việc KHÁM PHÁ ra được NEW RULES hoặc có thể khai quật những điều ta chưa biết. Cuối cùng là sẽ sử dụng các example này để viết các Scenario cơ bản.
Đây là lý do vì sao bạn mua giấy note nhiều màu. Mỗi mầu sẽ biểu diện một loại Rule, Example, Outcome... trên Bảng mà chúng ta hay dùng daily meeting. Vẽ cái Task Board và di chuyển các màu của tờ nốt theo cột trong Kaban / Scrum board
Kỹ thuật này khá giống với Example Mapping nhưng break nhỏ cái Example thành Step và Outcomes.
Mỗi một step có thể đưa ta đến nhiều outcome khác nhau hoặc các business rule mà ta chưa biết. Mỗi outcome là nơi chúng ta sẽ hỏi bản thân chúng ta xem điều gì sẽ nên xảy ra. Có đúng với phỏng đoán của chúng ta hay không.
Tham khảo
In order to avoid the sort of misunderstanding, I would like to apply BDD that helps us communicate earlier and better.
Để thực hành với BDD, Team nên bắt đầu bằng một cuộc trao đổi (conversation) một VẤN ĐỀ CỤ THỂ về cách mà người dùng sẽ sử dụng hệ thống và điều gì họ MONG MUỐN đạt được.
Tất cả đều này nhằm để xây dựng sự hiểu biết chung về vấn đề mà họ cố gắng giải quyết, nghiệp vu kinh doanh (business rule) nào là quan trọng với họ và tính năng nào có thể giúp họ đạt được mục tiêu mong muốn.
Để không bị coi là chém gió. Chúng ta hãy bắt đầu bằng ví dụ
Phương Phương là chủ hiệu tạp hóa, Cô ấy muốn các khách hàng thân thiết của mình mua hàng nhiều hơn để thúc đẩy việc kinh doanh của cửa hiệu.
Như vậy mong muốn của cửa tiệm là tăng doanh thu (Goals) thông qua việc bán được thêm hàng cho khách quen.