Phát triển theo hướng hành vi - SpecFlow

SpecFlow là một dự án mã nguồn mở. Mã nguồn được lưu trữ trên GitHub. Các tệp tính năng được SpecFlow sử dụng để lưu trữ tiêu chí chấp nhận cho các tính năng (ca sử dụng, câu chuyện người dùng) trong ứng dụng của bạn được xác định bằng cú pháp Gherkin.

Định dạng Gherkin được giới thiệu bởi Cucumber và cũng được sử dụng bởi các công cụ khác. Ngôn ngữ Gherkin được duy trì như một dự án trên GitHub -https://github.com/cucumber/gherkin

Phần tử tính năng và SpecFlow

Các tính năng chính của phần tử Tính năng là -

  • Phần tử tính năng cung cấp tiêu đề cho tệp tính năng. Phần tử tính năng bao gồm tên và mô tả cấp cao của tính năng tương ứng trong ứng dụng của bạn.

    • SpecFlow tạo ra một lớp kiểm tra đơn vị cho phần tử tính năng, với tên lớp bắt nguồn từ tên của tính năng.

    • SpecFlow tạo các bài kiểm tra đơn vị có thể thực thi từ các kịch bản đại diện cho các tiêu chí chấp nhận.

  • Tệp tính năng có thể chứa nhiều kịch bản được sử dụng để mô tả các thử nghiệm chấp nhận của tính năng.

    • Các kịch bản có một tên và có thể bao gồm nhiều bước kịch bản.

    • SpecFlow tạo ra một phương pháp kiểm tra đơn vị cho mỗi kịch bản, với tên phương thức bắt nguồn từ tên của kịch bản.

Nhiều bước kịch bản

Các kịch bản có thể có nhiều bước kịch bản. Có ba loại bước xác định các điều kiện tiên quyết, các hành động hoặc các bước xác minh, tạo nên kiểm tra chấp nhận.

  • Các loại bước khác nhau bắt đầu bằng Given, When hoặc là Then từ khóa tương ứng và các bước tiếp theo cùng loại có thể được liên kết bằng cách sử dụng AndBut từ khóa.

  • Cú pháp Gherkin cho phép bất kỳ sự kết hợp nào của ba loại bước này, nhưng một kịch bản thường có các khối riêng biệt của Given, WhenThen các câu lệnh.

  • Các bước tình huống được xác định bằng cách sử dụng văn bản và có thể có bảng bổ sung được gọi là DataTable hoặc văn bản nhiều dòng được gọi là đối số DocString.

  • Các bước kịch bản là cách chính để thực thi bất kỳ mã tùy chỉnh nào nhằm tự động hóa ứng dụng.

  • SpecFlow tạo một lệnh gọi bên trong phương pháp kiểm tra đơn vị cho mỗi bước kịch bản. Cuộc gọi được thực hiện bởi thời gian chạy SpecFlow sẽ thực hiện định nghĩa bước khớp với bước kịch bản.

  • Việc đối sánh được thực hiện trong thời gian chạy, do đó, các bài kiểm tra đã tạo có thể được biên dịch và thực thi ngay cả khi ràng buộc chưa được thực hiện.

  • Bạn có thể bao gồm các bảng và đối số nhiều dòng trong các bước kịch bản. Chúng được sử dụng bởi các định nghĩa bước và được chuyển dưới dạng đối số bảng hoặc chuỗi bổ sung.

Thẻ

Thẻ là các điểm đánh dấu có thể được gán cho các tính năng và kịch bản. Việc gán thẻ cho một tính năng tương đương với việc gán thẻ cho tất cả các trường hợp trong tệp tính năng. Tên thẻ với thẻ biểu thị @ đứng đầu.

  • Nếu được hỗ trợ bởi khung kiểm tra đơn vị, SpecFlow tạo danh mục từ các thẻ.

  • Tên danh mục đã tạo giống với tên thẻ, nhưng không có @ ở đầu.

  • Bạn có thể lọc và nhóm các bài kiểm tra sẽ được thực hiện bằng cách sử dụng các danh mục kiểm tra đơn vị này. Ví dụ: bạn có thể gắn thẻ các bài kiểm tra quan trọng bằng @important, sau đó thực hiện các bài kiểm tra này thường xuyên hơn.

Yếu tố nền

Yếu tố ngôn ngữ nền cho phép chỉ định điều kiện tiên quyết chung cho tất cả các tình huống trong một tệp tính năng

  • Phần nền của tệp có thể chứa một hoặc nhiều bước kịch bản được thực thi trước bất kỳ bước nào khác của kịch bản.

  • SpecFlow tạo ra một phương thức từ các phần tử nền được gọi từ tất cả các bài kiểm tra đơn vị được tạo cho các kịch bản.

Phác thảo kịch bản

Các phác thảo kịch bản có thể được sử dụng để xác định các thử nghiệm chấp nhận theo hướng dữ liệu. Đề cương kịch bản luôn bao gồm đặc tả mẫu kịch bản (kịch bản có phần giữ chỗ dữ liệu sử dụng cú pháp <placeholder>) và một tập hợp các ví dụ cung cấp giá trị cho phần giữ chỗ

  • Nếu khung kiểm tra đơn vị hỗ trợ nó, SpecFlow tạo các kiểm tra dựa trên hàng từ các phác thảo kịch bản.

  • Nếu không, nó tạo ra một phương pháp logic kiểm tra đơn vị được tham số hóa cho một phác thảo kịch bản và một phương pháp kiểm tra đơn vị riêng lẻ cho từng bộ ví dụ.

  • Để truy xuất nguồn gốc tốt hơn, các tên phương pháp kiểm tra đơn vị được tạo ra được lấy từ tiêu đề phác thảo kịch bản và giá trị đầu tiên của các ví dụ (cột đầu tiên của bảng ví dụ).

  • Do đó, bạn nên chọn một tham số mô tả và duy nhất làm cột đầu tiên trong tập hợp ví dụ.

  • Vì cú pháp Gherkin yêu cầu tất cả các cột ví dụ phải có chỗ dành sẵn phù hợp trong phác thảo kịch bản, bạn thậm chí có thể giới thiệu một cột tùy ý trong các tập hợp ví dụ được sử dụng để đặt tên cho các bài kiểm tra dễ đọc hơn.

  • SpecFlow thực hiện thay thế trình giữ chỗ như một giai đoạn riêng biệt trước khi khớp với các ràng buộc bước.

  • Do đó, việc thực hiện và các tham số trong ràng buộc bước không phụ thuộc vào việc chúng được thực thi thông qua một kịch bản trực tiếp hay một phác thảo kịch bản.

  • Điều này cho phép bạn sau đó chỉ định các ví dụ khác trong các bài kiểm tra chấp nhận mà không cần thay đổi các ràng buộc của bước.

Bình luận

Bạn có thể thêm các dòng nhận xét vào tệp tính năng ở bất kỳ đâu bằng cách bắt đầu dòng bằng #. Tuy nhiên, hãy cẩn thận, vì các nhận xét trong đặc tả của bạn có thể là một dấu hiệu cho thấy tiêu chí chấp nhận đã được chỉ định sai. SpecFlow bỏ qua các dòng bình luận.