SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
Testes de UI
não aceite mais falso negativos
@andreitognolo
github.com/andreitognolo
andreitognolo@gmail.com
@snap_ci
Testes
unitários
Teste de
integração
Deploy
QA
Deploy
produção
Smoke
test
Testes
unitários
UI
Deploy

QA
Deploy
produção
Smoke
test
São Paulo / Recife / Porto Alegre / Belo Horizonte
Negócio
Sustentável
São Paulo / Recife / Porto Alegre / Belo Horizonte
Negócio
Sustentável
Excelência de
software
São Paulo / Recife / Porto Alegre / Belo Horizonte
Negócio
Sustentável
Excelência de
software
Justiça Social e
Econômica
São Paulo / Recife / Porto Alegre / Belo Horizonte
Martin Fowler
ThreePillars [1]
São Paulo / Recife / Porto Alegre / Belo Horizonte
Rápida definição:
falso negativos
Rápida definição: falso negativos
flaky test / non-determinism
Testes automatizados,
por onde começar?
2007/2008
Testes automatizados, por onde começar?
Testes automatizados, por onde começar?
Testes automatizados, por onde começar?
Independente de
implementação
Lentos
Falso negativos
Fácil de criar Difícil de manter
Testes de UI
Testes automatizados, por onde começar?
UI
Service
Unit
Testes automatizados, por onde começar?
UI
Service
Unit
Testes automatizados, por onde começar?
Vamos acabar com falso
negativos nos testes de UI
Martin Fowler
TestPyramid [2]
Even with good practices on writing
them, end-to-end tests are more
prone to non-determinism problems,
which can undermine trust in them
Vamos acabar com falso negativos nos testes de UI
Vamos acabar com falso negativos nos testes de UI
35,63%
dos repositórios fizeram rerun (*)
* Referente ao mês de Junho
Testes de UI:
zero
falso negativos
Testes de UI:
não aceitei mais
falso negativos
Vamos acabar com falso negativos nos testes de UI
Pavan Sudarshan
No more flaky tests on the
Go team [3]
Acceptance test builds
can never be red
Vamos acabar com falso negativos nos testes de UI
Testes
integrados
UI
Deploy

QA
Deploy
produção
Testes
unitários
Vamos acabar com falso negativos nos testes de UI
Testes
integrados
UI
Deploy

