Testes - Pra quê - 2013

84
Testes pra que? @rodrigodealer sábado, 20 de julho de 13

description

Palestra apresentada no evento do Guru-CE dia 20/7

Transcript of Testes - Pra quê - 2013

Page 1: Testes - Pra quê - 2013

Testespra que?

@rodrigodealer

sábado, 20 de julho de 13

Page 2: Testes - Pra quê - 2013

Eu

sábado, 20 de julho de 13

Page 3: Testes - Pra quê - 2013

Pergunta

sábado, 20 de julho de 13

Page 4: Testes - Pra quê - 2013

Por quê?

sábado, 20 de julho de 13

Page 5: Testes - Pra quê - 2013

Noite de sono :-)

sábado, 20 de julho de 13

Page 6: Testes - Pra quê - 2013

Cliente satisfeito :D

sábado, 20 de julho de 13

Page 7: Testes - Pra quê - 2013

Todos felizes :-D

sábado, 20 de julho de 13

Page 8: Testes - Pra quê - 2013

Exemplo :-)

sábado, 20 de julho de 13

Page 9: Testes - Pra quê - 2013

(Ruby)

sábado, 20 de julho de 13

Page 10: Testes - Pra quê - 2013

E esse?

Meio grande, né?

sábado, 20 de julho de 13

Page 11: Testes - Pra quê - 2013

“Ruby é feito para ser bonito. Se está feio, está errado.”

Matz

sábado, 20 de julho de 13

Page 12: Testes - Pra quê - 2013

“Extract method” - Faz bem

Aquele if, else foi embora o/

sábado, 20 de julho de 13

Page 13: Testes - Pra quê - 2013

Código repetido

Variável desnecessária

Deletar código faz bem :Dsábado, 20 de julho de 13

Page 14: Testes - Pra quê - 2013

Ok, fiz esse refactoring, que garantia eu tenho que vai funcionar?

sábado, 20 de julho de 13

Page 15: Testes - Pra quê - 2013

Com testes!

sábado, 20 de julho de 13

Page 16: Testes - Pra quê - 2013

Testes unitários

sábado, 20 de julho de 13

Page 17: Testes - Pra quê - 2013

Certa vez um sábio disse:

A test is not a unit test if:* it talks to the database* it communicates across the network* it touches the file system* it can’t run at the same time as any of your other unit tests* you have to do special things to your environment (such as editing config files) to run itTests that do these things aren’t bad. Often they are worth writing, and they can be written in a unit test harness. However, it is important to keep them separate from true unit tests so that we can run the unit tests quickly whenever we make changes.

--

Ou um chapa disse em português:

Um teste não é um teste unitário se:- Comunica com o banco de dados- Comunica pela rede- “Toca” no sistema de arquivos- Se não pode ser rodado ao mesmo tempo de outros testes unitários- Se você tem que configurar determinadas coisas como arquivos de configuração

sábado, 20 de julho de 13

Page 18: Testes - Pra quê - 2013

Testar unitariamente é

sábado, 20 de julho de 13

Page 19: Testes - Pra quê - 2013

Testar a menor porção de código

sábado, 20 de julho de 13

Page 20: Testes - Pra quê - 2013

Devem rodar rapidamente, em poucos segundos

sábado, 20 de julho de 13

Page 21: Testes - Pra quê - 2013

Devem rodar rapidamente, em poucos segundos

Feedback rápido!

sábado, 20 de julho de 13

Page 22: Testes - Pra quê - 2013

Seu código vai sofrer um impacto grande a partir do momento que começar a escrever testes e

refatorar

sábado, 20 de julho de 13

Page 23: Testes - Pra quê - 2013

Seu código vai sofrer um impacto grande a partir do momento que começar a escrever testes e

refatorar

Como assim?

sábado, 20 de julho de 13

Page 24: Testes - Pra quê - 2013

Red - Green - Refactor

sábado, 20 de julho de 13

Page 25: Testes - Pra quê - 2013

Exemplo :-D

(Java)

(Camada de modelo)

sábado, 20 de julho de 13

Page 26: Testes - Pra quê - 2013

O que estou testando?

sábado, 20 de julho de 13

