Cucumber & Espressco - Behavior Driven Development (BDD) for Android - Phần 1
|. Introduction 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) với mục tiêu chính mà các bài kiểm tra chấp nhận có thể được quản lý bởi cả chủ sở hữu sản phẩm ...
|. Introduction
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) với mục tiêu chính mà các bài kiểm tra chấp nhận có thể được quản lý bởi cả chủ sở hữu sản phẩm và các nhà phát triển phần mềm. Thay vì viết code để test nbhg (as we Android Engineers write), the acceptance criteria are viết bằng ngôn ngữ tự nhiên và dùng để test UI. Bằng cách này , acceptance tests có thể được hiểu bởi cả những lập trình viên và những người không có kĩ năng nhiều về lập trình. Trong bài chia sẻ này, Tôi sẽ áp dụng 1 số kĩ thuật sau: Gherkin, Cucumber, Espresso, JUnit áp dụng những kĩ thuật này để thực hành BDD trong phát triển ứng dụng Android.
II. Cucumber
1. Cucumber là gì?
- Cucumber là một công cụ kiểm thử tự động acceptance test dựa trên việc thực thi các functions, thằng này trước bắt nguồn từ Ruby sau có thêm bản cho Java. Kịch bản test unit (scenarios) sẽ được viết trước và thể hiện nghiệp vụ, sau đó source code mới được cài đặt để pass qua tất cả các stories đó.
- Ngôn ngữ được cucumber sử dụng 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, source file của nó có đuôi là .feature
2. Các thành phần của một file Gherkin & giới thiệu Plugin viết gherkin trên Android Studio
- Một file gherkin gồm những thành phần sau:
- Feature: Mô tả test script hiện tại sẽ được chạy
- Scenario: Mô tả các bước thực hiện và kết quả đầu ra mong muốn cho một test case cụ thể
- Scenario Outline: Scenario thực hiện nhiều tập dữ liệu (sets of data). Dữ liệu được lưu dưới dạng cấu trúc, phân cách nhau bằng kí hiệu | |
- Given: Chỉ ra ngữ cảnh để thực thi
- When: Chỉ ra hành động đã được thực hiện
- Then: Kết quả đầu ra mong muốn của một test[/info]
- Android Studio có plugin dành cho Gherkin bạn có thể cài vào để dễ viết và dễ nhìn code mình viết ra hơn
- Cài đặt:
- Giao diện sau khi cài đặt:
3. Một số Lưu ý với 1 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. Ở đâu có 1 mẫu anh em tham khảo
Feature: [One line describing the story] Scenario: [One line describing the scenario] Given [context] And [some more context]… When [event] Then [outcome]
III. Espressco
1. Espressco là gì?
- Espresso là framework để test dành cho android, nó giúp cho lập trình viên dễ dàng viết kiểm thử tự động liên quan tới giao diện, Mình sẽ dùng Espressco để thực thi những thứ đã viết ở file feature bên trên
- Espresso được google release vào năm 2013 và sau đó từ phiên bản 2.0 chính thức trở thành một phần của Android Support Repository
2. Các thành phần của Espresso
-
Espresso có 3 thành phần cơ bản:
- ViewMatchers - cho phép tìm một view trong hệ thống view phân cấp hiện tại
- ViewActions - cho phép thực hiện một hành động (action) trên view
- ViewAssertions - cho phép xác nhận tình trạng của một view
-
Một case test của Espresso sẽ có cấu trúc như bên dưới
onView(ViewMatcher) ① .perform(ViewAction) ② .check(ViewAssertion); ③
ba bước tương ứng + ① - TÌm view + ② - Thực hiện hành động trên view + ③ - Xác nhận lại kết quả
Ở phần tiếp theo mình sẽ chi tiết cách apply & demo trên một project Android Mọi đóng góp hay thắc mắc các bạn có thể comment bên dưới hoặc gởi về mail: dao.le.2511@gmail.com