0

Kiểm thử tự động sử dụng BDD

1. BDD là gì? - BDD (Behavior Driven Development) là một quá trình phát triển phần mềm dựa trên phương pháp Agile(phát triển phần mềm linh hoạt). - BDD là sự mở rộng của TDD (Test driven development). Thay vì tập trung vào phát triển phần mềm theo hướng kiểm thử, BDD tập trung vào phát triển phần mềm theo hướng hành vi. - BDD giúp xây dựng hệ thống kịch bản để thực thi test dưới góc độ ngôn ngữ tự nhiên từ các yêu cầu của khách hàng. - BDD giúp dev hiểu rõ hơn các yêu cầu trước khi code. - BDD giúp chúng ta phân tích yêu cầu và định nghĩa chương trình cần đáp ứng những nhu cầu gì - BDD giúp chúng ta có spec rõ ràng nên dễ dàng viết code, viết code xong thì không cần test ( vì đã viet test xong rồi).

Viết test theo yêu cầu của khách hàng nên sẽ tránh được trường hợp test thừa hoặc thiếu. BDD hình thành một cách rất tự nhiên, xuất phát từ những yêu cầu. 2. Những lợi ích khi sử dụng BDD

– Giúp xác định đúng yêu cầu của khách hàng: tài liệu được viết dưới dạng ngôn ngữ tự nhiên, bất kỳ đối tượng nào cũng có thể hiểu được. Khi đọc tài liệu này, khách hàng có thể dễ dàng nhận biết được lập trình viên có hiểu đúng yêu cầu của họ không và có phản hồi kịp thời.

– Là tài liệu sống của dự án: tài liệu này luôn được cập nhật khi có bất kỳ sự thay đổi nào nên tất cả các thành viên sẽ không bị miss thông tin khi phát triển hệ thống

– Nâng cao chất lượng phần mềm, tạo ra sản phẩm hữu ích: vì phát triển phần mềm theo hướng hành vi nên có thể focus vào việc tạo ra sản phẩm đúng với yêu cầu của khách hàng nhưng vẫn hữu ích cho người dùng. 3. Người viết BDD BDD đề cao sự cộng tác giữa các thành viên trong dự án cũng như các bên liên quan. Vì vậy, tất cả những người này sẽ xây dựng nên file BDD để đưa ra một cái nhìn chung nhất, chính xác nhất về yêu cầu của dự án. Chính vì vậy mà không phải chỉ tester mới là người viết test 4. Cách viết BDD BDD được viết dưới dạng plain text language gọi là Gherkin. Cú pháp gherkin chia thành 3 thành phần chính là Feature, Scenario và step

Mỗi file gồm một Feature - Mỗi Feature gồm nhiều Scenario, bắt đầu bằng từ khóa “Feature:”. Mỗi Feature là 1 chức năng - Mỗi Scenario gồm nhiều step, bắt đầu bằng từ khóa “Scenario:”. Mỗi Scenario là một testcase. - Mỗi step sẽ bắt đầu bằng các keyword như Given, When, Then, But hoặc And Trong đó: - “Given”: Mô tả ngữ cảnh ban đầu của hệ thống - “When”: Mô tả hành vi - “Then”: Mô tả kết quả - “And”, “But”: Kết hợp nhiều step giống nhau Ví dụ về một file feature hoàn chỉnh

Feature: Home page

Scenario: Viewing application's home page
Given there's a post titled "My first" with "Hello, BDD world!" content
When I am on the homepage
Then I should see the "My first" post

Step Definition có thể viết bằng nhiều ngôn ngữ lập trình khác nhau. Hiện tại thì mình sử dụng ngôn ngữ Ruby. Cấu trúc thư mục như sau : features/step_definitions/*_steps.rb. Step definitions sẽ gọi lại các step mà đã define ở feature và viết các action cho step đó ví dụ:

Given(/^there's a post titled "(.*?)" with "(.*?)" content$/) do |title, content|
  @post = FactoryGirl.create(:post, title: title, content: content)
end

When(/^I am on the homepage$/) do
  visit "/"
end

Then(/^I should see the "(.*?)" post$/) do |title|
  @post = Post.find_by_title(title)
  expect(page).to have_content(@post.title)
  expect(page).to have_content(@post.content)
end

5. Tài liệu tham khảo

https://en.wikipedia.org/wiki/

http://www.guru99.com

http://www.testingvn.com/

https://github.com/

.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí