Robot Framework - một công cụ kiểm thử tự động mạnh mẽ
This post hasn't been updated for 3 years
Tổng quan về Robot Framework
Robot Framework là một framework kiểm thử tự động dành cho acceptance testing (test nghiệm thu) và acceptance test-driven development (ATDD). Trong Robot Framework ta có thể sử dụng cách tiếp cận Keyword-driven bên cạnh data-driven hay behavior-driven.
Được sử dụng tốt nhất trên môi trường UNIX, Robot Framework có khả năng dễ dàng mở rộng với những thư viện open-source.
Format file trong Robot Framework có dạng bảng, nên ta có thể view nó dưới dang HTML hoặc TSV, nó có những bảng chính sau
|_. Tên |_. Ý nghĩa |
| Settings | Liên quan đến phần cài đặt tài liệu, thư viện |
| Variables | Phần khai báo các biến |
| Keywords | Định nghĩa các keywords |
| Test Cases | Nơi viết các test case |
Ưu điểm
- Cú pháp rõ ràng dễ hiểu, gần giống với ngôn ngữ tiếng Anh, các từ khóa và đối số được phân cách bởi 4 kí tự trống, các từ khóa được định nghĩa khá giống với ngôn ngữ lập trình Python khi sử dụng 4 dấu cách để phân chia.
- Có nhiều thư viện hỗ trợ cho nhiều phương thức test khác nhau như Selenium2Library, Android library, OperatingSystem, Swing, Windows GUIs,... (Libraries)
- Linh hoạt, có thể mở rộng các chức năng thông qua các module Python hoặc Java
- Report rõ ràng, chi tiết
- Được hỗ trợ bởi đa số trình editor và có RIDE hỗ trợ (Robot Framework IDE)
Cài đặt
Đầu tiên chúng ta cài đặt Python, bản cài đặt được đăng tải trên trang chủ Python Download, nếu bạn đang sử dụng Ubuntu thì có thể bỏ qua bước này vì Ubuntu được cài đặt sẵn Python.
Tiếp theo, ta cần cài đặt thư viện pip, nếu bạn đã cài đặt Python 2 >= 2.7.9 hoặc Python 3 >= 3.4 thì ta không cần phải cài đặt thư viện này.
Bây giờ chỉ cần cài đặt Robot Framework bằng câu lệnh đơn giản
sudo pip install robotframework
Demo
Việc cài đặt Robot Framework khá đơn giản, tiếp theo chúng ta cùng đi qua một số ví dụ để thấy được sự đơn giản, hữu dụng của Robot Framework trong kiểm thử tự động. Robot Framework có rất nhiều thư viện hỗ trợ cho việc kiểm thử tự động, chúng ta cùng đi qua một số thư viện hữu ích được sử dụng nhiều.
1. Selenium Library
Selenium2Library
là một thư viện được sử dụng để kiểm thử trên nền Web, nó được fork từ SeleniunLibrary và được bổ sung để sử dụng Selenium 2 và WebDriver.
Để chạy được Selenium2Library đương nhiên chúng ta cần phải cài đặt Robot Framework, và cài đặt Selenium2Library bằng câu lệnh
sudo pip install robotframework-selenium2library
Để nhanh gọn ta tải bản demo bao gồm web server được viết bằng python, bộ thư viện và các test case mẫu được viết sẵn. Sau khi tải xong, ta giải nén ra. Ở thư mục gốc vừa mới giải nén, ta chạy web server để thực hiện chạy các test case lên server này.
python demoapp/server.py
Server được khởi chạy với đường dẫn mặc định là http://localhost:7272, ta có thể config ở trong file demoapp/server.py
Server đã được dựng sẵn (bạn hoàn toàn có thể chạy test case trên bất cứ trang web nào, nếu bạn không muốn sử dụng web server mặc định).
Giờ ta thử chạy các test case mẫu xem kết quả như thế nào, để chạy một test case hoặc test suite ta sử dụng câu lệnh robot
robot login_tests
và kết quả là
Tất cả các test case đều pass, chúng ta cùng xem chi tiết kết quả của test suite này
Robot Framework export cho chúng ta một output của các test case một cách chi tiết và trực quan, bao gồm trạng thái pass
/fail
.
Giờ ta cùng đi qua một test case đơn giản, xem kết quả như thế nào nhé
*** Settings ***
Documentation A test suite with a single test for valid login.
Resource resource.robot
*** Test Cases ***
Valid Login
Open Browser To Login Page
Input Username demo
Input Password mode
Submit Credentials
Welcome Page Should Be Open
[Teardown] Close Browser
Cú pháp khá đơn giản, ta có thể hiểu Documentation
là tài liệu viết cho test suite này, là những thông tin bổ sung để người đọc có thể hiểu được là nó làm những gì và sẽ làm những gì.
Ta có thể import thư viện bằng cú pháp Resource
, một điều khá hay ở Robot Framework là ta có thể định nghĩa một số từ khóa và khi ta mốn sử dụng lại thì ta có thể import file đó vào.
Trong file resource.robot
bao gồm tất cả những gì cần thiết cho việc kiểm tra login, từ thông số server, browser cho đến những keyword hữu dụng như Open Browser To Login Page
, Submit Credentials
. Ta có thể thấy chúng ta không cần biết trong thư viện resource.robot
có gì nhưng ta có thể hiểu được các test case trên làm những gì, rất là dễ hiểu.
Mọi người có thể tham khảo thêm những ví dụ có trên trang chủ examples và các keywords của Selenium2Library.
2. CalculatorLibrary
Tiếp theo ta sẽ tìm hiểu về một thư viện được có sẵn trong Robot Framework, một thư viện về tính toán đơn giản, nó chỉ chứa logic nghiệp vụ chứ không bao gồm phần UI.
Đầu tiên ta tải các keywords đã được viết sẵn bản demo, sau đó giải nén ra ta được một số file trong đó bao gồm file thư viện, một số test case...
Chúng ta cùng đi qua một ví dụ về CalculatorLibrary
*** Settings ***
Documentation Example test cases using the keyword-driven testing approach.
Library CalculatorLibrary.py
*** Test Cases ***
Push multiple buttons
Push button 1
Push button 2
Result should be 12
Simple calculation
Push button 1
Push button +
Push button 2
Push button =
Result should be 3
Longer calculation
Push buttons 5 + 4 - 3 * 2 / 1 =
Result should be 3
Clear
Push button 1
Push button C
Result should be ${EMPTY} # ${EMPTY} is a built-in variable
Push button
là một keyword được CalculatorLibrary định nghĩa, nó được sử dụng khi ta muốn một biểu thức dài hơn.
Những keyword trên được viết rất là dễ hiểu nên mình sẽ không giải thích gì thêm.
Tiếp theo ta sẽ đi qua những ví dụ phức tạp hơn, ở mức cao hơn khi định nghĩa keyword
để có thể sử dụng lại ở những keyword khác cũng như trong các test case.
*** Settings ***
Documentation Example test cases using the data-driven testing approach.
Test Template Calculate
Library CalculatorLibrary.py
*** Test Cases *** Expression Expected
Addition 12 + 2 + 2 16
2 + -3 -1
Subtraction 12 - 2 - 2 8
2 - -3 5
Multiplication 12 * 2 * 2 48
2 * -3 -6
Division 12 / 2 / 2 3
2 / -3 -1
Failing 1 + 1 3
Calculation error [Template] Calculation should fail
kekkonen Invalid button 'k'.
${EMPTY} Invalid expression.
1 / 0 Division by zero.
*** Keywords ***
Calculate
[Arguments] ${expression} ${expected}
Push buttons C${expression}=
Result should be ${expected}
Calculation should fail
[Arguments] ${expression} ${expected}
${error} = Should cause error C${expression}=
Should be equal ${expected} ${error} # Using `BuiltIn` keyword
Ở trong test suite này, có một điều đặc biệt là việc định nghĩa Template
, về cơ bản Template
cũng giống Keyword
nhưng Template tỏ ra lợi thế khi nó được gọi nhiều lần liên tục, khi đó ta chỉ cần tên template và danh sách đối số.
Tổng kết
Robot Framework là một framework rất dễ sử dụng và đủ mạnh để dùng trong kiểm thử tự động nghiệm thu. Linh hoạt, có thể mở rộng các chức năng thông qua các module Python hoặc Java.
Robot Framework không đòi hỏi bạn phải có kinh nghiệp trong lập trình để viết các test case. Viết chúng dưới dạng bảng làm cho test case mình viết dễ quản lý và dễ đọc. Ngoài ra log và report cũng được cung cấp chi tiết, rõ ràng.
Robot Framework là một framework đáng để học phải không nào.
Tài liệu tham khảo:
- Trang chủ: http://robotframework.org/
All Rights Reserved