Áp dụng BDD cho dự án Agile (phần 2)

Sáng sớm ngủ dậy làm tiếp bài viết về cái BDD nào like-icons-png-7

Như bài viết trước thì mình đã giới thiệu tổng quan cho 500 anh em thế nào là BDD, tác dụng của BDD còn nay thì sẽ tiếp tục nói về cách áp dụng BDD nhé :3 Tool sử dụng đó là quả dưa chuột (Cucumber)3d7ba8b424fa24b4eb40db4ef7f81e1a

Chúng ta sẽ sử dụng quả dưa chuột để phát triển theo hướng hành vi (nghe nó cứ bậy bậy ấy nhỉ :v ). Loại dưa chuột để dùng cho các chị em tester sẽ giống như bên dưới :)) Đến đoạn này chắc các chị em thích lắm đây :3.

opopgug

Quả dưa chuột (Cucumber) là gì

Thôi đùa thế thôi 😀 Công cụ của chúng ta sẽ là Cucumber.Thằng này trước được viết cho Ruby bây giờ thì có cả cho Java. Anh em thích dùng ngôn ngữ nào thì tùy nhé :3

cucumber

Giải thích ngắn gọn thì:

Cucumber là một công cụ kiểm thử tự động dựa trên việc thực thi các functions được mô tả dướng dạng plain-text, mục đích là để các anh dev lẫn các chị test có thể áp dụng BDD

Sau khi nghe giải thích có khi khối anh/chị em, họ hàng nội ngoại vẫn chưa hiểu được ấy nhỉ? Đại loại là thay vì cắm đầu vào viết code thì chúng ta sẽ viết các kịch bản test unit (scenarios) để thể hiện nghiệp vụ, sau đó mới viết code  để pass qua tất cả các stories đó như giới thiệu ở bài trước

mr_290799_8075bf72c5187650

Ngôn ngữ sử dụng trong Cucumber đó là Gherkin (cũng là dưa chuột :v ). Anh em có thể coi Cucumber là 1 chủng tộc thì Gherkin như kiểu ngôn ngữ chung để bọn nó giao tiếp với nhau ấy mà.

article-2375753-1af38f30000005dc-930_634x415

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 vì viết Gherkin thì như viết văn. (anh/em nào văn dốt thì viết vẫn khó hiểu nhé :v ). Khi viết Gherkin, chúng ta sẽ lên đỉnh được tận 2 lần vì vừa có thể cung cấp tài liệu cho dự án lẫn tiến hành automation test

Học tiếng Dưa chuột (Gherkin)

Trong thế giới dưa chuột, thì chúng ta muốn giao tiếp với chúng thì phải học tiếng Dưa chuột đúng không? Mà muốn học thì đầu tiên là học ngữ pháp để sử dụng nhé. Mỗi thứ tiếng đều có quy định riêng ấy mà. Hai cái đầu tiên trước khi nhập môn đó là

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

Trong file feature thì ta sẽ quy định các scenario và steps để thực thi các đoạn nói chuyện của bọn dưa chuột.  Khi chạy file source “.feature” mỗi step sẽ match với một đoạn code thực thi được định nghĩa sẵn trước đó gọi là “Step Definitions”.

stock-vector-cute-funny-cartoon-cucumber-and-tomato-are-going-to-hug-smiling-vegetable-characters-vector-245443243

Ví dụ đây là 1 file feature

Feature: Tính năng in hóa đơn của một cửa hàng
In order to in một hóa đơn
As một người mua hàng
I want to nhận 1 cái hóa đơn

Background:
Given: Anh dưa chuột cầm 100.000 VNĐ

Scenario: Một anh dưa chuột đi mua coca và bánh mì
Given : Anh dưa chuột đang ở BigC
When : Anh mua chai cocacocla giá 20.000 VNĐ
And : Anh mua bánh mì 30.000 VNĐ
And : Anh mua thêm mấy cái cốc nhựa 10.000 VNĐ
Then : Anh dưa chuột sẽ nhận hóa đơn trị giá 60.000 VNĐ

Scenario: Một anh dưa chuột chỉ mua bánh mì
Given : Anh dưa chuột đang ở BigC
When : Anh mua chai cocacocla giá 20.000 VNĐ
And : Anh mua bánh mì 30.000 VNĐ
And : Anh không lấy chai cocacocla nữa
Then : Anh dưa chuột sẽ nhận hóa đơn trị giá 30.000 VNĐ

