77
System.out.println("Teste"); Jevô Paulo César M. Jeveaux www.jeveaux.com www.portaljava.com

Testes

Embed Size (px)

Citation preview

Page 1: Testes

System.out.println("Teste");

JevôPaulo César M. Jeveaux

www.jeveaux.comwww.portaljava.com

Page 2: Testes

Jeveaux

Desenvolvedor Java há 7++ anos

Administrador do PortalJava e ESJUG

Palestrante-Entusiasta-Evangelista Java

Entusiasta Rails, Python e Agile

Curioso e aprendendo Erlang =)

Page 3: Testes

| Sobre o que vamos falar

● Introdução

● Bug

● Seja profissional

● O que são testes

● Preciso de testes? Por que? Garanta-se!

● TDD

● BDD

● Conclusões

Page 4: Testes

| Introdução

Desenvolvimento de software

Page 5: Testes
Page 6: Testes
Page 7: Testes

| Introdução

Desenvolvimento de software

Falhas de Software

Page 8: Testes
Page 9: Testes

1/3 poderiam ser evitadas

[1]

Page 10: Testes

1/3 poderiam ser evitadas

~50% são detectadasem produção

[1]

Page 11: Testes

| Introdução

Desenvolvimento de software

Falhas de Software

Falhas custam caro

Page 12: Testes

[1][2]

$$$$$$

Page 13: Testes

[1][2]

$$$$$$

$$$$$$

Page 14: Testes

[1][2]

60 bilhões ++prejuízo anual

$$$$$$

$$$$$$

$$$$$$

Page 15: Testes

| Introdução

Desenvolvimento de software

Falhas de Software

Falhas custam caro

Testes não evitam falhas

Page 16: Testes
Page 17: Testes

| Introdução

Desenvolvimento de softwareFalhas de SoftwareFalhas custam caro

Testes não evitam falhasTestes identificam as falhas antes delas

acontecerem

Page 18: Testes

| Bug

Page 19: Testes
Page 20: Testes
Page 21: Testes

Bugs foram os insetosnas válvulas do Eniac...

Page 22: Testes

Bugs foram os insetosnas válvulas do Eniac...

… e são os insetos novidro do carro

Page 23: Testes

Bugs foram os insetosNas válvulas do Eniac...

… e são os insetos novidro do carro

Mas também são os muitosproblemas que somente osusuários encontrarão

Page 24: Testes

Bugs foram os insetosNas válvulas do Eniac...

… ou os insetos novidro do carro

Mas também são os muitosproblemas que somente osusuários encontrarão

Page 25: Testes

Bugs vão existir. Sempre!

Page 26: Testes

Bugs vão existir. Sempre!

Não existe engenharia perfeita

Page 27: Testes

Bugs vão existir. Sempre!

Não existe engenharia perfeita

Antes de corrigir um bug, escrevaum teste que o detecte

Page 28: Testes

Bugs vão existir. Sempre!

Não existe engenharia perfeita

Antes de corrigir um bug, escrevaum teste que o detecte

XP

Page 29: Testes

???

Page 30: Testes

Não esse, mas esse

Page 31: Testes

Não esse, mas esse

www.extremeprogramming.org

Page 32: Testes

| Garanta o que você faz seja profissional

Page 33: Testes

Cliente:

Isso aqui não está funcionando!

Programador:

Mas hanm!? Aqui funciona.

Page 34: Testes

Depois eu testo...

Page 35: Testes

Depois eu testo...

… estou sem tempopara testar agora...

Page 36: Testes

Depois eu testo...

… estou sem tempopara testar agora...

...funcionou! Não mudemais nada agora.

Page 37: Testes

Depois eu testo...

… estou sem tempopara testar agora...

...funcionou! Não mudemais nada agora.

Programadores profissionaisescrevem testes

E ponto final!

[4]

Page 38: Testes

| Mas o que são testes?

Page 39: Testes

| O é um teste?

Um teste é uma verificação feita sobre um

código ou fragmento de código para garantir

que uma determinada entrada produza,

sempre, uma saída esperada

Page 40: Testes

| O teste é

- Pontual

- Finito

- Previsível

Page 41: Testes

| O teste é

- Pontual

- Finito

- Previsível

O teste deve ser |

- Simples

- Conciso

- Legível

Page 42: Testes

Unidade de código

Page 43: Testes

Unidade de código

Parte dasolução

Page 44: Testes

Unidade de código

Parte dasolução

Escrito pelo programador

Page 45: Testes

Unidade de código

Parte dasolução

Escrito pelo programador

Atualizados

Page 46: Testes

Aceitação

Page 47: Testes

Aceitação

Soluçãocompleta

Page 48: Testes

Aceitação

Soluçãocompleta

Integração

Page 49: Testes

Aceitação

Soluçãocompleta

Integração

