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