QA
Deploy
produção
Testes
unitários
Flaky tests
Vamos acabar com falso negativos nos testes de UI
Criando UI testes
à prova de balas(quase)
Criando UI testes (quase) à prova de balas
Criando UI testes (quase) à prova de balas
Criando UI testes (quase) à prova de balas
Criando UI testes (quase) à prova de balas
Criando UI testes (quase) à prova de balas
Criando UI testes (quase) à prova de balas
Criando UI testes (quase) à prova de balas
1. Clicar no menu "Create"
2. Preencher os campos da empresa
3. Clicar no botão "Save"
4. Clicar no menu "Search"
5. Preencher o campo nome e clicar em "Apply"
6. Verificar que a empresa está presente na tabela
Criando UI testes (quase) à prova de balas
1. Clicar no menu "Create"
2. Preencher os campos da empresa
3. Clicar no botão "Save"
4. Clicar no menu "Search"
5. Preencher o campo nome e clicar em "Apply"
6. Verificar que a empresa está presente na tabela
Criando UI testes (quase) à prova de balas
1. Clicar no menu "Create"
2. Preencher os campos da empresa
3. Clicar no botão "Save"
4. Clicar no menu "Search"
5. Preencher o campo nome e clicar em "Apply"
6. Verificar que a empresa está presente na tabela
Criando UI testes (quase) à prova de balas
1. Clicar no menu "Create"
2. Preencher os campos da empresa
3. Clicar no botão "Save"
4. Clicar no menu "Search"
5. Preencher o campo nome e clicar em "Apply"
6. Verificar que a empresa está presente na tabela
Criando UI testes (quase) à prova de balas
1. Clicar no menu "Create"
2. Preencher os campos da empresa
3. Clicar no botão "Save"
4. Clicar no menu "Search"
5. Preencher o campo nome e clicar em "Apply"
6. Verificar que a empresa está presente na tabela
Criando UI testes (quase) à prova de balas
1. Clicar no menu "Create"
2. Preencher os campos da empresa
3. Clicar no botão "Save"
4. Clicar no menu "Search"
5. Preencher o campo nome e clicar em "Apply"
6. Verificar que a empresa está presente na tabela
Criando UI testes (quase) à prova de balas
1. Clicar no menu "Create"
2. Preencher os campos da empresa
3. Clicar no botão "Save"
4. Clicar no menu "Search"
5. Preencher o campo nome e clicar em "Apply"
6. Verificar que a empresa está presente na tabela
Criando UI testes (quase) à prova de balas
Por que UI testes são mais propensos a
falso negativos?
Sim, requisições assíncronas!
Criando UI testes (quase) à prova de balas
1. Clicar no menu "Create"
2. Preencher os campos da empresa
3. Clicar no botão "Save"
4. Clicar no menu "Search"
5. Preencher o campo nome e clicar em "Apply"
6. Verificar que a empresa está presente na tabela
wait "Form"
wait "Apply"
wait "Table"
wait "Menu"
4 seg
1 seg
1 seg
1 seg
Criando UI testes (quase) à prova de balas
1. Clicar no menu "Create"
2. Preencher os campos da empresa
3. Clicar no botão "Save"
4. Clicar no menu "Search"
5. Preencher o campo nome e clicar em "Apply"
6. Verificar que a empresa está presente na tabela
wait "Form"
wait "Apply"
wait "Table"
wait "Menu"
4 seg
1 seg
1 seg
1 seg
wait "mensagem"
Criando UI testes (quase) à prova de balas
1. Clicar no menu "Create"
2. Preencher os campos da empresa
3. Clicar no botão "Save"
4. Clicar no menu "Search"
5. Preencher o campo nome e clicar em "Apply"
6. Verificar que a empresa está presente na tabela
wait "Form"
wait "Apply"
wait “Table"
(linha)
wait "Menu"
4 seg
1 seg
1 seg
1 seg
wait "mensagem"
Criando UI testes (quase) à prova de balas
Agora vamos implementar os outros testes
necessários!
Criando UI testes (quase) à prova de balas
Exemplo em Selenium
Exemplo em Selenium
Mas, não se iluda, um dia algum
teste vai falhar no CI
Mas, não se iluda, um dia algum teste vai falhar no CI
Por que é tão difícil resolver um teste de UI?
* O teste é intermitente
* Ele é lento para rodar
* Em geral, existem muitas camadas de abstração até o browser
Faz parte da natureza do teste
Mas, não se iluda, um dia algum teste vai falhar no CI
Por que é tão difícil resolver um teste de UI?
* Ele é lento para rodar
* Em geral, existem muitas camadas de abstração até o browser
Ainda vamos
evoluir
Mas, não se iluda, um dia algum teste vai falhar no CI
Por que é tão difícil resolver um teste de UI?
(Java) Selenium
(Ruby) Capybara
Driver
Firefox
Chrome
PhantomJS
Mas, não se iluda, um dia algum teste vai falhar no CI
Por que é tão difícil resolver um teste de UI?
QUnit Driver
Firefox
Chrome
PhantomJS
Mas, não se iluda, um dia algum teste vai falhar no CI
Por que é tão difícil resolver um teste de UI?
Driver
Browser
QUnit
Mas, não se iluda, um dia algum teste vai falhar no CI
QUnit
Assíncrono: Start/Stop
QUnit Page
QUnit Page
Javascript
Foco em
waits
Qualquer
browser
@andreitognolo
github.com/andreitognolo
andreitognolo@gmail.com
Obrigado!
is hiring!
http://join.thoughtworks.com/
@snap_ci
Referências
[1] ThreePillars - http://martinfowler.com/bliki/ThreePillars.html
[2] TestPyramid - http://martinfowler.com/bliki/TestPyramid.html
[3] No more flaky tests on the
Go team -
http://www.thoughtworks.com/insights/blog/no-more-flaky-
tests-go-team

Mais conteúdo relacionado

Semelhante a UI testes sem falso negativos

Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressWalmyr Lima e Silva Filho
 
Palestra: Por que é importante fazer testes de usabilidade - e como começar já!
Palestra: Por que é importante fazer testes de usabilidade - e como começar já!Palestra: Por que é importante fazer testes de usabilidade - e como começar já!
Palestra: Por que é importante fazer testes de usabilidade - e como começar já!Elisa Volpato
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareJeremias Araujo
 