Funcionais

Page 50: Testes

Aceitação

Soluçãocompleta

Integração

Atualizados

Funcionais

Page 51: Testes

| Testes Unitários

- Testam partes isoladas da solução

- Partes do código

- Simule as dependências (Mocks,

fixtures)

- Fundamental para TDD/BDD

Page 52: Testes

| Testes de Aceitação

- Testam histórias/funcionalidades/caso

de uso

- Envolvem uma ou mais partes da

solução

Page 53: Testes

| Testes de Integração

- Testam a integração da solução com

agentes externos

- Pode ser feito isolado ou com a solução

completa

- Geralmente não é muito praticado

Page 54: Testes

| Mas eu preciso de testes?

Page 55: Testes

SIM

Page 56: Testes

SIM

Page 57: Testes

Você:

- Deve verificar o código. Sempre!

- Deve garantir que os requisitos estãoImplementados

- Deve ter segurança para fazer alterar

Page 58: Testes

Você:

- Precisa entregar rápido

- Precisa entregar com qualidade

- Precisa garantir a qualidade do que será entregue

Page 59: Testes

| Como você se garante?

Page 60: Testes

| Como você se garante?

Código alterado OK

Bug Encontrado

Page 61: Testes

| Como você se garante?

Código alterado OK

Bug Encontrado

Page 62: Testes

| Como você se garante?

Código alterado OK

Bug Encontrado

BUG

ERRO

????

Page 63: Testes

| Garanta-se nos testes

● Aplicações cobertas por bons testes propiciam:

● Facilidade de manutenção;

● Facilidade para inclusão de novos membros no time

de desenvolvimento;

● Redução de problemas e custos nas manutenções;

Page 64: Testes

| Garanta-se nos testes

● Aplicações cobertas por bons testes propiciam:

● Facilidade de manutenção;

● Facilidade para inclusão de novos membros no time

de desenvolvimento;

● Redução de problemas e custos nas manutenções;

● Telefone silencioso nas madrugadas!

Page 65: Testes

| Garanta-se nos testes

Código alterado OK

Bug Encontrado

OK

OK

OK

Page 66: Testes

| Test Driven Development

Escreva umTeste

Escreva códigoque passeno teste

refatore

Page 67: Testes

| TDD

● Escreva o teste antes da implementação

● Escreva somente código para passar no teste

● Escreva testes pequenos

[10]

Page 68: Testes

| Behaviour Driven Development

Escreva umTeste

Escreva códigoque passeno teste

refatore

Page 69: Testes

| BDD

● Escreva o teste antes da implementação

● Escreva somente código para passar no teste

● Escreva testes pequenos

Page 70: Testes

TDD? BDD? Copy&Paste?

Page 71: Testes

TDD? BDD? Copy&Paste?

TDD

BDD

Código

Comportamento

Page 72: Testes

| Conclusões

● Testes colaboram para o aumento da qualidade dos sistemas

● Desenvolvedores ficam mais corajosos e confiantes ao programar

● O software cresce de forma ordenada e com qualidade de design

● O software se adapta com mais facilidade a mudanças

Page 73: Testes

| Conclusões

● Demora mais?

● No início é necessário escrever muitos testes

● Depois da inércia a suite de testes está pronta e escrevem-se menos testes

● Certeza de que a implementação está funcionando

● Maioria dos bugs encontrados em tempo de desenvolvimento

● Bugs de produção são encontrados e corrigidos com muito mais velocidade

● Então no fim das contas demora-se muito menos tempo e com muito mais qualidade

[10]

Page 74: Testes

| Conclusões

TDD ou BDD?

Não importa! Faça qualquer umdesde que faça direito

Page 75: Testes

Dúvidas?

já podem acordar

Page 76: Testes

| Referências[1] - NIST - http://www.nist.gov/public_affairs/releases/n02-10.htm[2] - ImproveIt - http://www.improveit.com.br/xp/praticas/tdd[3] - Caelum - http://blog.caelum.com.br/2006/09/08/voce-acredita-no-seu-codigo/[4] – Fragmental - Shoes - http://blog.fragmental.com.br/2007/10/31/programadores-profissionais-escrevem-testes-ponto-final/[5] – Marcos Pereira – http://marcospereira.wordpress.com/2007/11/27/desenvolvedores-odeiam-testar [6] – Wikipedia – http://en.wikipedia.org/wiki/Test-driven_development[7] - TDD - http://www.testdriven.com[8] - Brod - http://www.brod.com.br [9] – java.net - http://wiki.java.net/bin/view/People/SmellsToRefactorings [10] – Palestra Desenvolvimento Guiado por Testes (TDD) – Guilherme Chapiewski

Page 77: Testes

System.out.println("Teste");

JevôPaulo César M. Jeveaux

www.jeveaux.comwww.portaljava.com