Testes UI: não aceite mais falso negativos

1.254 visualizações

Publicada em

No mês de junho, 37% dos repositórios que rodaram suas builds no SnapCI utilizaram a funcionalidade de rerun. Essa palestra mostra como você pode tentar evitar UI flaky tests.

Publicada em: Software
0 comentários
8 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.254
No SlideShare
0
A partir de incorporações
0
Número de incorporações
46
Ações
Compartilhamentos
0
Downloads
27
Comentários
0
Gostaram
8
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Testes UI: não aceite mais falso negativos

  1. 1. Testes de UI não aceite mais falso negativos
  2. 2. @andreitognolo github.com/andreitognolo andreitognolo@gmail.com @snap_ci
  3. 3. 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
  4. 4. São Paulo / Recife / Porto Alegre / Belo Horizonte
  5. 5. Negócio Sustentável São Paulo / Recife / Porto Alegre / Belo Horizonte
  6. 6. Negócio Sustentável Excelência de software São Paulo / Recife / Porto Alegre / Belo Horizonte
  7. 7. Negócio Sustentável Excelência de software Justiça Social e Econômica São Paulo / Recife / Porto Alegre / Belo Horizonte
  8. 8. Martin Fowler ThreePillars [1] São Paulo / Recife / Porto Alegre / Belo Horizonte
  9. 9. Rápida definição: falso negativos
  10. 10. Rápida definição: falso negativos flaky test / non-determinism
  11. 11. Testes automatizados, por onde começar?
  12. 12. 2007/2008 Testes automatizados, por onde começar?
  13. 13. Testes automatizados, por onde começar?
  14. 14. Testes automatizados, por onde começar?
  15. 15. Independente de implementação Lentos Falso negativos Fácil de criar Difícil de manter Testes de UI Testes automatizados, por onde começar?
  16. 16. UI Service Unit Testes automatizados, por onde começar?
  17. 17. UI Service Unit Testes automatizados, por onde começar?
  18. 18. Vamos acabar com falso negativos nos testes de UI
  19. 19. 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
  20. 20. Vamos acabar com falso negativos nos testes de UI 35,63% dos repositórios fizeram rerun (*) * Referente ao mês de Junho
  21. 21. Testes de UI: zero falso negativos Testes de UI: não aceitei mais falso negativos Vamos acabar com falso negativos nos testes de UI
  22. 22. 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
  23. 23. Testes integrados UI Deploy QA Deploy produção Testes unitários Vamos acabar com falso negativos nos testes de UI
  24. 24. Testes integrados UI Deploy QA Deploy produção Testes unitários Flaky tests Vamos acabar com falso negativos nos testes de UI
  25. 25. Criando UI testes à prova de balas(quase)
  26. 26. Criando UI testes (quase) à prova de balas
  27. 27. Criando UI testes (quase) à prova de balas
  28. 28. Criando UI testes (quase) à prova de balas
  29. 29. Criando UI testes (quase) à prova de balas
  30. 30. Criando UI testes (quase) à prova de balas
  31. 31. Criando UI testes (quase) à prova de balas
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. 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
  36. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. Criando UI testes (quase) à prova de balas Por que UI testes são mais propensos a falso negativos? Sim, requisições assíncronas!
  40. 40. 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
  41. 41. 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"
  42. 42. 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"
  43. 43. Criando UI testes (quase) à prova de balas Agora vamos implementar os outros testes necessários!
  44. 44. Criando UI testes (quase) à prova de balas
  45. 45. Exemplo em Selenium
  46. 46. Exemplo em Selenium
  47. 47. Mas, não se iluda, um dia algum teste vai falhar no CI
  48. 48. 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
  49. 49. 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
  50. 50. 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
  51. 51. 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
  52. 52. 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
  53. 53. Mas, não se iluda, um dia algum teste vai falhar no CI QUnit Assíncrono: Start/Stop
  54. 54. QUnit Page
  55. 55. QUnit Page Javascript Foco em waits Qualquer browser
  56. 56. @andreitognolo github.com/andreitognolo andreitognolo@gmail.com Obrigado! is hiring! http://join.thoughtworks.com/ @snap_ci
  57. 57. 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

×