Các từ khóa chính trong Gherkin đó là Feature, Background, Given, When, Then, Anh, Scenario, Examples. Mấy từ này chắc khỏi dịch nhỉ. Đơn giản với 500 anh em mà 😦

Đầu tiên thì là cái thằng Feature dùng để mô tả cái tính năng chúng ta sẽ test. Trong Feature thì có thể có nhiều sceanrio. Mỗi một scenario thì chúng ta lại bắt đầu bằng 1 dòng mới.

Trong feature thì bọn dưa chuột hay dùng format Connextra để miêu tả rõ ràng cái tính năng của bọn nó. Có 2 kiểu thường dùng như dưới

As a [stakeholder], I want [feature] so that [benefit].

In order to [benefit], a [stakeholder] wants to [feature].

Mình mô tả chức năng là 1 anh dưa chuột đi tìm bạn gái trên 1 trang web chẳng hạn

Feature: tính năng tìm kiếm của trang web

As a quả dưa chuột

I want to tìm kiếm bạn nữ dưa chuột

In order to abc, xyz…

Mỗi scenario thì lại gồm nhiều steps.

step-up-3d-2010-cd-cover-45534

Các steps được bắt đầu bằng Given, When, Then. Bọn dưa chuột (cucumber), chúng nó không phân biệt gì 3 cái này cả nên có thể sử dụng loạn xạ cũng được tuy nhiên anh em ta không nên thế nhé. Dùng phải đúng mục đích không lại thành kiểu tiếng Anh bồi. Nghe thì vẫn hiểu mà viết ra thì sai be bét ý nghĩa:))

  • Given: mô tả trạng thái ban đầu của hệ thống, anh dưa chuột đang ở đâu. Ví dụ anh dưa chuột truy cập vào trang cucumberhub.com (địa chỉ chỉ mang tính minh họa. 500 anh em không cần thử :3 cần thì vào trang hub khác )

11275855-emoticon-hiding-his-smile-stock-vector-smiley-face-cartoon

Given: Anh dưa chuột mở trình duyệt và truy cập vào cucumberhub.com

    • When: mô tả các bước hay các hành vi mà anh dưa chuột thực hiện trên hệ thống. Ví dụ anh dưa chuột click vào ô tìm kiếm sau đó anh ấy gõ vào cucumbersome chẳng hạn (cấm trẻ em mang bầu và phụ nữ dưới 18 tuổi tìm kiếm thử nhé :)) ). Khi mà có nhiều hành vi thì có thể sử dụng keyword AND để nối

When : Hotboy dưa chuột click vào ô tìm kiếm
And : Anh ấy gõ vào từ khóa “cucumbersome”

    • Then: mô tả bước kiểm tra. Đối với ví dụ trên thì anh dưa chuột kiểm tra xem danh sách video hiện ra có đúng nhu cầu mong muốn của anh ấy không. Nếu anh ấy thấy ổn thì coi như pass Testcase còn không là Fail

Then: Anh dưa chuột đã tìm được bạn nữ dưa chuột anh ấy thích

cucumber-cartoon-character-vector-illustration-white-background-42468578

Trong gherkin thì sử dụng # để comment nhé.

Ngoài ra với ví dụ trên ta sử dụng Background để mô tả bước thực hiện trước khi chạy qua các scenario.

Chi tiết thêm về cái ngôn ngữ của chủng tộc Dưa chuột cũng như cách cài đặt đối với Java thì 500 anh em tham khảo thêm các link dưới nhé.

http://www.seleniumframework.com/cucumber-jvm-3/cucumber-jvm-and-selenium/

http://toolsqa.com/cucumber/cucumber-tutorial/

https://sukesh15.gitbooks.io/cucumber-jvm-test-framework-/content/index.html

https://cucumber.io/docs/reference

Anh em thử cài đặt và hi vọng vào dưa chuột nào (y)

gherkin_of_hope2012-07-20

Hết bài rồi nhé. Sang phần sau mình sẽ trình bày những bestpracitce khi thực hiện viết Gherkin. Rồi thì đi chơi đây :3

mr_290799_18499b0b86796e29

 

 

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s