SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais ok
Marcos Morais de Sousa
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
Emmanuel Neri
 

Was ist angesagt? (20)

CMMI
CMMICMMI
CMMI
 
Agile testing
Agile testing Agile testing
Agile testing
 
Planejamento de testes em um mundo ágil
Planejamento de testes em um mundo ágilPlanejamento de testes em um mundo ágil
Planejamento de testes em um mundo ágil
 
Closing Loops and Opening Minds: How to Take Control of Systems, Big and Smal...
Closing Loops and Opening Minds: How to Take Control of Systems, Big and Smal...Closing Loops and Opening Minds: How to Take Control of Systems, Big and Smal...
Closing Loops and Opening Minds: How to Take Control of Systems, Big and Smal...
 
Gestão Ágil de Projetos com Scrum
Gestão Ágil de Projetos com ScrumGestão Ágil de Projetos com Scrum
Gestão Ágil de Projetos com Scrum
 
Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com ScrumGerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
 
Módulo 5. El rol del Scrum Master
Módulo 5. El rol del Scrum MasterMódulo 5. El rol del Scrum Master
Módulo 5. El rol del Scrum Master
 
Scrum em 15 minutos
Scrum em 15 minutosScrum em 15 minutos
Scrum em 15 minutos
 
Scrum Process For Offshore Team
Scrum Process For Offshore TeamScrum Process For Offshore Team
Scrum Process For Offshore Team
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de Software
 
1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais ok
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Mapa Mental Scrum
Mapa Mental ScrumMapa Mental Scrum
Mapa Mental Scrum
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
PaaS, SaaS, IaaS
PaaS, SaaS, IaaSPaaS, SaaS, IaaS
PaaS, SaaS, IaaS
 
aula 04 - Logica de programacao
aula 04 - Logica de programacaoaula 04 - Logica de programacao
aula 04 - Logica de programacao
 
Lean inception: como alinhar pessoas e construir o produto certo
Lean inception: como alinhar pessoas e construir o produto certoLean inception: como alinhar pessoas e construir o produto certo
Lean inception: como alinhar pessoas e construir o produto certo
 

Ähnlich wie Nem tudo é Pepino: Cucumber x Robot Framework

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
Allyson Barros
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos
Carlos Santos
 

Ähnlich wie Nem tudo é Pepino: Cucumber x Robot Framework (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
 

Kürzlich hochgeladen

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Nem tudo é Pepino: Cucumber x Robot Framework

  • 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