fbpx
cucumber

Tìm hiểu công cụ kiểm thử tự động Cucumber

Tìm hiểu về Cucumber

cucumber

Cucumber là một tool hỗ trợ Behavior Driven Development (BDD), cho phép người dùng định nghĩa hành vi hệ thống thông qua cú pháp ngôn ngữ Gherkin. Cucumber hướng tới việc viết test “as cool as cucumber” mà bất kỳ ai cũng có thể hiểu cho dù họ không có chuyên môn kĩ thuật. Ví dụ như các nền tảng quen thuộc như Selenium thì thường chỉ người viết test hoặc có kĩ năng lập trình mới hiểu được những gì đang test, còn khách hàng hoặc các bên liên quan thì không đọc ngay code để hiểu mà họ cần hiểu qua tài liệu.

Cucumber framework được viết dựa trên ngôn ngữ lập trình Ruby. Trong bài viết này mình sẽ giới thiệu cho các bạn các phần như sau:

BDD hoạt động như thế nào trong Cucumber Automation?

Trong BDD, người dùng (Business Analysts – người phân tích nghiệp vụ, Product Owners – người sở hửu sản phẩm) sẽ viết kịch bản (Scenarios) hoặc Acceptance Test ( kiểm thử chấp nhận) mô tả hành vi của hệ thống từ quan điểm của khách hàng trước trong giai đoạn phát triển. Cucumber và BDD giải quyết hạn chế rất hay gặp trong các dự án phần mềm đó là mỗi người hiểu hệ thống một cách khác nhau.

cucumber

 

BDD có khả năng tạo ra các kịch bản test dựa trên góc nhìn của bên phát triển cũng như góc nhìn của bên khách hàng. Ngay từ ban đầu, các thành viên dự án sẽ thảo luận để tạo ra các kịch bản trước và sẽ cài đặt dựa trên kịch bản đó.

Tính năng chính của Cucumber là nó tập trung vào Acceptance testing. Nó giúp mọi người trong nhóm dễ dàng đọc và viết các bài test và cũng với tính năng này, nó sẽ giúp đưa Business User vào quy trình kiểm thử, giúp team hiểu rõ hơn về những nhu cầu của họ đối với phần mềm (làm rõ requirement). Dưới đây là một ví dụ viết test case của kịch bản kiểm thử màn hình login khi dùng BDD. Trong Cucumber BDD, bất cứ điều gì bạn viết đều phải thực hiện theo các bước Give-When-Then (mình sẽ giải thích ở mục sau).

cucumberGiới thiệu cơ bản Cucumber

Đối với mỗi dự án, Cucumber có một thư mục duy nhất trong thư mục gốc có tên “features“. Đây là nơi chứa tất cả các tính năng của Cucumber. Vậy “Feature File” là gì? 

Feature File là tệp chứa nội dung kịch bản của thử nghiệm, được viết bằng ngôn ngữ Gherkin và bao gồm các thành phần sau:

Feature: Mô tả tính năng sẽ được kiểm tra 

Scenario: Kịch bản mô tả các bước và kết quả mong đợi cho một trường hợp thử nghiệm cụ thể

Scenario Outline: Có thể thực hiện kịch bản cho nhiều tập dữ liệu (nhiều case kiểm thử). Dữ liệu được cung cấp theo cấu trúc dạng bảng được phân tách bằng dấu (I)

Given: Chỉ định ngữ cảnh của văn bản sẽ được thực thi. Bằng cách sử dụng các dữ liệu đã “cho trước”

When: Chỉ định hành động thử nghiệm được thực thi

Then: Kết quả của thử nghiệm

Ngoài ra trong thư mục “Feature File” sẽ có thư mục con là “step_definition” và “support directories”:

  • “Step Definition” định nghĩa ánh xạ các bước của trường hợp kiểm tra trong “Feature File” thành mã. Nó sẽ thực hiện các bước trên Ứng dụng đang thực nghiệm và kiểm tra kết quả so với kết quả mong đợi và để có thể định nghĩa được thực thi, nó phải khớp với các thành phần đã cho trong một tính năng (tức là nó phải khớp với cấu trúc phần Give-When-Then như mô tả hình dưới đây mình thực hiện viết test case cho trường hợp kiểm thử màn hình login).

cucumber

Và định nghĩa bước được xác định trong tệp ruby: “features/step_definitions/*_steps.rb”.

cucumber

  • “Support directories”: là file chứa các lệnh chung nằm trong folder support, ví dụ trong trường hợp có rất nhiều kịch bản kiểm thử cùng cần require thư viện selenium-webdriver hay đóng trình duyệt sau khi chạy xong thì bạn có thể cho hết các syntax đó vào file này (như hình dưới đây)

cucumber

Chú ý: “Feature File” nói chung và “login.feature” nói riêng nằm trong folder “feature” KHÔNG nằm trong folder “support”

Ưu điểm của Cucumber

  • Giúp cho các bên liên quan đến dự án (Stakeholders) có thể follow hoạt động test mà không cần kiến thức kĩ thuật chuyên môn
  • Cucumber tập trung vào trải nghiệm người dùng cuối
  • Style viết mã dễ bảo trì và thực hiện
  • Công cụ hiệu quả cho kiểm thử

So sánh Cucumber với các công cụ khác

Cucumber HP ALM (QTP) Selenium
Miễn phí Trả phí Miễn phí
Công cụ hỗ trợ Behaviour driven development BDD Công cụ hỗ trợ Functional Testing Công cụ hỗ trợ Functional and Performance Testing
Plugin hoạt động nhanh Plugin hoạt động chậm hơn Cucumber và Selenium Plugin hoạt động chậm hơn Cucumber
Hỗ trợ Java, Scala, Groovy Chỉ hỗ trợ VB script Hỗ trợ Java, .Net, Ruby
Developer, test viết script Chỉ tester viết test script Developer, test viết script
Chỉ support Web app Support ứng dụng Web, desktop, client server app Chỉ support web app

Cách cài đặt Cucumber

Dó có rất nhiều tài liệu đã hướng dẫn cách setup chi tiết nên ở đây mình sẽ không giới thiệu nữa, các bạn có thể tham khảo link https://www.guru99.com/cucumber-installation.html 

Nguồn: https://www.guru99.com/cucumber-tutorials.html

Kết Luận

Trên đây là những chia sẻ và nhận định chủ quan của mình về Cucumber, những kiến thức mình hiểu và thực hành được sau khóa học Automation Test Advance của ITMS Coaching https://itmscoaching.com/courses/itms-tester-advance/, hy vọng có thể giúp các bạn có cách tiếp cận nhanh và dễ hiểu nhất. Mình rất mong nhận được phản hồi và đóng góp của các bạn nhằm giúp sửa chữa những kiến thức mình còn khiếm khuyết. Xin chân thành cảm ơn!

Related Articles

Adhoc Testing

Adhoc Testing là gì? Thuật ngữ Adhoc testing là phương pháp kiểm thử dạng Black box test mà không theo cách thông thường. Với quy…

Responses