SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
NEM TUDO É PEPINO:
CUCUMBER
x
ROBOT FRAMEWORK
Rodrigo Matola - QA na Concrete
Meteorologista de formação, cursando e fã de
computação, curioso e fuçador, adora saber como o
mundo funciona. Estudioso de coisas e pessoas,
também tenta cuidar de um blog sobre física e
matemática, o Matemática na Real, aprender japonês
e a desenhar.
github.com/rodmatola
rodmatola@gmail.com
https://www.linkedin.com/in/rodrigomatola/
QUEM SOU EU
SUMÁRIO
•Agradecimentos
•Sobre o Robot Framework
•Bibliotecas
•Por que não é difundido?
•Quem usa
•Cucumber x Robot
•Comparações gerais
•Estrutura
•Extensões para browsers
•Para saber mais
•Outros frameworks
•Demonstração
Agradecimentos
•Darling Lopes (Concrete)
•Mayara Fernandes (Softplan)
•Filipe Henrique (Inatel)
•Michael Hallik (Xebia)
SOBRE O
ROBOT
FRAMEWORK
E o que ele pode fazer
SOBRE O ROBOT FRAMEWORK
•Criado por Pekka Klärck como parte de sua dissertação. Usado
originalmente pela Nokia.
•É um FW de automação genérico. Utiliza tabulação e é
keyword-driven.
•Implementado para Python ou Java, independente do sistema.
Também roda em Jython (JVM) e IronPython (.NET).
•RF provavelmente é o FW que mais vale a pena disponível no
mercado.
BIBLIOTECAS
BIBLIOTECAS
BIBLIOTECAS
POR QUE NÃO É DIFUNDIDO?
algumas opiniões da internet
•Falta de popularidade. Talvez falte divulgação.
•Medo do desconhecido e acomodação por tempo de uso de outro FW.
•Conforme a suíte de testes cresce, fica mais difícil manter o código.
Ótima para iniciantes mas não muito bom para usuários avançados.
•Fácil de aprender, difícil de usar. O time desiste muito cedo, antes de
descobrir o real potencial do Robot.
QUEM USA
X
COMPARAÇÕES GERAIS
Cucumber
● estrutura de pastas
● só “cucumber”
● BDD Gherkin
● snippets
● relatório simples (exceto js)
Robot Framework
● livre
● tem que referenciar
● livre (e Gherkin em inglês)
● keyword driven
● relatório, log, XML, screenshot
ESTRUTURA
Cucumber
features
features/step_definitions
features/support
features/support/env.rb
arquivos
.feature
.rb
Robot Framework
*** Settings ***
*** Variables ***
*** Test Cases ***
*** Keywords ***
arquivo(s)
.robot
(.py)
ESTRUTURA
Fonte: https://diving2qa.wordpress.com/2016/12/06/robot-framework-vs-cucumber/
*** Settings ***
Library importar bibliotecas (SeleniumLibrary,
AppiumLibrary)
Resource arquivos de recursos
Documentation descrição do arquivo
Suite Setup/Teardown Before/After
Test Setup/Teardown Contexto
Test Template Esquema de cenário
Test Timeout duração máxima
*** Variables ***
AUTOEXPLICATIVO
*** Test Cases ***
● local onde vamos escrever nossos cenários, casos, passos…
● equivalente ao arquivo .feature do Cucumber
*** Test Cases ***
@remover
Cenário: Remover checkbox
Dado que estou na página "dynamic_controls"
Quando clico no botão "Remove"
Então o checkbox é removido
E a mensagem "It's gone!" aparece
Cenário: Remover checkbox
[Tags] remover
Dado que estou na página <dynamic_controls>
Quando clico no botão Remove
Então o checkbox é removido
E a mensagem "It's gone!" aparece
Cucumber Robot Framework
*** Keywords ***
● onde vamos implementar os cenários, casos, passos…
● equivalente à implementação dos snippets no Cucumber.
● no Robot é ctrl+c ctrl+v do que está escrito no *** Test Case ***, mais a
implementação com os comandos da biblioteca usada.
*** Keywords ***
Given("que estou na página {string}") do |string|
visit "https://the-internet.herokuapp.com/"+string
end
When("clico no botão {string}") do |string|
click_on string
end
Then("o checkbox é removido") do
page.has_no_field?('checkbox')
end
And("a mensagem {string} aparece") do |string|
page.has_content?(string)
end
Dado que estou na página <${url}>
Open browser
https://the-internet.herokuapp.com/${url} chrome
Quando clico no botão ${botão}
click button ${botão}
Então o checkbox é removido
Page should not contain id=checkbox
E a mensagem "${mensagem}" aparece
Page should contain ${mensagem}
Cucumber Robot Framework
*** Keywords ***
Dado que estou na página <${url}>
Quando clico no botão ${botão}
Então o checkbox é removido
E a mensagem "${mensagem}" aparece
Test Case Keywords
Dado que estou na página <dynamic_controls>
Quando clico no botão Remove
Então o checkbox é removido
E a mensagem "It's gone!" aparece
Test Cases Tags
[Documentation] descrição dos cenários
[Tags] rótulo do cenário
[Setup] roda um comando antes do teste
[Teardown] roda um comando depois do teste
[Template] especifica um template de palavras-chave (esq. cenário)
[Timeout] tempo limite do cenário
Tabela de dados (Esquema de cenário)
Cucumber Robot Framework
Reports e Logs
Reports e Logs (mostrar o html)
Reports e Logs (mostrar o html)
Extensões (Chrome e Firefox)
Tidy and Pretty Gherkin
● editor que converte em tempo
real as features em snippets
para Java, Ruby e JS (inglês)
Capycorder
● point and click recorder
Chrome Robot
● Selenium IDE “like” para o Robot
● gera um script Robot
Robocorder
● point and click recorder
Conclusão
Para saber mais
http://robotframework.org
HowToWriteGoodTestCases
https://robotizandotestes.blogspot.com.br
Nossa experiência com o Robot Framework em 6 meses
http://blog.xebia.com/tag/robot-framework/
http://blog.xebia.com/author/mhallik/
https://technology.condenast.com/story/automated-testing-qa-brand-
sites-robot-framework
Outros frameworks (10+ GitHub)
https://www.joecolantonio.com/2017/12/21/10-popular-automation-tools-libr
aries-github/
1. EarlGrey (3,996 Stars) - iOS
2. WebDriverIO (3,620 Stars) - browser
3. Robot Framework (1.9k Stars) - ATDD
4. Macaca (1.8k Stars) - web apps
5. Detox (1.6k Stars) - mobile
6. UI AutoMonkey (1.3k Stars) - performance for iOS
7. Gauge (969 Stars) - web
8. Hound (893 Stars) - integration and browser
9. OWTF (696 Stars) - pen test
10. FluentLenium (598 Stars) - web
Demonstração
https://github.com/rodmatola/QAs_on_Beer_Concrete-CucumberXRobot
PERGUNTAS?
Centro
Av. Presidente Wilson,
231 - 29º andar
(21) 2240-2030
Cidade Monções
Av. Nações Unidas,
11.541 - 3º andar
(11) 4119-0449
Savassi
Av. Getúlio Vargas, 671
Sala 800 - 8º andar
(31) 3360-8900
www.concrete.com.br

