Flaky tests - o
flakiness que há em
você!
hello!
Sou Ramses Almeida
Eu estou aqui porque gosto de churrasco apresentações
Atualmente trabalho na Ilegra/Agibank
Você me encontra em:
@rsaccoll
rsaccoll
hello!
Sou André Mendes
Estou aqui porque acredito muito em comunidades
Atualmente trabalho na Concrete
Você me encontra em:
@ap_mendes
André Mendes
http://conferenciagiletesters.com/
https://www.crowdcast.io/e/agiletesters-testwarstories/register
O que é flaky?
“
“Testes que falham devido a
intermitência ou algum fator
não mapeado.
Tests runs
Tests runs
Tests runs
Tests runs
Tests runs
Na manhã
seguinte
Culpados
Internet
“A internet está caindo”
“Nossa, essa rede está muito
lenta”
Ferramenta
“Esse framework não tem nada
que preciso”
“A comunidade não
implementou funcionalidade
XPTO na framework”
“Selenium resolve tudo”
Tempo
“Esse build tá demorando
muito, vou executar alguns
testes somente.
“Ah, demorou apenas 8 horas
para fazer esse botão ser
clicado
Colegas
“Ah, não acredito que o Ramsés fez isso para
selecionar um item… -_- “
“Pra que usar isso para automatizar!!”
Cobertura fraca
“Acho que preciso melhorar essa cobertura de
testes….Quando der…”
“Ah, usaram o meu test data denovo!!”
Culpados
“
“Flakiness is not get out of jail free
card”
Allister Scott (2015)
SACRED
SACRED - State
✘ A aplicação deve estar em um determinado estado para que a
automação seja eficiente.
Atenção para:
✘ Massa de dados
✘ Configuração
Senão…
✘ Elementos e dados inexistentes
na execução
✘ Cenários fracamente validados
SACRED - Algorithm
✘ "...not training them to be programmers, we're training to learn how to use
the tools..."
Atenção para:
✘ Steps
✘ Decisões
✘ Validação assertiva
✘ Ferramentas
✘ Entender o funcionamento das
coisas
Senão…
✘ sleep();
✘ Overengineering
✘ Lentidão
Allister Scott (2015)
SACRED - Codified oracles
✘ “Como definimos o que é um problema”
Atenção para:
✘ Validações
✘ Fluxo como um todo
✘ Mudanças no produto
✘ Decisão de ser um
problema
Senão…
✘ Manutenção excessiva
✘ Muitas validações
desnecessárias
✘ “Problemas não identificados”
SACRED - reporting
✘ O que o projeto quer da suite de testes?
✘ Quem quer saber o quê?
Atenção para:
✘ Estado da aplicação
✘ Logs
✘ Resultado
Senão…
✘ Demorar mais para entender e
corrigir o problema
✘ Quem precisa saber sobre o
que descobrimos?
✘ Falta de visão do valor gerado
SACRED - Execution
✘ Onde nós devemos executar os nossos testes?
Atenção para:
✘ Onde rodar?
✘ Quando?
✘ Hardware
✘ Rede
Senão…
✘ Não roda bem no ambiente
XPTO
✘ Instabilidade
✘ Ambiente compartilhado
✘ Execução mais lenta
SACRED - deterministic
✘ “...In my conversations with our delivery teams, one recurring problem that we've run
into is tests which have become unreliable, so unreliable that people don't pay much
attention to whether they pass or fail.”
Atenção para:
✘ Objetivo
✘ Confiabilidade
✘ Resultado
Senão…
✘ “Como não vimos esse
problema?
✘ Itens importantes não testados
✘ Muitas coisas desnecessárias
Martin Fowler (2011)
Mas eaí?
O que aprendemos?
✘ Tente não re-executar seus testes cegamente
✘ Conhecimento teórico ajuda
✘ Trabalhe a testabilidade da aplicação. Testabilidade não se resume a ids
✘ Questione determinado teste deveria mesmo ser automatizado
✘ Entenda sobre o produto
✘ Use quarentena
✘ Organize seu tempo
✘ Isole seus testes
Fontes
✘ https://testing.googleblog.com/2016/05/flaky-tests-at-google-and-how-we.html
✘ https://testing.googleblog.com/2017/04/where-do-our-flaky-tests-come-from.html
✘ https://www.youtube.com/watch?v=XnkWkrbzMh0
✘ https://www.youtube.com/watch?v=hmk1h40shaE
✘ https://watirmelon.blog/2015/11/11/your-tests-arent-flaky
✘ https://martinfowler.com/articles/nonDeterminism.html
Obrigado!
Perguntas?
Estamos em:
@rsaccoll || @ap_mendes
NÓS MOVEMOS O MUNDO.
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
Ilha do Leite
Rua Sen. José Henrique, 199
2º andar
(81) 3018-6299
WWW.CONCRETE.COM.BR

