O documento apresenta uma palestra sobre testes automatizados em aplicações Java EE. Resume os tópicos da importância dos testes, conceitos de validação e verificação, técnicas de teste como caixa branca e preta, e ferramentas como JUnit e OpenEJB para realizar testes unitários e de integração.
2. Apresentação
Quem somos nós?
• Jefferson Moreira (www.jeffmor.com)
• Ciência da Computação / Engenharia
de Software OO.
• Desenvolvedor e Coordenador da
Agence
• Desenvolvedor desde 2002
• Com java desde 2003
• Instrutor do SENAC
• Coordenador do JUGMS
3. Apresentação
Quem somos nós?
• Saulo Arruda (http://sauloarruda.eti.br)
• Especialista em Melhoria do Processo
de Software pela UFLA;
• Diretor de TI da Agence Consultoria;
• Diretor Pedagógico da Agence
Educacional;
• 10 anos de experiência em projetos de
software;
• Coordenador do JUG-MS
5. Diagnóstico
Importância
• Gerar software funcionando
• Confiança no produto
• Diagnosticar problemas
• Qualidade do software
• Redução de riscos
5
6. Diagnóstico
Conceitos
• Teste: é a atividade de executar um
software com o objetivo de revelar falhas
• Falha: desvio do comportamento
especificado
• Erro: origem da falha
6
7. Diagnóstico
Conceitos
• Validação
– Estamos fazendo o sistema certo?
– Ponto de vista do usuário
7
8. Diagnóstico
Conceitos
• Verificação
– Estamos fazendo certo o
sistema?
– Ponto de vista do
desenvolvedor
8
9. Diagnóstico
Quando eu começo a testar?
• Na fase inicial: especificação de
requisitos
9
12. Diagnóstico
Técnicas de Teste
• Caixa-cinza
• Regressão
• Não funcionais
– Desempenho
– Carga
– Usabilidade)
12
13. Diagnóstico
Fases
• Unitário
– Evita bug com código mal
feito
– Confiança no sistema
– Alterações sem medo
– Testa a falha e o sucesso
– Utilização de Mocks
– Serve como métrica
13
14. Diagnóstico
Fases
• Integração
– É essencial
– Difícil de testar todas
as situações.
– Massa de Dados
– Integração de
serviços
– Integração !=
Interface
14
15. Diagnóstico
Fases
• Funcional
– Funcionalidades
– Requisitos
– Regra de
Negócios
– Tem tela, mas
não é tela.
15
21. Agenda
Estudo de Caso
• Aplicação JEE que usa EJB e JPA
• Testes unitários e de integração (usando
openejb)
• Classes base utilitárias para
implementação de testes de integração;
• Uso de fixtures em arquivos XML;
• Projeto de exemplo para uma folha de
pagamento de desenvolvedores;
21
25. Alta
Conclusão
• Dificuldades com testes:
– Massa de dados: resolvemos com a
criação de fixtures. Temos projetos com
mais de 10.000 registros inseridos por
fixtures geradas.
– Teste no container: openejb tem se
mostrado uma boa solução, sendo muito
mais leve para testes de integração que
JBoss, Glassfish, etc.
– Independência: usar um banco de
25
26. Alta
Extensões futuras
• Gerador de fixtures a partir de planilhas
(estamos testando a versão beta);
• Auto-teste a partir de condições pré-
estabelecidas (versão alfa);
• Integração com JUnitPerf para testes de
performance;
• Isto é um Pattern ou um Framework?
26
30. Dúvidas
Perguntas?
• Vocês vão disponibilizar o código-
fonte?
– http://esteroides.agence.com.br/
• Posso colaborar com essa “idéia”?
27
31. Dúvidas
Perguntas?
• Vocês vão disponibilizar o código-
fonte?
– http://esteroides.agence.com.br/
• Posso colaborar com essa “idéia”?
– Deve! Quanto mais melhor!
27
32. Dúvidas
Perguntas?
• Vocês vão disponibilizar o código-
fonte?
– http://esteroides.agence.com.br/
• Posso colaborar com essa “idéia”?
– Deve! Quanto mais melhor!
• Vocês já usaram DBUnit?
27
33. Dúvidas
Perguntas?
• Vocês vão disponibilizar o código-
fonte?
– http://esteroides.agence.com.br/
• Posso colaborar com essa “idéia”?
– Deve! Quanto mais melhor!
• Vocês já usaram DBUnit?
– Sim, é um saco!
27