Mais conteúdo relacionado

Mais procurados

Metricas de qualidade em produtos de software
Metricas de qualidade em produtos de softwareMetricas de qualidade em produtos de software
Metricas de qualidade em produtos de softwarecarlosabs13
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법Sungchul Park
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Leinylson Fontinele
 
Processamento Digital de Imagens - Fundamentos e Aplicações
Processamento Digital de Imagens - Fundamentos e AplicaçõesProcessamento Digital de Imagens - Fundamentos e Aplicações
Processamento Digital de Imagens - Fundamentos e AplicaçõesAldisio Medeiros
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션QooJuice
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Esun Kim
 
Reengenharia de Software
Reengenharia de SoftwareReengenharia de Software
Reengenharia de SoftwareRafael Berto
 
Behavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile TestingBehavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile Testingdversaci
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스철민 신
 

Mais procurados (20)

Metricas de qualidade em produtos de software
Metricas de qualidade em produtos de softwareMetricas de qualidade em produtos de software
Metricas de qualidade em produtos de software
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
 
Processamento Digital de Imagens - Fundamentos e Aplicações
Processamento Digital de Imagens - Fundamentos e AplicaçõesProcessamento Digital de Imagens - Fundamentos e Aplicações
Processamento Digital de Imagens - Fundamentos e Aplicações
 
Specflow - Criando uma ponte entre desenvolvedores.
Specflow - Criando uma ponte entre desenvolvedores.Specflow - Criando uma ponte entre desenvolvedores.
Specflow - Criando uma ponte entre desenvolvedores.
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
 
Introdução ao BDD com Gherkin
Introdução ao BDD com GherkinIntrodução ao BDD com Gherkin
Introdução ao BDD com Gherkin
 
