Home » BDD » Kiểm thử tự động sử dụng BDD

Kiểm thử tự động sử dụng BDD

BDD-cross-platform-Framework

1. BDD là gì?

BDD (Behavior Driven Development) là một quá trình phát triển phần mềm dựa trên phương pháp Agile(phát triển phần mềm linh hoạt).

BDD là sự mở rộng của TDD (Test driven development). Thay vì tập trung vào phát triển phần mềm theo hướng kiểm thử, BDD tập trung vào phát triển phần mềm theo hướng hành vi.

Dựa vào requirement các kịch bản test (Scenarios) sẽ được viết trước dưới dạng ngôn ngữ tự nhiên và dễ hiểu nhất sau đó mới thực hiện cài đặt source code đễ pass qua tất cả các stories đó.

Những kịch bản test này được viết dưới dạng các feature file và đòi hỏi sự cộng tác từ tất cả các thành viên tham gia dự án hay stakeholder.

2. Những lợi ích khi sử dụng BDD

– Giúp xác định đúng yêu cầu của khách hàng: tài liệu được viết dưới dạng ngôn ngữ tự nhiên, bất kỳ đối tượng nào cũng có thể hiểu được. Khi đọc tài liệu này, khách hàng có thể dễ dàng nhận biết được lập trình viên có hiểu đúng yêu cầu của họ không và có phản hồi kịp thời.

– Là tài liệu sống của dự án: tài liệu này luôn được cập nhật khi có bất kỳ sự thay đổi nào nên tất cả các thành viên sẽ không bị miss thông tin khi phát triển hệ thống

– Nâng cao chất lượng phần mềm, tạo ra sản phẩm hữu ích: vì phát triển phần mềm theo hướng hành vi nên có thể focus vào việc tạo ra sản phẩm đúng với yêu cầu của khách hàng nhưng vẫn hữu ích cho người dùng.

3. Ai sẽ là người viết BDD?

Như đã đề cập ở trên, BDD đề cao sự cộng tác giữa các thành viên trong dự án cũng như các bên liên quan. Vì vậy, tất cả những người này sẽ xây dựng nên file BDD để đưa ra một cái nhìn chung nhất, chính xác nhất về yêu cầu của dự án.

4. Viết BDD như thế nào?

BDD được viết dưới dạng plain text language gọi là Gherkin.

(*) Các quy tắc khi viết Gherkin:

– File lưu dưới dạng extension là .feature

– Mỗi một file .feature thường gồm một chức năng duy nhất

– Một chức năng bao gồm nhiều kịch bản khác nhau với danh sách các bước

(**) Cú pháp của Gherkin

Một file feature bằng Gherkin được trình bày dưới dạng như sau:

Các bạn có tham khảo các từ khóa cơ bản và ý nghĩa của chúng dưới đây:

  • Feature:
    • Ý nghĩa: Là một đoạn text mô tả ngắn gọn về chức năng thực hiện
    • Ví dụ:

  • Background:
    • Ý nghĩa:
      • Cho phép thêm một số ngữ cảnh cho tất cả các Scenario trong feature
      • Có chứa một số bước được chạy trước mỗi Scenario
      • Có thể hiểu đơn giản giống như điều kiện tiên quyết để thực hiện tất cả các Scenario trong feature
      • Được khai báo sau từ khóa “Feature”
    • Ví dụ:

  • Scenario:
    • Ý nghĩa:
      • Từ khóa bắt đầu trước mỗi kịch bản, tiếp theo là tiêu đề của kịch bản sẽ thực hiện
      • Mỗi kịch bản bao gồm một hoặc nhiều bước
    • Ví dụ:

       

  • Given:
    • Ý nghĩa: Mô tả điều kiện tiên quyết để thực hiện 1 Scenario
    • Ví dụ:

  • When:
    • Ý nghĩa: Mô tả các hành động chính (Steps) mà người dùng thực hiện
    • Ví dụ:

  • Then:
    • Mô tả: Mô tả kết quả đầu ra mong muốn của Scenario
    • Ví dụ:

  • And/ But:
    • Ý nghĩa: Thay thế cho các từ khóa Given/ When/ Then để làm cho chương trình mạch lạc hơn
    • Ví dụ:

      Đoạn mã trên có được thay thế như sau:

  • Scenario Outlines:

    Examples:

    • Ý nghĩa:
      • Scenario Outlines để gom nhóm các kịch bản có chung các Steps nhưng có nhiều input và output
      • Examples để thực hiện khai báo các giá trị cho các biến trong Scenario Outlines
    • Ví dụ:

      Đoạn code trên có thể được thay thế như sau:

  • @tag:
    • Ý nghĩa: Sử dụng @tag để tổ chức, sắp xếp các tính năng và kịch bản
    • Ví dụ:

5. Tài liệu tham khảo

https://en.wikipedia.org/wiki/

http://www.guru99.com

http://www.testingvn.com/

https://github.com/



Các bạn có thể sử dụng rất nhiều công cụ hay automation framework khác nhau để thực hiện automation test nhưng hãy một lần thử trải nghiệm automation test sử dụng BDD nhé!

Để bắt đầu từ những bước đầu tiên các bạn có thể tham khảo video hướng dẫn trong bài viết “Serenity BDD – Sự lựa chọn hoàn hảo cho kiểm thử tự động”.

Bài viết ghi lại những hiểu biết còn khá cơ bản của người viết trong quá trình tìm hiểu về BDD. Rất mong được sự góp ý từ tất cả các bạn!

(sưu tầm và biên soạn)