Jacobvu84 / software-craftsmanship

2 stars 1 forks source link

BDD sẽ làm việc như thế nào ? #2

Open Jacobvu84 opened 3 years ago

Jacobvu84 commented 3 years ago

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.

Jacobvu84 commented 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.

Jacobvu84 commented 3 years ago

Để 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.

Jacobvu84 commented 3 years ago

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.

Screenshot from 2021-04-23 00-55-43

  1. Example giúp nhận diện và minh họa được nghiệp vụ hay nguyên tắc kinh doanh
  2. Example là mở để mọi người có thể đặt câu hỏi.
  3. Example nên tập trung vào WHAT thay vì chú ý để HOW: Nó giúp chúng ta tập trung vào yêu cầu kinh doanh cốt lõi thay vì nghĩ tới UI.
  4. Example khiến chúng ta nghĩ nhiều hơn về mục tiêu và kết quả ( goals - outcome)
Jacobvu84 commented 3 years ago

Kỹ thuật thực hành khám phá yêu cầu để có các Concrete Example

Kỹ Thuật 1: Sử dụng bảng

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....

Jacobvu84 commented 3 years ago

Kỹ Thuật 2: Example Mapping

Đâ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.

Screenshot from 2021-04-23 04-18-39

Đâ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

Jacobvu84 commented 3 years ago

Kỹ Thuật 3: Feature Mapping

Kỹ thuật này khá giống với Example Mapping nhưng break nhỏ cái Example thành Step và Outcomes.

Screenshot from 2021-04-21 14-11-32

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.

Jacobvu84 commented 3 years ago

Tham khảo