Page 27: Testes - Pra quê - 2013

Se esse método reflete o Enum

sábado, 20 de julho de 13

Page 28: Testes - Pra quê - 2013

Menor unidade, lembra?

sábado, 20 de julho de 13

Page 29: Testes - Pra quê - 2013

Testes de integração

sábado, 20 de julho de 13

Page 30: Testes - Pra quê - 2013

Rodam mais lentamente

sábado, 20 de julho de 13

Page 31: Testes - Pra quê - 2013

Fazem operações num banco de dados

Ou no sistema de arquivos

Existe I/O

Ou em rede

sábado, 20 de julho de 13

Page 32: Testes - Pra quê - 2013

Para que?

Meus dados estão vindo de forma correta?

Meus dados estão sendo gravados de forma correta?

Minha camada de modelo está se comunicando corretamente com o ORM?

sábado, 20 de julho de 13

Page 33: Testes - Pra quê - 2013

Que ferramentas posso usar?

RubyJava

sábado, 20 de julho de 13

Page 34: Testes - Pra quê - 2013

Testes de aceitação

sábado, 20 de julho de 13

Page 35: Testes - Pra quê - 2013

Pra que?

sábado, 20 de julho de 13

Page 36: Testes - Pra quê - 2013

Minha aplicação está com a camada de serviços bem testada

sábado, 20 de julho de 13

Page 37: Testes - Pra quê - 2013

E a integração com a camada de visão?

sábado, 20 de julho de 13

Page 38: Testes - Pra quê - 2013

TextTextText

JavaScript não funciona!

sábado, 20 de julho de 13

Page 39: Testes - Pra quê - 2013

Que ferramentas uso?

sábado, 20 de julho de 13

Page 40: Testes - Pra quê - 2013

Que ferramentas uso?

sábado, 20 de julho de 13

Page 41: Testes - Pra quê - 2013

Eu testo toda a aplicação?

sábado, 20 de julho de 13

Page 42: Testes - Pra quê - 2013

Eu testo toda a aplicação?

Depende.

sábado, 20 de julho de 13

Page 43: Testes - Pra quê - 2013

Porque?

sábado, 20 de julho de 13

Page 44: Testes - Pra quê - 2013

Porque?

Testes de aceitação demoram mais a rodar

sábado, 20 de julho de 13

Page 45: Testes - Pra quê - 2013

Porque?

Testes de aceitação demoram mais a rodar

Tem feedback demorado

sábado, 20 de julho de 13

Page 46: Testes - Pra quê - 2013

Porque?

Testes de aceitação demoram mais a rodar

Tem feedback demorado

Escrever os testes também demora

sábado, 20 de julho de 13

Page 47: Testes - Pra quê - 2013

Porque?

Testes de aceitação demoram mais a rodar

Tem feedback demorado

Escrever os testes também demora

sábado, 20 de julho de 13

Page 48: Testes - Pra quê - 2013

Porque?

Testes de aceitação demoram mais a rodar

Tem feedback demorado

Escrever os testes também demora

Ou seja...

sábado, 20 de julho de 13

Page 49: Testes - Pra quê - 2013

Demora!

sábado, 20 de julho de 13

Page 50: Testes - Pra quê - 2013

Por isso...

sábado, 20 de julho de 13

Page 51: Testes - Pra quê - 2013

Por isso...É aconselhável testar apenas as telas mais importantes

sábado, 20 de julho de 13

Page 52: Testes - Pra quê - 2013

Por isso...É aconselhável testar apenas as telas mais importantes

Telas mais utilizadas ou com nível de complexidade maior

sábado, 20 de julho de 13

Page 53: Testes - Pra quê - 2013

Por isso...É aconselhável testar apenas as telas mais importantes

Telas mais utilizadas ou com nível de complexidade maior

Contanto que faça!

sábado, 20 de julho de 13

Page 54: Testes - Pra quê - 2013

Junte tudo

Testes unitários + de integração + de aceitação

E coloque em um servidor de integração contínua

sábado, 20 de julho de 13

Page 55: Testes - Pra quê - 2013

Existem vários

Jenkins TeamCity CruiseControl

sábado, 20 de julho de 13

