Introdução ao Robot Framework: Ferramenta para Testes Automatizados

Introdução ao Robot Framework: Ferramenta para Testes Automatizados

Hoje, no blog da 4Linux, vamos falar sobre Robot Framework, uma ferramenta voltada para testes automatizados. O objetivo é fazer uma séries de posts até a criação de uma pipeline com um stage de teste usando essa ferramenta.

Bora lá

Porque que devemos testar nossas aplicações?

Para que possamos diminuir o número de erros em código-fonte, só existe um caminho, que são os testes de software. É nesse momento onde é avaliado se o programa desenvolvido vai funcionar conforme esperado se registra pequenas falhas, seja de segurança ou de aplicação.

Existem alguns tipos de testes de aplicação como por exemplo:

  • Testes de unidade Automatizada (Unit Tests)
  • Teste de API/Web Services
  • Teste de GUI

O que são testes automatizados?

Com o aumento da complexidade das aplicações, as equipes de desenvolvimento perceberam que ficaram mais difícil fazer a avaliação de possíveis problemas nos recursos da aplicação. E nisso surgiu a necessidade de automatizar as rotinas, garantindo assim, maior velocidades na identificação de bugs e brechas de seguranças nas aplicações.

Como o objetivo desse post não é se aprofundar em todos os detalhes sobre os outros tipos de testes de aplicação e sim nos do tipo automatizados, então vamos conhecer o Robot Framework.

O que é o Robot Framework?

Robot Framework é uma estrutura genérica de automação de código aberto. Ele pode ser usado para automação de teste e automação de processo robótico (RPA). É suportado pela Robot Framework Foundation . Muitas empresas líderes do setor usam a ferramenta em seu desenvolvimento de software.

Pode ser integrado a praticamente qualquer outra ferramenta para criar soluções de automação poderosas e flexíveis. O Robot Framework é gratuito para uso sem custos de licenciamento. Tem uma sintaxe fácil, utilizando palavras-chave legíveis por humanos. Seus recursos podem ser estendidos por bibliotecas implementadas com Python, Java ou muitas outras linguagens de programação.

Inicializando infraestrutura

Para facilitar a criação do nosso ambiente, vou disponibilizar para vocês um repositório com a criação do ambiente de forma automatizada com o Vagrant. Para poder executar esse ambiente, vocês vão precisar ter instalado:

Feito isso, basta clonar o repositório e inicializar o Vagrant para ele criar a VM:

git clone -b blog4linux https://github.com/silvemerson/tools-qa.git

cd tools-qa.git

vagrant up

Acesso VM: 
usuário: vagrant
senha: vagrant

Entendendo a estrutura dos arquivos de testes

No terminal, dentro da VM, execute o seguinte comando:

cat ~/WebDemo/login_tests/valid_login.robot

*** Settings ***
Documentation     A test suite with a single test for valid login.
...
...               This test has a workflow that is created using keywords in
...               the imported resource file.
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]

Esse script vai abrir o navegador e vai validar o login com sucesso. Usando o usuário demo e a senha mode.

Temos outro script que é conjunto de testes relacionados a login inválido. Ele vai usar o usuário errado, senha errada, em branco. Validando diferentes cenários.

*** 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
Resource          resource.robot

*** 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}

*** 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

Observem que a estrutura do arquivo .robot é bem tranquila de entender, a documentação oficial do Robot Framework oferece dezenas de exemplos e formas que podemos usar as sintaxes.

Vamos iniciar nossos testes!

Mão na Massa

No ambiente já está devida configurado com as dependências instaladas. O primeiro passo é inicializar a aplicação em Python que vamos usar. Para isso, no terminal, execute o seguinte comando:

python3 WebDemo/demoapp/server.py &

É uma aplicação Web com login

Agora que temos nossa aplicação em execução, podemos rodar nossos primeiros testes.

robot WebDemo/login_testes/valid_login.robot

Observe que executamos o primeiro teste onde ele validou o login com sucesso, fazendo a autenticação usando o navegador Firefox. Caso queira mudar o navegador para testar. editar o arquivo resource.robot. Nele estão as variáveis para os arquivos de teste:

*** Settings ***
Documentation     A resource file with reusable keywords and variables.
...
...               The system specific keywords created here form our own
...               domain specific language. They utilize keywords provided
...               by the imported SeleniumLibrary.
Library           SeleniumLibrary

*** 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

*** Keywords ***
Open Browser To Login Page
    Open Browser    ${LOGIN URL}    ${BROWSER}
    Maximize Browser Window
    Set Selenium Speed    ${DELAY}
    Login Page Should Be Open

Login Page Should Be Open
    Title Should Be    Login Page

Go To Login Page
    Go To    ${LOGIN URL}
    Login Page Should Be Open

Input Username
    [Arguments]    ${username}
    Input Text    username_field    ${username}

Input Password
    [Arguments]    ${password}
    Input Text    password_field    ${password}

Submit Credentials
    Click Button    login_button

Welcome Page Should Be Open
    Location Should Be    ${WELCOME URL}
    Title Should Be    Welcome Page

O próximo script que vamos executar ele validar as credencias alternando entre usuário errado ou senha:

robot WebDemo/login_testes/invalid_login.robot

Viram que bacana é essa ferramenta? Foi uma rápida introdução sobre ela, no nosso próximo post, vamos usar dentro de uma pipeline.

Nos veremos no próximo post pessoal!!

 

Referências

https://robotframework.org/#getting-started

https://github.com/robotframework/robotframework

https://github.com/silvemerson/WebDemo

 

Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:

CURSOSCONSULTORIA

Anterior Provisionamento de Data Platform na Azure com Terraform: Um Guia Prático
Próxima Domine a Google Cloud Platform e torne-se um profissional certificado com o curso GCP Cloud Engineer

About author

Emerson Silva
Emerson Silva 10 posts

Desenvolvedor de Infraestrutura e Monitoramento, atua como Analista de Infraestrutura na 4Linux, entusiasta DevOps e apaixonado por software livre

View all posts by this author →

Você pode gostar também

Banco de Dados

Organize seus objetos de banco de dados com schemas PostgreSQL no Django

Que tal se você pudesse organizar seus objetos de bancos de dados (suas tabelas, views, functions, procedures etc.) em namespaces de acordo com suas respectivas funções no sistema? Neste artigo

DevOps

Domine o mercado de TI com o Curso Infraestrutura de Nuvens com OpenStack

A 4Linux lançou o Curso Infraestrutura de Nuvens com OpenStack, para atender uma demanda crescente no mercado de nuvem privada, pública e híbrida. Mais que uma demanda, o conteúdo se torna uma

Desenvolvimento

Entenda o Celery: a biblioteca Python para filas de tarefas

Celery? Salsão? Vamos começar a falar de plantas agora na 4Linux? Não, não. Outro Celery. A biblioteca do Python! Aah, sim… É uma biblioteca do Python… É sobre jardinagem? Olha,