O documento discute testes automatizados de software usando a técnica de Test Driven Development (TDD). Apresenta os principais tipos de testes como unidade, integração e aceitação. Explica o ciclo TDD de escrever testes primeiro para codificar (vermelho-verde-amarelo) e como isso ajuda no design do sistema.
2. Bruno Maomeh
Um grande aficionado pelo conhecimento,
admirador do desenvolvimento de software
e metodologias ágeis. Trabalhando por mais
de 9 anos com desenvolvimento, eu também
sou entusiasta por comunidades de
desenvolvimento de sistemas, atuando
como coordenador do Grupo de Usuários
Java do Rio Grande do Sul (RSJug) e do
JavaSF International Group (JavaSF).
3. Matheus Fechine
Graduado em Ciências da Computação
com pós graduação em Desenvolvimento
de Software com ênfase em arquitetura
java, ambas pela Universidade de
Fortaleza (UNIFOR), atua no mercado
como desenvolvedor desde 2008 e
Coordenador da comunidade JavaCE.
Sente-se torturado ao ver um código sem
cobertura de teste. Pai do Levi, torcedor do
Ceará, faixa azul de jiu jitsu, apreciador de
Punk Rock e baixista nas horas vagas.
5. O que é um teste?
Um teste é tudo aquilo que
assegura que alguma coisa
está funcionando.
6. O que é um teste?
"Afirma-se que o teste de software é um
processo, ou uma série de processos, projetado
para se certificar a respeito do código de
computador, de fazer o que foi designado a
cumprir, e sem realizar nada que não seja
intencional.” (Glenford J. Myers - 2004)
7. Testes Manuais
● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
● Verifica se a correção funcionou.
8. Testes Manuais
● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
● Verifica se a correção funcionou.
9. ● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
● Verifica se a correção funcionou.
Testes Manuais
10. ● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
● Verifica se a correção funcionou.
Testes Manuais
11. ● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
● Verifica se a correção funcionou.
Testes Manuais
12. ● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
● Verifica se a correção funcionou.
Testes Manuais
13. ● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
● Verifica se a correção funcionou.
Testes Manuais
14. ● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
● Verifica se a correção funcionou.
Testes Manuais
15. Testes Manuais
● Faz alteração no código;
● Levanta o Tomcat;
● Abre o Chrome;
● Faz login na aplicação;
● Entra na página do formulário;
● Preenche um formulário;
● Envia o formulário;
● Verifica se a correção funcionou;
● Faz alteração no código.
19. Tipos de testes
Teste de unidade
Teste de integração
Teste de aceitação
Teste de segurança
Teste de performance
Teste de configuração
Teste de regressão
20. Tipos de testes
Teste de unidade
Teste de integração
Teste de aceitação
Teste de segurança
Teste de performance
Teste de configuração
Teste de regressão
22. Teste de unidade
● Ajuda na rastreabilidade de
bugs no sistema;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como documentação do
código;
● Auxilia na criação do design do
sistema.
23. Teste de unidade
● Ajuda na rastreabilidade de bugs
no sistema;
● Previnem regressão do
código;
● Incentivam a refatoração do
código;
● Servem como documentação do
código;
● Auxilia na criação do design do
sistema.
24. Teste de unidade
● Ajuda na rastreabilidade de bugs
no sistema;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como documentação do
código;
● Auxilia na criação do design do
sistema.
25. Teste de unidade
● Ajuda na rastreabilidade de bugs
no sistema;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como
documentação do código;
● Auxilia na criação do design do
sistema.
26. Teste de unidade
● Ajuda na rastreabilidade de bugs
no sistema;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como documentação do
código;
● Auxilia na criação do
design do sistema.
27. NÃO é Teste de Unidade
● Se ele conversa com o banco de dados;
● Se ele se comunica através da rede;
● Se ele toca o sistema de arquivos;
● Se ele não pode ser executado ao mesmo tempo
de outros testes de unidade;
● Se for necessário configurar ou preparar o
ambiente para executá-los.
29. Teste de integração
● Garante a comunicação
com outros módulos ou
sistema;
● Previnem regressão do
código;
● Incentivam a refatoração do
código;
● Servem como
documentação de código e
de api.
30. Teste de integração
● Garante a comunicação
com outros módulos ou
sistema;
● Previnem regressão do
código;
● Incentivam a refatoração do
código;
● Servem como
documentação de código e
de api.
31. Teste de integração
● Garante a comunicação
com outros módulos ou
sistema;
● Previnem regressão do
código;
● Incentivam a
refatoração do código;
● Servem como
documentação de código e
de api;
32. Teste de integração
● Garante a comunicação
com outros módulos ou
sistema;
● Previnem regressão do
código;
● Incentivam a refatoração do
código;
● Servem como
documentação de
código e de api.
34. Teste de aceitação
● Garante a funcionalidade do
sistema como um todo;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como documentação de
código e de api;
● Simula o teste com o usuário
final.
35. Teste de aceitação
● Garante a funcionalidade do
sistema como um todo;
● Previnem regressão do
código;
● Incentivam a refatoração do
código;
● Servem como documentação de
código e de api;
● Simula o teste com o usuário
final.
36. Teste de aceitação
● Garante a funcionalidade do
sistema como um todo;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como documentação de
código e de api;
● Simula o teste com o usuário
final.
37. Teste de aceitação
● Garante a funcionalidade do
sistema como um todo;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como
documentação de código e
de api;
● Simula o teste com o usuário
final.
38. Teste de aceitação
● Garante a funcionalidade do
sistema como um todo;
● Previnem regressão do código;
● Incentivam a refatoração do
código;
● Servem como documentação de
código e de api;
● Simula o teste com o
usuário final.
42. O que é TDD?
TDD é uma prática de
desenvolvimento de software
onde todo o código do sistema
é escrito depois de escrever
testes automatizados.
"We never have enough time for testing, so let's just write the test first." (Kent Beck)
43. O que é TDD?
Ciclo do TDD: Vermelho-Verde-Amarelo
44. O que é TDD?
Ciclo do TDD: Vermelho-Verde-Amarelo
45. O que é TDD?
Ciclo do TDD: Vermelho-Verde-Amarelo
46. O que é TDD?
Ciclo do TDD: Vermelho-Verde-Amarelo
47. O que é TDD?
Muito além de técnicas de "test-first"
● Auxilia na detecção de falhas no design do sistema.
● Também deve ter informações sobre o código testado.
Se um teste está ficando muito complicado, é um grande indício que
exista problema com o design.
É hora de refatorar!!