fbpx
bdd cucumber

Tìm hiểu công cụ kiểm thử tự động BDD Cucumber (Phần 2)

Click vào đây nếu như bạn đã bỏ lỡ phần 1. 

Tìm hiểu về ngôn ngữ Gherkin

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

Gherkin là 1 ngôn ngữ mà Cucumber đọc ngôn ngữ ấy chuyển thành test. Gherkin khá dễ hiểu, người đọc có thể hiểu kịch bản và hành động mà không cần biết chi tiết chúng được cài đặt như thế nào Gherkin thỏa mãn 2 mục đích

  • Cung cấp tư liệu
  • Test tự động

Có 2 quy tắc khi viết Gherkin:

  • Một file Gherkin chỉ mô tả cho một feature.
  • Source file Gherkin là .feature

Cú pháp của Gherkin

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

Feature: Google Searching
  As a web surfer, I want to search Google, so that I can learn new things about Software Testing.
  Scenario: Simple Google search
    Given a web browser is on the Google page
    When the search phrase "iTMS Coaching" is entered
    Then results for "iTMS coaching" are shown
    And the related results include "kiemthuphanmem.com"

Feature:
Ý nghĩa: Là một đoạn text mô tả ngắn gọn về chức năng thực hiện
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”

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

Given:
Ý nghĩa: Mô tả điều kiện tiên quyết để thực hiện 1 Scenario
When:
Ý nghĩa: Mô tả các hành động chính (Steps) mà người dùng thực hiện
Then:
Ý nghĩa: Mô tả kết quả đầu ra mong muốn của Scenario
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
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

@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

Một số lưu ý với file Gherkin

  • Một file chỉ mô tả một feature, không được nhiều hơn
  • Feature tốt nhất là được mô tả ngắn gọn, không rườm rà, nên mô tả phạm vi và chức năng trên một dòng duy nhất
  • Thống nhất format chuẩn: việc áp dụng một format chuẩn sẽ giúp những anh em sau tham gia vào dự án có thể dễ dàng hiểu được feature. 
Feature: [One line describing the story]
  Scenario: [One line describing the scenario]
    Given [context]
      And [some more context]…
     When [event]
     Then [outcome]

Tìm hiểu Step Definition

Cucumber không thể biết làm thế nào để thực thi được scenario.  Cần Step Definition để biên dịch nguyên văn các bước Gherkin thành các hành động để tương tác với hệ thống.
Khi Cucumber thực thi các Step trong Scenario nó sẽ tìm kiếm các Step Definition phù hợp để thực thi.
Một Step Definition là một phần nhỏ của code với một pattern đính kèm.
Pattern được sử dụng để liên kết các Step definition với tất cả các Step phù hợp, và code là cái mà Cucumber sẽ thực thi khi thấy Gherkin Step.

Để hiểu Step Definition làm việc như thế nào, xem ví dụ sau:

Scenario: Some cukes
  Given I have 48 cukes in my belly

“I have 48 cukes in my belly” là một phần của Step (text theo sau từ khóa Given) sẽ phù hợp với Step Definition dưới đây

Given('I have {int} cukes in my belly') do |cukes|
  puts "Cukes: #{cukes}"
end

Vậy là chúng ta đã nắm rõ các khái niệm về BDD Cucumber, Gherkin và cách thức hoạt động của Cucumber. Hôm sau chúng ta sẽ cùng nhau bắt đầu khởi tạo môi trường và thực chiến Automation Test cùng BDD Cucumber các bạn nhé. 

Nếu thấy bài viết hữu ích, hãy chia sẻ chúng để mọi người cùng nhận những gía trị hữu ích nhé các bạn. 

Related Articles

Responses