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:
- Vagrant (https://developer.hashicorp.com/vagrant/docs/installation)
- VirutalBox 6.1 (https://www.virtualbox.org/wiki/Download_Old_Builds_6_1)
- Git (https://git-scm.com/downloads)
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:
About author
Você pode gostar também
GitLab CI – Integração Contínua sem sair do repositório
Ferramentas de CI/CD hoje em dia andam de mãos dadas com os nossos projetos – dificilmente vemos um repositório no GitHub, GitLab, Bitbucket, Gitea… sem alguma configuração de integração contínua.
Entenda o risco das injeções de dados e como prevenir em desenvolvimento de software
Neste artigo, vamos entender o motivo pelo qual as injeções de dados (SQL Injections) estão no Top 10 da OWASP e o porquê dessa classe de vulnerabilidades precisar de atenção
Desvendando o Mundo do Desenvolvimento Front-End: HTML, CSS e JavaScript
Você já olhou para algum site e se perguntou como toda aquela estrutura funciona? Já parou para pensar como tudo é definido em um site, e quis saber como é