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

Gherkin là một ngôn ngữ, được sử dụng để viết Features, Scenarios, and Steps. Mục đích của Gherkin là giúp chúng tôi viết các yêu cầu cụ thể.

Để hiểu ý chúng tôi về các yêu cầu cụ thể, hãy xem xét ví dụ sau:

Khách hàng nên được tránh nhập các chi tiết thẻ tín dụng không hợp lệ.

Đấu với

Nếu khách hàng nhập số thẻ tín dụng không dài chính xác 16 chữ số, khi họ cố gắng gửi biểu mẫu, nó sẽ hiển thị lại với thông báo lỗi cho họ biết số chữ số chính xác.

Sau này không có sự mơ hồ và tránh được lỗi và dễ kiểm tra hơn nhiều.

Gherkin được thiết kế để tạo ra các yêu cầu cụ thể hơn. Trong Gherkin, ví dụ trên trông giống như:

Feature

Phản hồi khi nhập chi tiết thẻ tín dụng không hợp lệ Feature Definition

Trong quá trình kiểm tra người dùng, chúng tôi đã thấy nhiều người mắc lỗi Tài liệu

Background True for all Scenarios Below

Given Tôi đã chọn một mặt hàng để mua,

And Tôi sắp nhập số thẻ tín dụng của mình

Scenario - Số thẻ tín dụng quá ngắnScenario Definition

When Tôi nhập một số thẻ dài dưới 16 chữ số

And tất cả các chi tiết khác đều đúng

And Tôi gửi biểu mẫuSteps

Then biểu mẫu nên được hiển thị lại

And Tôi sẽ thấy một thông báo cho tôi biết số chữ số chính xác

Định dạng và cú pháp Gherkin

Tệp Gherkin là Tệp văn bản thuần túy và có phần mở rộng là .feature. Mỗi dòng không trống phải bắt đầu bằng từ khóa Gherkin, theo sau là bất kỳ văn bản nào bạn thích. Các từ khóa là -

  • Feature

  • Scenario

  • Đưa ra, Khi nào, Sau đó, Và Nhưng (Các bước)

  • Background

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

  • Examples

  • "" "(Chuỗi tài liệu)

  • | (Bảng dữ liệu)

  • @ (Thẻ)

  • # (Bình luận)

  • *

Đặc tính

Các Featuretừ khóa được sử dụng để mô tả một tính năng phần mềm và để nhóm các tình huống liên quan. Tính năng có ba yếu tố cơ bản:

  • Từ khóa - Tính năng.

  • Tên của đối tượng địa lý, được cung cấp trên cùng dòng với từ khóa Đối tượng địa lý.

  • Mô tả tùy chọn (nhưng rất được khuyến khích) có thể kéo dài nhiều dòng, tức là tất cả văn bản giữa dòng chứa từ khóa Tính năng và một dòng bắt đầu bằng Kịch bản, Bối cảnh hoặc Đường viền tình huống.

Ngoài tên và mô tả, Tính năng còn chứa danh sách các tình huống hoặc phác thảo kịch bản và nền tùy chọn.

Thông thường đặt tên cho một .featurebằng cách lấy tên của Đối tượng, chuyển nó thành chữ thường và thay thế khoảng trắng bằng gạch dưới. Ví dụ,

feedback_when_entering_invalid_credit_card_details.feature

Để xác định các Tính năng trong hệ thống của bạn, bạn có thể sử dụng cái được gọi là “mẫu tiêm tính năng”.

Để <đáp ứng một số mục tiêu> với tư cách là <loại người dùng>, tôi muốn có <a feature>

Mô tả

Một số phần của tài liệu Gherkin không phải bắt đầu bằng từ khóa.

Trong các dòng theo sau Tính năng, kịch bản, phác thảo kịch bản hoặc ví dụ, bạn có thể viết bất kỳ thứ gì bạn thích, miễn là không có dòng nào bắt đầu bằng từ khóa. Đây là cách để bao gồm Mô tả.

Tình huống