MTC 2017 pirâmide de automação mobile de testes
MTC 2017   pirâmide de automação mobile de testesMTC 2017   pirâmide de automação mobile de testes
MTC 2017 pirâmide de automação mobile de testesWellington Avelino dos Santos
 
1° Meetup Floripa Empreend
1° Meetup Floripa Empreend1° Meetup Floripa Empreend
1° Meetup Floripa EmpreendGustavo Stelczyk
 
Lightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDDLightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDDWillians De Paula Pereira
 
VR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de TestesVR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de TestesStefan Teixeira
 
Dezembro 2015 - Primeiros Passos em Automação de Testes
Dezembro 2015 - Primeiros Passos em Automação de Testes Dezembro 2015 - Primeiros Passos em Automação de Testes
Dezembro 2015 - Primeiros Passos em Automação de Testes Grupo de Testes Carioca
 
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de TestesStefan Teixeira
 
QConSP 2014 - Continuous Delivery - Part 05 - Testes
QConSP 2014 - Continuous Delivery - Part 05 - TestesQConSP 2014 - Continuous Delivery - Part 05 - Testes
QConSP 2014 - Continuous Delivery - Part 05 - TestesRodrigo Russo
 
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosScrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosStefan Teixeira
 
Guia Rápido fazer a proposta do Redesenho/Novo Processo (TO BE)
Guia Rápido fazer a proposta do Redesenho/Novo Processo (TO BE)Guia Rápido fazer a proposta do Redesenho/Novo Processo (TO BE)
Guia Rápido fazer a proposta do Redesenho/Novo Processo (TO BE)CompanyWeb
 
Palestra - Usabilidade - A Experiência do Usuário no Aplicativo do Censo
Palestra - Usabilidade - A Experiência do Usuário no Aplicativo do CensoPalestra - Usabilidade - A Experiência do Usuário no Aplicativo do Censo
Palestra - Usabilidade - A Experiência do Usuário no Aplicativo do CensoLuiz Agner
 
Automatizando testes de UI no Android com Espresso
Automatizando testes de UI no Android com EspressoAutomatizando testes de UI no Android com Espresso
Automatizando testes de UI no Android com EspressoVinícius de Paula
 
Espresso 101: Introdução a UI Testing
Espresso 101: Introdução a UI TestingEspresso 101: Introdução a UI Testing
Espresso 101: Introdução a UI TestingOnyo
 
Testes para dispositivos móveis
Testes para dispositivos móveisTestes para dispositivos móveis
Testes para dispositivos móveisQualister
 
Android testing PT-BR
Android testing PT-BRAndroid testing PT-BR
Android testing PT-BRrafaeladson
 

Semelhante a UI testes sem falso negativos (20)

Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
 
Palestra: Por que é importante fazer testes de usabilidade - e como começar já!
Palestra: Por que é importante fazer testes de usabilidade - e como começar já!Palestra: Por que é importante fazer testes de usabilidade - e como começar já!
Palestra: Por que é importante fazer testes de usabilidade - e como começar já!
 
Ferramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de softwareFerramentas open source para auxiliar os testes de software
Ferramentas open source para auxiliar os testes de software
 
MTC 2017 pirâmide de automação mobile de testes
MTC 2017   pirâmide de automação mobile de testesMTC 2017   pirâmide de automação mobile de testes
MTC 2017 pirâmide de automação mobile de testes
 
1° Meetup Floripa Empreend
1° Meetup Floripa Empreend1° Meetup Floripa Empreend
1° Meetup Floripa Empreend
 
Lightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDDLightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDD
 
VR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de TestesVR Dev Summit 2016 - Primeiros Passos em Automação de Testes
VR Dev Summit 2016 - Primeiros Passos em Automação de Testes
 
Dezembro 2015 - Primeiros Passos em Automação de Testes
Dezembro 2015 - Primeiros Passos em Automação de Testes Dezembro 2015 - Primeiros Passos em Automação de Testes
Dezembro 2015 - Primeiros Passos em Automação de Testes
 
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
1º Encontro do Grupo de Testes Carioca - Primeiros Passos em Automação de Testes
 
QConSP 2014 - Continuous Delivery - Part 05 - Testes
QConSP 2014 - Continuous Delivery - Part 05 - TestesQConSP 2014 - Continuous Delivery - Part 05 - Testes
QConSP 2014 - Continuous Delivery - Part 05 - Testes
 
TesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdfTesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdf
 
Introdução ao Teste de Software
Introdução ao Teste de SoftwareIntrodução ao Teste de Software
Introdução ao Teste de Software
 
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosScrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
 
Guia Rápido fazer a proposta do Redesenho/Novo Processo (TO BE)
Guia Rápido fazer a proposta do Redesenho/Novo Processo (TO BE)Guia Rápido fazer a proposta do Redesenho/Novo Processo (TO BE)
Guia Rápido fazer a proposta do Redesenho/Novo Processo (TO BE)
 
Palestra - Usabilidade - A Experiência do Usuário no Aplicativo do Censo
Palestra - Usabilidade - A Experiência do Usuário no Aplicativo do CensoPalestra - Usabilidade - A Experiência do Usuário no Aplicativo do Censo
Palestra - Usabilidade - A Experiência do Usuário no Aplicativo do Censo
 
Automatizando testes de UI no Android com Espresso
Automatizando testes de UI no Android com EspressoAutomatizando testes de UI no Android com Espresso
Automatizando testes de UI no Android com Espresso
 
TDC 2011 Trilha de Teste
TDC 2011 Trilha de TesteTDC 2011 Trilha de Teste
TDC 2011 Trilha de Teste
 
Espresso 101: Introdução a UI Testing
Espresso 101: Introdução a UI TestingEspresso 101: Introdução a UI Testing
Espresso 101: Introdução a UI Testing
 
Testes para dispositivos móveis
Testes para dispositivos móveisTestes para dispositivos móveis
Testes para dispositivos móveis
 
Android testing PT-BR
Android testing PT-BRAndroid testing PT-BR
Android testing PT-BR
 

Mais de Andrei Tognolo

Mais de 24 anos de Scrum - Ainda faz sentido usar?
Mais de 24 anos de Scrum - Ainda faz sentido usar?Mais de 24 anos de Scrum - Ainda faz sentido usar?
Mais de 24 anos de Scrum - Ainda faz sentido usar?Andrei Tognolo
 
Overcoming the fear of deployments
Overcoming the fear of deploymentsOvercoming the fear of deployments
Overcoming the fear of deploymentsAndrei Tognolo
 
Fronteiras entre o Lean e a Gambiarra
Fronteiras entre o Lean e a GambiarraFronteiras entre o Lean e a Gambiarra
Fronteiras entre o Lean e a GambiarraAndrei Tognolo
 
Reducing passive interruptions
Reducing passive interruptionsReducing passive interruptions
Reducing passive interruptionsAndrei Tognolo
 
Porque nosso time parou de estimar
Porque nosso time parou de estimarPorque nosso time parou de estimar
Porque nosso time parou de estimarAndrei Tognolo
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaAndrei Tognolo
 
Refatorar! Porque ninguém gosta de código que cheira mal
Refatorar! Porque ninguém gosta de código que cheira malRefatorar! Porque ninguém gosta de código que cheira mal
Refatorar! Porque ninguém gosta de código que cheira malAndrei Tognolo
 

Mais de Andrei Tognolo (7)

Mais de 24 anos de Scrum - Ainda faz sentido usar?
Mais de 24 anos de Scrum - Ainda faz sentido usar?Mais de 24 anos de Scrum - Ainda faz sentido usar?
Mais de 24 anos de Scrum - Ainda faz sentido usar?
 
Overcoming the fear of deployments
Overcoming the fear of deploymentsOvercoming the fear of deployments
Overcoming the fear of deployments
 
Fronteiras entre o Lean e a Gambiarra
Fronteiras entre o Lean e a GambiarraFronteiras entre o Lean e a Gambiarra
Fronteiras entre o Lean e a Gambiarra
 
Reducing passive interruptions
Reducing passive interruptionsReducing passive interruptions
Reducing passive interruptions
 
Porque nosso time parou de estimar
Porque nosso time parou de estimarPorque nosso time parou de estimar
Porque nosso time parou de estimar
 
Navegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo javaNavegando em um mar de siglas do mundo java
Navegando em um mar de siglas do mundo java
 
Refatorar! Porque ninguém gosta de código que cheira mal
Refatorar! Porque ninguém gosta de código que cheira malRefatorar! Porque ninguém gosta de código que cheira mal
Refatorar! Porque ninguém gosta de código que cheira mal
 

UI testes sem falso negativos