Page 56: Testes - Pra quê - 2013

Feedback rápido!

sábado, 20 de julho de 13

Page 57: Testes - Pra quê - 2013

Feedback rápido!Via email

sábado, 20 de julho de 13

Page 58: Testes - Pra quê - 2013

Feedback rápido!Via email

Via IDE

sábado, 20 de julho de 13

Page 59: Testes - Pra quê - 2013

Feedback rápido!Via email

Via IDE

Via IM

sábado, 20 de julho de 13

Page 60: Testes - Pra quê - 2013

Feedback rápido!Via email

Via IDE

Via IM

...

sábado, 20 de julho de 13

Page 61: Testes - Pra quê - 2013

Quanto antes você for avisado que algo está errado, melhor!

sábado, 20 de julho de 13

Page 62: Testes - Pra quê - 2013

Cobertura de testes

sábado, 20 de julho de 13

Page 63: Testes - Pra quê - 2013

Cobertura de testes100% de cobertura?

sábado, 20 de julho de 13

Page 64: Testes - Pra quê - 2013

Cobertura de testes100% de cobertura?

É importante

sábado, 20 de julho de 13

Page 65: Testes - Pra quê - 2013

Cobertura de testes100% de cobertura?

É importante, mas não é tudo

sábado, 20 de julho de 13

Page 66: Testes - Pra quê - 2013

Como assim?

sábado, 20 de julho de 13

Page 67: Testes - Pra quê - 2013

Cobertura de testes100% de cobertura garante que o código está coberto

sábado, 20 de julho de 13

Page 68: Testes - Pra quê - 2013

Cobertura de testes100% de cobertura garante que o código está coberto

Mas não garante que está efetivamente testado

sábado, 20 de julho de 13

Page 69: Testes - Pra quê - 2013

E que critério eu utilizo?

sábado, 20 de julho de 13

Page 70: Testes - Pra quê - 2013

E que critério eu utilizo?

Bom senso

sábado, 20 de julho de 13

Page 71: Testes - Pra quê - 2013

E que critério eu utilizo?

Bom senso

sábado, 20 de julho de 13

Page 72: Testes - Pra quê - 2013

E que critério eu utilizo?Teste o que pode quebrar

sábado, 20 de julho de 13

Page 73: Testes - Pra quê - 2013

E o que eu não testo?1. Não precisa testar métodos da linguagem

sábado, 20 de julho de 13

Page 74: Testes - Pra quê - 2013

E o que eu não testo?1. Não precisa testar métodos da linguagem

2. Não precisa testar métodos do framework

sábado, 20 de julho de 13

Page 75: Testes - Pra quê - 2013

E o que eu não testo?1. Não precisa testar métodos da linguagem

2. Não precisa testar código dos frameworks

3. Não precisa testar código dos plugins

sábado, 20 de julho de 13

Page 76: Testes - Pra quê - 2013

E o que eu não testo?1. Não precisa testar métodos da linguagem

2. Não precisa testar código dos frameworks

3. Não precisa testar código dos plugins

Esse código já deveria estar testado, né?

sábado, 20 de julho de 13

Page 77: Testes - Pra quê - 2013

Para concluir...

sábado, 20 de julho de 13

Page 78: Testes - Pra quê - 2013

Para concluir...

Teste suas aplicações

sábado, 20 de julho de 13

Page 79: Testes - Pra quê - 2013

Para concluir...

Teste suas aplicações

Todo mundo agradece, lembra?

sábado, 20 de julho de 13

Page 80: Testes - Pra quê - 2013

Você Cliente

sábado, 20 de julho de 13

Page 81: Testes - Pra quê - 2013

Todos felizes :-D

sábado, 20 de julho de 13

Page 82: Testes - Pra quê - 2013

Sugestãohttp://www.infoq.com/br/presentations/o-que-nao-testar

http://www.infoq.com/br/news/2010/06/cobertura-testes-falsa-impressao

sábado, 20 de julho de 13

Page 83: Testes - Pra quê - 2013

Perguntas?

sábado, 20 de julho de 13

Page 84: Testes - Pra quê - 2013

Obrigado!

@rodrigodealer

sábado, 20 de julho de 13