Để thể hiện hành vi của hệ thống, bạn đính kèm một hoặc nhiều kịch bản với mỗi Tính năng. Thông thường, bạn có thể xem 5 đến 20 kịch bản cho mỗi Tính năng để chỉ định hoàn toàn tất cả các hành vi xung quanh Tính năng đó.

Các kịch bản tuân theo mô hình sau:

  • Mô tả bối cảnh ban đầu

  • Mô tả một sự kiện

  • Mô tả một kết quả mong đợi

Chúng tôi bắt đầu với một ngữ cảnh, mô tả một hành động và kiểm tra kết quả. Điều này được thực hiện với các bước. Gherkin cung cấp ba từ khóa để mô tả từng bối cảnh, hành động và kết quả dưới dạng các bước.

  • Given - Thiết lập bối cảnh

  • When - Thực hiện hành động

  • Then - Kiểm tra kết quả

Những từ khóa này cung cấp khả năng đọc của kịch bản.

Example

Scenario - Rút tiền từ tài khoản.

  • Given Tôi có 100 đô la trong tài khoản của mình.

  • When Tôi yêu cầu $ 20.

  • Then $ 20 nên được phân phát.

Nếu có nhiều Given hoặc là When các bước bên dưới nhau, bạn có thể sử dụng And hoặc là But. Chúng cho phép bạn chỉ định các tình huống một cách chi tiết.

Example

Scenario - Nỗ lực rút tiền bằng thẻ bị đánh cắp.

  • Given Tôi có 100 đô la trong tài khoản của mình.

  • But thẻ của tôi không hợp lệ.

  • When Tôi yêu cầu $ 50.

  • Then thẻ của tôi không nên được trả lại.

  • And Tôi nên được yêu cầu liên hệ với ngân hàng.

Trong khi tạo kịch bản, hãy nhớ 'mỗi kịch bản phải có ý nghĩa và có thể được thực hiện độc lập với bất kỳ kịch bản nào khác' '. Điều này có nghĩa là -

  • Bạn không thể có điều kiện thành công của một kịch bản phụ thuộc vào thực tế là một số kịch bản khác đã được thực hiện trước nó.

  • Mỗi kịch bản tạo bối cảnh cụ thể của nó, thực thi một thứ và kiểm tra kết quả.

Những tình huống như vậy mang lại những lợi ích sau:

  • Các bài kiểm tra sẽ đơn giản và dễ hiểu hơn.

  • Bạn chỉ có thể chạy một tập hợp con các kịch bản của mình và bạn không phải lo lắng về việc tập hợp thử nghiệm của mình bị phá vỡ.

  • Tùy thuộc vào hệ thống của bạn, bạn có thể chạy các bài kiểm tra song song, giảm lượng thời gian thực hiện tất cả các bài kiểm tra của bạn.

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

Nếu bạn phải viết các kịch bản với nhiều đầu vào hoặc đầu ra, bạn có thể tạo ra một số kịch bản chỉ khác nhau về giá trị của chúng. Giải pháp là sử dụng phác thảo kịch bản. Để viết một dàn ý kịch bản,

  • Các biến trong các bước phác thảo kịch bản được đánh dấu bằng dấu <và>.

  • Các giá trị khác nhau cho các biến được đưa ra dưới dạng ví dụ trong bảng.

Example

Giả sử bạn đang viết Tính năng để cộng hai số trên máy tính.

Feature - Thêm.

Scenario Outline: Add two numbers.
Given the input "<input>"
When the calculator is run
Then the output should be <output>"
Examples
| input    | output |
| 2+2      | 4      | 
| 98+1     | 99     |
| 255+390  | 645    |

Phần phác thảo kịch bản luôn được theo sau bởi một hoặc nhiều phần ví dụ, là phần chứa cho một bảng. Bảng phải có hàng tiêu đề tương ứng với các biến trong các bước phác thảo kịch bản. Mỗi hàng bên dưới sẽ tạo một kịch bản mới, điền vào các giá trị biến