Engenharia Direta
Engenharia DiretaEngenharia Direta
Engenharia Direta
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Reengenharia de Software
Reengenharia de SoftwareReengenharia de Software
Reengenharia de Software
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Selenium WebDriver com Docker
Selenium WebDriver com DockerSelenium WebDriver com Docker
Selenium WebDriver com Docker
 
Behavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile TestingBehavior Driven Development (BDD) and Agile Testing
Behavior Driven Development (BDD) and Agile Testing
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스
 

Semelhante a Robot Framework: Uma introdução ao framework de automação de testes

Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produçãothomasdacosta
 
BDD com specflow e selenium webdriver
BDD com specflow e selenium webdriverBDD com specflow e selenium webdriver
BDD com specflow e selenium webdriverCristian Mathias
 
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Acquia
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkBruno Oliveira
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Drupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilhaDrupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilhaLuiz Filho
 
Como o Cucumber Funciona
Como o Cucumber FuncionaComo o Cucumber Funciona
Como o Cucumber FuncionaLaís Berlatto
 
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...minastestingconference
 
Criação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao AgileCriação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao AgileRobson Agapito Correa
 
Testes de escalabilidade usando cloud
Testes de escalabilidade usando cloudTestes de escalabilidade usando cloud
Testes de escalabilidade usando cloudPET Computação
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado ServidorMario Guedes
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - SubalgoritmosCarlos Santos
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGustavo Concon
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisrafaelberlanda
 

Semelhante a Robot Framework: Uma introdução ao framework de automação de testes (20)

Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 
BDD com specflow e selenium webdriver
BDD com specflow e selenium webdriverBDD com specflow e selenium webdriver
BDD com specflow e selenium webdriver
 
Cloudformation
CloudformationCloudformation
Cloudformation
 
Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8 Tudo que você precisa saber sobre as principais alterações no Drupal 8
Tudo que você precisa saber sobre as principais alterações no Drupal 8
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest Framework
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
Power mock
Power mockPower mock
Power mock
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Drupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilhaDrupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilha
 
Como o Cucumber Funciona
Como o Cucumber FuncionaComo o Cucumber Funciona
Como o Cucumber Funciona
 
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
[MTC 2021] As 8 melhores práticas e formas de simplificar e estruturar todos...
 
Criação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao AgileCriação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao Agile
 
Testes de escalabilidade usando cloud
Testes de escalabilidade usando cloudTestes de escalabilidade usando cloud
Testes de escalabilidade usando cloud
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
 
Python na Nuvem
Python na NuvemPython na Nuvem
Python na Nuvem
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 

