2. 2003 - SENAI e o Poder da Programação Pascal.
2005 - Técnico em Informática com Habilitação em Redes de Computadores
2006/1 - Ciência da Computação (Unisul)
2006/2 - Técnico de Informática (Tractebel Energia/Consult System)
2007/1 - PUIC: Testes, CMMI e Extreme Programming
2007/2 – Nexxera Techpeople
2008 - Testes Automatizados (Techpeople)
2009/1 - SCJP 6.0
2009/2 - Ágiles 2009 (1º Coding Dojo)
2010/1 - TCC: Shell para desenvolvimento de Sistemas Especialistas na Web.
0% de cobertura de Testes Automatizados == Estou até hoje para disponibilizar o fonte.
2010/2 - MPS.BR Nível F (Techpeople)
2011/1 - CMMI ML2 (Techpeople)
2011/2 - Bacharel em Ciência da Computação (Unisul)
2011/3 – DojoTuba
2011/4 - Consultor MPS.BR
2011/5 – Fork In Tuba
3. 1. Quem já ouviu falar e sabe o que são Testes
Automatizados?
2. Quem já usou algum tipo de Teste Automatizado em
alguma aplicação que desenvolveu
profissionalmente?
3. Quem FREQUENTEMENTE faz Testes
Automatizados?
4. Quem SEMPRE faz Testes Automatizados?
5. Quem faz TDD do início ao fim?
4. Com que linguagem de programação você trabalha?
5. Em uma palavra:
Feedback
Em uma frase:
“Executar o programa com alguma(s)
entrada(s) e conferir visualmente os
resultados obtidos” AgilCoop/USP
6. “É o processo de escrita de uma programa de
computador para realizar o teste de software.”
Wikipédia
7. “Uso de software para a controlar a execução do teste de
software, comparando RESULTADOS ESPERADOS com
os RESULTADOS REAIS.” Wikipédia
8.
9.
10. Projeto sem Testes Automatizados = Medo de
Refatorar o Código e a Arquitetura = Código Imundo =
Baixa Produtividade e Alta Taxa de retrabalho (BUGs)
= Pessoas desmotivadas = Go Horse Process
Projeto com Testes Automatizados = Segurança ao
Refatorar o Código e a Arquitetura = Código Limpo =
Alta Produtividade e Baixa Taxa de retrabalho (BUGs)
= Pessoas motivadas = $$$
11. “São os testes de unidade que mantêm seus códigos flexíveis,
reutilizáveis e passíveis de manutenção.”
“Sem testes, cada modificação pode gerar um bug e você ficará
relutante em fazer mudanças.”
“Quanto maior a cobertura dos seus testes menor o medo.”
“Ter uma coleção de testes de unidade automatizados que cubram o
código de produção é o segredo para manter seu projeto e arquitetura
os mais limpos possíveis.”
“Se não mantiver os testes limpos, irá perdê-los.”
12. Importância dos Testes Automatizados em Linguagens
Dinâmicas X Importância dos Testes Automatizados
em Linguagens Compiladas?
13. O teste é modelado conhecendo-se a estrutura interna
do sistema
Aplicável somente quando se conhece o algoritmo
O calculo da Cobertura de Testes é totalmente baseada
em princípios Caixa Branca
Teoricamente, cada caminho possível ao longo do
código deve ser testado
Teste Estrutural
14. O teste é modelado sem o conhecimento da estrutura
interna do sistema
Aplicável em todas as fases/tipos de Testes.
Se concentram e se baseiam na entrada e saída da
unidade.
Teste Funcional
15. O primeiro tipo de teste que se deve fazer
Uma unidade pode ser entendida como o menor
trecho de código de um sistema que pode ser testado.
Normalmente um método.
Focado em um trecho específico do código, desta
forma os erros encontrados são facilmente localizados,
diminuindo o tempo gasto com depuração.
Exemplo da Engenharia aeronáutica
19. Sucede o Teste de Unidade
Módulos são combinados e testados em grupo
Onde vários Mock Objects são removidos
Antecede o Testes de Aceitação, ou os testes onde o
sistema está completamente integrado
20. Sistema completamente integrado
“Última ação de teste antes da implantação do software. A
meta do teste de aceitação é verificar se o software está
pronto e pode ser usado pelos usuários finais para executar
as funções e as tarefas para as quais foi criado.” RUP
Testes caixa preta que são realizados através da interface de
usuário, que pode ser, por exemplo, um console textual,
uma interface de uma aplicação local ou uma interface Web
Validação do sistema do ponto de vista do Cliente, do
negócio.
21. Selenium Server o interpretador, é um server em
java, um JARZÃO
Selenium IDE (FIREFOX) grava e exporta testes
para todos os clients
Selenium Client (Várias Linguagens: Java, PHP, Ruby,
Python) Não tem desculpas para não usar!
22.
23. Fast – Quando os testes rodam devagar, você não desejará
executá-los com frequência.
Idenpendent – Quando os testes dependem um dos outro,
se o primeiro falhar causará um efeito dominó de falhas,
dificultando o diagnóstico.
Repeatable – Caso os testes não p0ssam ser repetidos em
qualquer ambiente, você sempre terá uma desculpa para
não manter os testes VERDES.
Self-validating – Asserts TRUE ou FALSE, sempre! Evita
comparações manuais.
Timely – Escrever os testes na hora certa, que é em 99%
das vezes antes. Se criá-los depois, o teste de código de
produção poderá fica mais difícil.
24. Atuar como especificação das funcionalidades
Atuar como repelente de bugs
Ajudar a achar defeitos no sistema em teste
Atuar como documentação executável
Atuar como rede de segurança para mudanças
Não fazer mal ao sistema em teste
Referência: AgilCoop/USP
26. Reconhecimento que Desenvolvimento de software é uma
tarefa complexa.
A automação dos testes dá segurança à equipe para fazer
alterações no código, seja por manutenção, refatoração ou
até mesmo para adição de novas funcionalidades.
No começo e por muito tempo vai doer fazer, vai ser difícil,
é uma mudança de paradigma. Pratique!
Fazer testes automatizados está relacionado com ser
ou não profissional!
Precisamos convencer nossos superiores que testes
automatizados são importantes e que são eles que vão
ganhar com isso!