introdução a testes automatizados
DESCRIPTION
TRANSCRIPT
Thiago Ghisi (@thiagoghisi)
Introdução a Testes Automatizados
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
Quem?
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?
Enquete 1:
Com que linguagem de programação você trabalha?
Enquete 2:
Em uma palavra: Feedback
Em uma frase: “Executar o programa com
alguma(s) entrada(s) e conferir visualmente os resultados obtidos” AgilCoop/USP
Teste de Software
“É o processo de escrita de uma programa de computador para realizar o teste de software.” Wikipédia
Automação de Testes
“Uso de software para a controlar a execução do teste de software, comparando RESULTADOS ESPERADOS com os RESULTADOS REAIS.” Wikipédia
Testes Automatizados
Porque fazer Testes Automatizados?
Porque fazer Testes Automatizados?
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 = $$$
Porque fazer Testes Automatizados?
“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.”
Porque fazer Testes Automatizados?
Importância dos Testes Automatizados em Linguagens Dinâmicas X Importância dos Testes Automatizados em Linguagens Compiladas?
Enquete 3:
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
Abordagem de Teste caixa branca
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
Abordagem de Teste caixa preta
O primeiro tipo de teste que se deve fazerUma 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
Testes de Unidade
Teste de Unidade - TDD
Quer aprender a fazer TDD?
xUnit (API)JUnit com EclEmmaMock Objects?
Teste de Unidade - Demo
Sucede o Teste de UnidadeMódulos são combinados e testados em grupoOnde vários Mock Objects são removidosAntecede o Testes de Aceitação, ou os testes
onde o sistema está completamente integrado
Testes de Integração
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.
Testes de Aceitação
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!
Teste de Aceitação - Demo
Testes de Stress e Desempenho - Dica
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.
Características de bons Testes Automatizados (de Unidade)
Atuar como especificação das funcionalidadesAtuar como repelente de bugsAjudar a achar defeitos no sistema em testeAtuar como documentação executávelAtuar como rede de segurança para
mudançasNão fazer mal ao sistema em teste
Referência: AgilCoop/USP
Testes Automatizados devem...
Seja Professional! - Vídeo Uncle Bob
Link Vídeo: http://www.youtube.com/watch?v=9XwiUKXZm-o
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!
Conclusões
Livro Código Limpo: Habilidades Práticas do Agile Software – Capítulo 9: Testes de Unidadehttp://
ccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao08-Testes.pdfhttp://
ccsl.ime.usp.br/agilcoop/files/TestesAutomatizados-1-2-Introducao-AgilCoop-Verao2010.pdf
http://www.agilcoop.org.br/files/AgilCoop-Verao2010-TestesAutomatizados.pdf
https://github.com/thiagoghisi/DojoTuba/tree/master/dojoCaixaEletronicoEconomico
https://github.com/thiagoghisi/DojoTuba/tree/master/dojoCalculoDeNumerosRomanos
https://github.com/rodrigoy/beckanos-javahttp://seleniumhq.org/
Referências e Links:
Contatos:
E-mail: [email protected]: @thiagoghisiBlog: http://thiagoghisi.comLinkedin: http://br.linkedin.com/in/thiagoghisiDojoTuba/ForkInTuba: http://
groups.google.com/group/dojotuba
Obrigado!