Robot Framework: Uma introdução ao framework de automação de testes

  • 1.
  • 2. NEM TUDO É PEPINO: CUCUMBER x ROBOT FRAMEWORK Rodrigo Matola - QA na Concrete
  • 3. Meteorologista de formação, cursando e fã de computação, curioso e fuçador, adora saber como o mundo funciona. Estudioso de coisas e pessoas, também tenta cuidar de um blog sobre física e matemática, o Matemática na Real, aprender japonês e a desenhar. github.com/rodmatola rodmatola@gmail.com https://www.linkedin.com/in/rodrigomatola/ QUEM SOU EU
  • 4. SUMÁRIO •Agradecimentos •Sobre o Robot Framework •Bibliotecas •Por que não é difundido? •Quem usa •Cucumber x Robot •Comparações gerais •Estrutura •Extensões para browsers •Para saber mais •Outros frameworks •Demonstração
  • 5. Agradecimentos •Darling Lopes (Concrete) •Mayara Fernandes (Softplan) •Filipe Henrique (Inatel) •Michael Hallik (Xebia)
  • 6. SOBRE O ROBOT FRAMEWORK E o que ele pode fazer
  • 7. SOBRE O ROBOT FRAMEWORK •Criado por Pekka Klärck como parte de sua dissertação. Usado originalmente pela Nokia. •É um FW de automação genérico. Utiliza tabulação e é keyword-driven. •Implementado para Python ou Java, independente do sistema. Também roda em Jython (JVM) e IronPython (.NET). •RF provavelmente é o FW que mais vale a pena disponível no mercado.
  • 11. POR QUE NÃO É DIFUNDIDO? algumas opiniões da internet •Falta de popularidade. Talvez falte divulgação. •Medo do desconhecido e acomodação por tempo de uso de outro FW. •Conforme a suíte de testes cresce, fica mais difícil manter o código. Ótima para iniciantes mas não muito bom para usuários avançados. •Fácil de aprender, difícil de usar. O time desiste muito cedo, antes de descobrir o real potencial do Robot.
  • 13.
  • 14. X
  • 15. COMPARAÇÕES GERAIS Cucumber ● estrutura de pastas ● só “cucumber” ● BDD Gherkin ● snippets ● relatório simples (exceto js) Robot Framework ● livre ● tem que referenciar ● livre (e Gherkin em inglês) ● keyword driven ● relatório, log, XML, screenshot
  • 18. *** Settings *** Library importar bibliotecas (SeleniumLibrary, AppiumLibrary) Resource arquivos de recursos Documentation descrição do arquivo Suite Setup/Teardown Before/After Test Setup/Teardown Contexto Test Template Esquema de cenário Test Timeout duração máxima
  • 20. *** Test Cases *** ● local onde vamos escrever nossos cenários, casos, passos… ● equivalente ao arquivo .feature do Cucumber
  • 21. *** Test Cases *** @remover Cenário: Remover checkbox Dado que estou na página "dynamic_controls" Quando clico no botão "Remove" Então o checkbox é removido E a mensagem "It's gone!" aparece Cenário: Remover checkbox [Tags] remover Dado que estou na página <dynamic_controls> Quando clico no botão Remove Então o checkbox é removido E a mensagem "It's gone!" aparece Cucumber Robot Framework
  • 22. *** Keywords *** ● onde vamos implementar os cenários, casos, passos… ● equivalente à implementação dos snippets no Cucumber. ● no Robot é ctrl+c ctrl+v do que está escrito no *** Test Case ***, mais a implementação com os comandos da biblioteca usada.
  • 23. *** Keywords *** Given("que estou na página {string}") do |string| visit "https://the-internet.herokuapp.com/"+string end When("clico no botão {string}") do |string| click_on string end Then("o checkbox é removido") do page.has_no_field?('checkbox') end And("a mensagem {string} aparece") do |string| page.has_content?(string) end Dado que estou na página <${url}> Open browser https://the-internet.herokuapp.com/${url} chrome Quando clico no botão ${botão} click button ${botão} Então o checkbox é removido Page should not contain id=checkbox E a mensagem "${mensagem}" aparece Page should contain ${mensagem} Cucumber Robot Framework
  • 24. *** Keywords *** Dado que estou na página <${url}> Quando clico no botão ${botão} Então o checkbox é removido E a mensagem "${mensagem}" aparece Test Case Keywords Dado que estou na página <dynamic_controls> Quando clico no botão Remove Então o checkbox é removido E a mensagem "It's gone!" aparece
  • 25. Test Cases Tags [Documentation] descrição dos cenários [Tags] rótulo do cenário [Setup] roda um comando antes do teste [Teardown] roda um comando depois do teste [Template] especifica um template de palavras-chave (esq. cenário) [Timeout] tempo limite do cenário
  • 26. Tabela de dados (Esquema de cenário) Cucumber Robot Framework
  • 28. Reports e Logs (mostrar o html)
  • 29. Reports e Logs (mostrar o html)
  • 30. Extensões (Chrome e Firefox) Tidy and Pretty Gherkin ● editor que converte em tempo real as features em snippets para Java, Ruby e JS (inglês) Capycorder ● point and click recorder Chrome Robot ● Selenium IDE “like” para o Robot ● gera um script Robot Robocorder ● point and click recorder
  • 32. Para saber mais http://robotframework.org HowToWriteGoodTestCases https://robotizandotestes.blogspot.com.br Nossa experiência com o Robot Framework em 6 meses http://blog.xebia.com/tag/robot-framework/ http://blog.xebia.com/author/mhallik/ https://technology.condenast.com/story/automated-testing-qa-brand- sites-robot-framework
  • 33. Outros frameworks (10+ GitHub) https://www.joecolantonio.com/2017/12/21/10-popular-automation-tools-libr aries-github/ 1. EarlGrey (3,996 Stars) - iOS 2. WebDriverIO (3,620 Stars) - browser 3. Robot Framework (1.9k Stars) - ATDD 4. Macaca (1.8k Stars) - web apps 5. Detox (1.6k Stars) - mobile 6. UI AutoMonkey (1.3k Stars) - performance for iOS 7. Gauge (969 Stars) - web 8. Hound (893 Stars) - integration and browser 9. OWTF (696 Stars) - pen test 10. FluentLenium (598 Stars) - web
  • 36. Centro Av. Presidente Wilson, 231 - 29º andar (21) 2240-2030 Cidade Monções Av. Nações Unidas, 11.541 - 3º andar (11) 4119-0449 Savassi Av. Getúlio Vargas, 671 Sala 800 - 8º andar (31) 3360-8900 www.concrete.com.br