Robot Framework - một công cụ kiểm thử tự động mạnh mẽ

rf.png

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à

Selection_001.png

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

Selection_003.png

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: