Automation Test với Robot Framework

Trong thực tế khi làm dự án, chúng ta phải đối mặt với những tình huống cần kiểm thử theo nhiều dạng khác nhau. Đôi khi có những tình huống không chỉ Tester hoặc Developer nghĩ ra mà còn từ cả phía Khách Hàng, vậy làm sao để chúng ta có thể kiểm thử một cách dễ dàng và hiệu quả hơn. Hãy thử tìm hiểu về Robot Framework.

I. Cài đặt

Robot Framework được viết bằng Python nên nó hỗ trợ trên chạy trên cả Jython (JVM), IronPython (.NET) and PyPy. Để đơn giản ta cài đặt:

Sau đó gõ lệnh dưới để cài:

pip install robotframework

II. Cấu trúc

Thành phần cơ bản của một file kịch bản của Robot Framework gồm 3 phần chính: Settings, Test CasesKeywords.

1. Settings

Phần Settings sẽ định nghĩa các thành thiết lập khởi đầu cho kịch bản, như là mô tả xem nó sẽ làm gì, dùng thư viện nào.

*** Settings ***
Documentation     A test suite containing tests related to invalid login.
...
...               These tests are data-driven by their nature. They use a single
...               keyword, specified with Test Template setting, that is called
...               with different arguments to cover different scenarios.
...
...               This suite also demonstrates using setups and teardowns in
...               different levels.

Suite Setup       Open Browser To Login Page
Suite Teardown    Close Browser

Test Setup        Go To Login Page
Test Template     Login With Invalid Credentials Should Fail

Library           Selenium2Library
Resource          resource.robot

Như VD ở trên ta có thể thấy gồm các thành phần:

  • Documentation: Mô tả khái quát về nội dung test.
  • Suite Setup/Teardown: Gọi đến các Keywords để khi bắt đầu/kết thúc chạy test.
  • Resource: Import các file khác để tái sử dụng lại các Keywords.
  • Library: Import các thư viện hỗ trợ test.

2. Test Cases

Phần Test Cases là phần chính bao gồm các trường hợp cần test, trong phần này ta chỉ cần gọi các Keywords để chúng chạy và kiểm tra xem Output có đúng với Expected không.

Normal Syntax:

*** 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 biệt với phần Gherkin bên dưới, cách viết rất gần với ngôn ngữ tự nhiên nên hoàn toàn có thể để Khách Hàng viết Test Case trước, sau đó chúng ta sẽ implement sau đó, rất dễ dàng và hiệu quả.

Gherkin Syntax:

*** Test Cases ***
Valid Login
    Given browser is opened to login page
    When user "demo" logs in with password "mode"
    Then welcome page should be open

Data-driven Syntax:

*** Test Cases ***               USER NAME        PASSWORD
Invalid Username                 invalid          ${VALID PASSWORD}
Invalid Password                 ${VALID USER}    invalid
Invalid Username And Password    invalid          whatever
Empty Username                   ${EMPTY}         ${VALID PASSWORD}
Empty Password                   ${VALID USER}    ${EMPTY}
Empty Username And Password      ${EMPTY}         ${EMPTY}

3. Keywords

Keywords là các step từ chuẩn bị cho đến việc kiểm tra kết quả, Robot là thế giới của các keywords. Trong keywords chúng ta cũng gọi đến những keywords khác để thực hiện các xử lý.

*** Keywords ***
Login With Invalid Credentials Should Fail
    [Arguments]    ${username}    ${password}
    Input Username    ${username}
    Input Password    ${password}
    Submit Credentials
    Login Should Have Failed

Login Should Have Failed
    Location Should Be    ${ERROR URL}
    Title Should Be    Error Page

Bản thân các Keywords có thể nhận các đối số để sử dụng trong các trường hợp tương tự nhau, ví dụ như nhập Input Text, Submit Form,... Ngoài ra các keywords hoàn toàn có thể định nghĩa tự do bằng bất cứ ngôn ngữ nào, chỉ cần phần Test Cases gọi đúng như vậy là được.

III. Các thành phần khác

1. Variables

Tích hợp biến vào giúp việc code cũng như maintain test dễ dàng hơn nhiều. Thích hợp nhất cho Data-driven Test.

*** Variables ***
${SERVER}         localhost:7272
${BROWSER}        Firefox
${DELAY}          0
${VALID USER}     demo
${VALID PASSWORD}    mode
${LOGIN URL}      http://${SERVER}/
${WELCOME URL}    http://${SERVER}/welcome.html
${ERROR URL}      http://${SERVER}/error.html

2. Tags

Tags giúp cho việc chạy test hiệu quả hơn, cụ thể hơn và tránh lặp lại toàn bộ quy trình khi ta cần test một phần cụ thể.

*** Test Cases ***
With own tags
    [Documentation]    This test has tags not_ready, owner-mrx and req-42.
    [Tags]    owner-mrx    not_ready
    No Operation

Own tags with variables
    [Documentation]    This test has tags host-10.0.1.42 and req-42.
    [Tags]    host-${HOST}
    No Operation

Empty own tags
    [Documentation]    This test has only tag req-42.
    [Tags]
    No Operation

Set Tags and Remove Tags Keywords
    [Documentation]    This test has tags mytag and owner-john.
    Set Tags    mytag
    Remove Tags    smoke    req-*

IV. Libraries

Robot Framework cũng có rất nhiều thư viện hỗ trợ, đối với các thư viện đã có sẽ cũng cấp các tài liệu về cách sử dụng các keywords phục vụ cho việc test. Các thư viện hầu hết được cũng cấp trên pip và bạn chỉ cần gõ lệnh để cài.

Ví dụ nếu ta muốn cài thư viện Selenium2Library thì chỉ cần gõ:

pip install robotframework-selenium2library

Ngoài ra chúng ta có thể tự viết thư viện riêng với Python hoặc Java, phần này mình sẽ nói cụ thể hơn ở bài viết tiếp theo.

Tham khảo