57
Testes de UI não aceite mais falso negativos

Testes UI: Não aceite mais falso negativos

Embed Size (px)

Citation preview

Page 1: Testes UI: Não aceite mais falso negativos

Testes de UI não aceite mais falso negativos

Page 2: Testes UI: Não aceite mais falso negativos

@andreitognologithub.com/[email protected]

@snap_ci

Page 3: Testes UI: Não aceite mais falso negativos

Testes unitários

Teste de integração

Deploy QA

Deploy produção

Smoke test

Testes unitários UI Deploy

QADeploy

produçãoSmoke

test

Page 4: Testes UI: Não aceite mais falso negativos

São Paulo / Recife / Porto Alegre / Belo Horizonte

Page 5: Testes UI: Não aceite mais falso negativos

Negócio Sustentável

São Paulo / Recife / Porto Alegre / Belo Horizonte

Page 6: Testes UI: Não aceite mais falso negativos

Negócio Sustentável

Excelência de software

São Paulo / Recife / Porto Alegre / Belo Horizonte

Page 7: Testes UI: Não aceite mais falso negativos

Negócio Sustentável

Excelência de software

Justiça Social e Econômica

São Paulo / Recife / Porto Alegre / Belo Horizonte

Page 8: Testes UI: Não aceite mais falso negativos

Martin Fowler

ThreePillars [1]

São Paulo / Recife / Porto Alegre / Belo Horizonte

Page 9: Testes UI: Não aceite mais falso negativos

http://blog.ninlabs.com/2013/01/programmer-interrupted/

Rápida definição: falso negativos

Page 10: Testes UI: Não aceite mais falso negativos

Rápida definição: falso negativos

flaky test / non-determinism

Page 11: Testes UI: Não aceite mais falso negativos

http://blog.ninlabs.com/2013/01/programmer-interrupted/

Testes automatizados, por onde começar?

Page 12: Testes UI: Não aceite mais falso negativos

2007/2008

Testes automatizados, por onde começar?

Page 13: Testes UI: Não aceite mais falso negativos

Testes automatizados, por onde começar?

Page 14: Testes UI: Não aceite mais falso negativos

Testes automatizados, por onde começar?

Page 15: Testes UI: Não aceite mais falso negativos

Independente de implementação

Lentos

Falso negativos

Fácil de criar Difícil de manter

Testes de UI

Testes automatizados, por onde começar?

Page 16: Testes UI: Não aceite mais falso negativos

UI

Service

Unit

Testes automatizados, por onde começar?

Page 17: Testes UI: Não aceite mais falso negativos

UI

Service

Unit

Testes automatizados, por onde começar?

Page 18: Testes UI: Não aceite mais falso negativos

http://blog.ninlabs.com/2013/01/programmer-interrupted/

Vamos acabar com falso negativos nos testes de UI

Page 19: Testes UI: Não aceite mais falso negativos

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

Page 20: Testes UI: Não aceite mais falso negativos

Vamos acabar com falso negativos nos testes de UI

35,63% dos repositórios fizeram rerun (*)

* Referente ao mês de Junho

Page 21: Testes UI: Não aceite mais falso negativos

Testes de UI: zero

falso negativos

Testes de UI: não aceitei mais falso negativos

Vamos acabar com falso negativos nos testes de UI

Page 22: Testes UI: Não aceite mais falso negativos

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

Page 23: Testes UI: Não aceite mais falso negativos

Testes integrados UI Deploy

QADeploy

produçãoTestes

unitários

Vamos acabar com falso negativos nos testes de UI

Page 24: Testes UI: Não aceite mais falso negativos

Testes integrados UI Deploy

QADeploy

produçãoTestes

unitários Flaky tests

Vamos acabar com falso negativos nos testes de UI

Page 25: Testes UI: Não aceite mais falso negativos

http://blog.ninlabs.com/2013/01/programmer-interrupted/

Criando UI testes à prova de balas(quase)

Page 26: Testes UI: Não aceite mais falso negativos

Criando UI testes (quase) à prova de balas

Page 27: Testes UI: Não aceite mais falso negativos

Criando UI testes (quase) à prova de balas

Page 28: Testes UI: Não aceite mais falso negativos

Criando UI testes (quase) à prova de balas

Page 29: Testes UI: Não aceite mais falso negativos

Criando UI testes (quase) à prova de balas

Page 30: Testes UI: Não aceite mais falso negativos

Criando UI testes (quase) à prova de balas

Page 31: Testes UI: Não aceite mais falso negativos

Criando UI testes (quase) à prova de balas

Page 32: Testes UI: Não aceite mais falso negativos

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

Page 33: Testes UI: Não aceite mais falso negativos

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

Page 34: Testes UI: Não aceite mais falso negativos

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

Page 35: Testes UI: Não aceite mais falso negativos

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

Page 36: Testes UI: Não aceite mais falso negativos

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

Page 37: Testes UI: Não aceite mais falso negativos

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

Page 38: Testes UI: Não aceite mais falso negativos

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

Page 39: Testes UI: Não aceite mais falso negativos

Criando UI testes (quase) à prova de balas

Por que UI testes são mais propensos a falso negativos?

Sim, requisições assíncronas!

Page 40: Testes UI: Não aceite mais falso negativos

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

Page 41: Testes UI: Não aceite mais falso negativos

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"

Page 42: Testes UI: Não aceite mais falso negativos

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"

Page 43: Testes UI: Não aceite mais falso negativos

Criando UI testes (quase) à prova de balas

Agora vamos implementar os outros testes necessários!

Page 44: Testes UI: Não aceite mais falso negativos

Criando UI testes (quase) à prova de balas

Page 45: Testes UI: Não aceite mais falso negativos

http://blog.ninlabs.com/2013/01/programmer-interrupted/

Exemplo em Selenium

Page 46: Testes UI: Não aceite mais falso negativos

Exemplo em Selenium

Page 47: Testes UI: Não aceite mais falso negativos

http://blog.ninlabs.com/2013/01/programmer-interrupted/

Mas, não se iluda, um dia algum teste vai falhar no CI

Page 48: Testes UI: Não aceite mais falso negativos

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

Page 49: Testes UI: Não aceite mais falso negativos

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 browserAinda vamos

evoluir

Page 50: Testes UI: Não aceite mais falso negativos

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) CapybaraDriver

Firefox

Chrome

PhantomJS

Page 51: Testes UI: Não aceite mais falso negativos

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

Page 52: Testes UI: Não aceite mais falso negativos

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

Page 53: Testes UI: Não aceite mais falso negativos

Mas, não se iluda, um dia algum teste vai falhar no CI

QUnit

Assíncrono: Start/Stop

Page 54: Testes UI: Não aceite mais falso negativos

http://blog.ninlabs.com/2013/01/programmer-interrupted/

QUnit Page

Page 55: Testes UI: Não aceite mais falso negativos

http://blog.ninlabs.com/2013/01/programmer-interrupted/

QUnit Page

JavascriptFoco em

waitsQualquer browser

Page 56: Testes UI: Não aceite mais falso negativos

@andreitognologithub.com/[email protected]

Obrigado! is hiring!

http://join.thoughtworks.com/

@snap_ci

Page 57: Testes UI: Não aceite mais falso negativos

http://blog.ninlabs.com/2013/01/programmer-interrupted/

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