Flaky tests: O flakiness que há em você!

  • 2.
    Flaky tests -o flakiness que há em você!
  • 3.
    hello! Sou Ramses Almeida Euestou aqui porque gosto de churrasco apresentações Atualmente trabalho na Ilegra/Agibank Você me encontra em: @rsaccoll rsaccoll
  • 4.
    hello! Sou André Mendes Estouaqui porque acredito muito em comunidades Atualmente trabalho na Concrete Você me encontra em: @ap_mendes André Mendes
  • 5.
  • 6.
  • 7.
    O que éflaky?
  • 8.
  • 9.
    “Testes que falhamdevido a intermitência ou algum fator não mapeado.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 17.
    Culpados Internet “A internet estácaindo” “Nossa, essa rede está muito lenta” Ferramenta “Esse framework não tem nada que preciso” “A comunidade não implementou funcionalidade XPTO na framework” “Selenium resolve tudo” Tempo “Esse build tá demorando muito, vou executar alguns testes somente. “Ah, demorou apenas 8 horas para fazer esse botão ser clicado
  • 18.
    Colegas “Ah, não acreditoque o Ramsés fez isso para selecionar um item… -_- “ “Pra que usar isso para automatizar!!” Cobertura fraca “Acho que preciso melhorar essa cobertura de testes….Quando der…” “Ah, usaram o meu test data denovo!!” Culpados
  • 19.
    “ “Flakiness is notget out of jail free card” Allister Scott (2015)
  • 21.
  • 22.
    SACRED - State ✘A aplicação deve estar em um determinado estado para que a automação seja eficiente. Atenção para: ✘ Massa de dados ✘ Configuração Senão… ✘ Elementos e dados inexistentes na execução ✘ Cenários fracamente validados
  • 23.
    SACRED - Algorithm ✘"...not training them to be programmers, we're training to learn how to use the tools..." Atenção para: ✘ Steps ✘ Decisões ✘ Validação assertiva ✘ Ferramentas ✘ Entender o funcionamento das coisas Senão… ✘ sleep(); ✘ Overengineering ✘ Lentidão Allister Scott (2015)
  • 24.
    SACRED - Codifiedoracles ✘ “Como definimos o que é um problema” Atenção para: ✘ Validações ✘ Fluxo como um todo ✘ Mudanças no produto ✘ Decisão de ser um problema Senão… ✘ Manutenção excessiva ✘ Muitas validações desnecessárias ✘ “Problemas não identificados”
  • 25.
    SACRED - reporting ✘O que o projeto quer da suite de testes? ✘ Quem quer saber o quê? Atenção para: ✘ Estado da aplicação ✘ Logs ✘ Resultado Senão… ✘ Demorar mais para entender e corrigir o problema ✘ Quem precisa saber sobre o que descobrimos? ✘ Falta de visão do valor gerado
  • 26.
    SACRED - Execution ✘Onde nós devemos executar os nossos testes? Atenção para: ✘ Onde rodar? ✘ Quando? ✘ Hardware ✘ Rede Senão… ✘ Não roda bem no ambiente XPTO ✘ Instabilidade ✘ Ambiente compartilhado ✘ Execução mais lenta
  • 27.
    SACRED - deterministic ✘“...In my conversations with our delivery teams, one recurring problem that we've run into is tests which have become unreliable, so unreliable that people don't pay much attention to whether they pass or fail.” Atenção para: ✘ Objetivo ✘ Confiabilidade ✘ Resultado Senão… ✘ “Como não vimos esse problema? ✘ Itens importantes não testados ✘ Muitas coisas desnecessárias Martin Fowler (2011)
  • 28.
  • 29.
    O que aprendemos? ✘Tente não re-executar seus testes cegamente ✘ Conhecimento teórico ajuda ✘ Trabalhe a testabilidade da aplicação. Testabilidade não se resume a ids ✘ Questione determinado teste deveria mesmo ser automatizado ✘ Entenda sobre o produto ✘ Use quarentena ✘ Organize seu tempo ✘ Isole seus testes
  • 30.
    Fontes ✘ https://testing.googleblog.com/2016/05/flaky-tests-at-google-and-how-we.html ✘ https://testing.googleblog.com/2017/04/where-do-our-flaky-tests-come-from.html ✘https://www.youtube.com/watch?v=XnkWkrbzMh0 ✘ https://www.youtube.com/watch?v=hmk1h40shaE ✘ https://watirmelon.blog/2015/11/11/your-tests-arent-flaky ✘ https://martinfowler.com/articles/nonDeterminism.html
  • 31.
  • 32.
    NÓS MOVEMOS OMUNDO. 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 Ilha do Leite Rua Sen. José Henrique, 199 2º andar (81) 3018-6299 WWW.CONCRETE.COM.BR