Palestra Testes De Unidade Com JUnit
Upcoming SlideShare
Loading in...5
×
 

Palestra Testes De Unidade Com JUnit

on

  • 5,267 views

 

Statistics

Views

Total Views
5,267
Views on SlideShare
4,740
Embed Views
527

Actions

Likes
2
Downloads
202
Comments
0

7 Embeds 527

http://www.jeveaux.com 256
http://jeveaux.com 247
http://www.slideshare.net 17
http://static.slideshare.net 3
http://feeds.feedburner.com 2
http://en.wikipedia.org 1
http://www.linkedin.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Palestra Testes De Unidade Com JUnit Palestra Testes De Unidade Com JUnit Presentation Transcript

  • Testes de Unidade com JUnit Paulo César M. Jeveaux paulo.jeveaux@giran.com.br
  • Giran Soluções e Ensino • Consultoria e Treinamento especialidados • Java • Ruby on Rails • Desenvolvimento ágil • Gerenciamento de projetos com SCRUM • Profissionais altamente qualificados • Participação ativa na comunidade • http://www.giran.com.br
  • Jeveaux • CEO da Giran • Desenvolvedor Java há 8++ anos • Fundador do ESJUG e Agile-ES • Administrador do PortalJava.com • Palestrante e evangelista Java • Entusiasta Ruby, Rails, Python e Agile • Curioso e aprendendo Erlang
  • Sobre o que vamos falar hoje...
  • desenvolvimento de software
  • desenvolvimento de software processo tradicional
  • desenvolvimento de software processo tradicional um pouquinho de XP
  • desenvolvimento de software processo tradicional um pouquinho de XP Testes
  • desenvolvimento de software processo tradicional um pouquinho de XP Testes JUnit
  • O que é um Teste?
  • você entraria num avião...
  • ... que nunca saiu do chão? você entraria num avião...
  • ta maluco?
  • e por que você entrega software sem testar?
  • como você desenvolve software hoje?
  • Code and fix!
  • O processo tradicional • Sem metodologia de desenvolvimento • Procedural e estruturada • Grande dificuldade para mostrar e simular a relação entre o código (entidades) e o negócio [Cristiano Milfont]
  • Unificação de Processos
  • • Criação de processos unificados (*UP) • Direcionados a casos de uso • Centrados na arquitetura • Iterativos e incrementais • Utilização da linguagem UML • Fases bem definidas, como na engenharia civil • Concepção, elaboração, construção e transição [Cristiano Milfont]
  • Inspirado em outras engenharias Quase sempre a civil
  • Inspirado em outras engenharias Quase sempre a civil
  • Inspirado em outras engenharias Quase sempre a civil
  • Dá pra afastar um pouquinho?
  • Custo de mudanças
  • BDUF big design up front
  • BDUF big design up front is evil!
  • nós estamos jogando com as regras erradas!
  • “A maioria das nossas suposições sobre negócios, tecnologia e organizações têm pelo menos 50 anos. Elas tem sobrevivido ao seu tempo. Como resultado, estamos pregando, ensinando, e praticando políticas que estão cada vez mais desalinhadas com a realidade, e são contra produtivas.” Peter Drucker (1909-2005)
  • Não é assim que se faz software
  • Não é assim que se faz software Acredite!
  • Manifesto Ágil Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através deste trabalho, passamos a valorizar: Indivíduos e interação entre eles mais que processos e ferramentas Software em funcionamento mais que documentação abrangente Colaboração com o cliente mais que negociação de contratos Responder a mudanças mais que seguir um plano Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda. Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn,Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas ©2001, Autores acima citados. Esta declaração pode ser livremente copiada, sob qualquer forma,mas apenas na sua totalidade através do presente aviso.
  • XP Extreme Programming
  • O que é XP?
  • Utilização de funcionalidades de software Às vezes Frequentemente 16% 13% Sempre 7% Raramente 19% Nunca 45%
  • desperdício Raramente 19% Nunca 45%
  • Pareto Frequentemente 13% Sempre 7% 20% das funcionalidades geram 80% do valor
  • XP é a arte de maximizar a quantidade de software que você não vai fazer Vinícius Manhães Teles - ImproveIt
  • Extreme Programming É um conjunto de princípios, valores e práticas
  • Onde...
  • Onde... ... os princípios conectam os valores às práticas
  • • O XP é uma metodologia rigorosa e disciplinada que requer o cumprimento de suas práticas para o sucesso na adoção. • O XP pode ser usado com CMM e UPs. • A preocupação não é com qualidade (que deve natural) e sim com a saúde do sistema (segundo Kent Beck). [Cristiano Milfont]
  • e testes vão me salvar?
  • testes evitarão falhas? e testes vão me salvar?
  • falhas existem [1] [2]
  • 1/3 poderiam ser evitadas falhas existem [1] [2]
  • 1/3 poderiam ser evitadas 50% falhas existem são detectadas em produção [1] [2]
  • 1/3 poderiam ser evitadas 50% falhas existem são detectadas em produção U$60 bi ano custam caro! [1] [2]
  • bug
  • bug feature
  • defeitos são caros! quanto mais tarde forem encontrados, mais caros serão
  • conclusão: é melhor encontrar os defeitos o mais cedo possível!
  • depois eu testo
  • estou sem tempo
  • funcionou!?
  • funcionou!?
  • seja profissional garanta o seu trabalho!
  • você é o único responsável pela qualidade do seu trabalho
  • ninguém melhora se você não melhorar primeiro!
  • programadores profissionais escrevem testes. [3]
  • teste tudo antes - TDD
  • quando você terminar
  • quando você terminar é porque você realmente terminou
  • quando você terminar é porque você realmente terminou
  • escreva os testes antes!
  • você vai
  • você vai amar seus códigos
  • você vai amar seus códigos programar melhor
  • você vai amar seus códigos programar melhor pensar antes de escrever
  • você vai amar seus códigos programar melhor pensar antes de escrever reduzir código inútil
  • você vai amar seus códigos programar melhor pensar antes de escrever reduzir código inútil ganhar com qualidade
  • “Sempre que estiver tentado a escrever um print() ou uma expressão de depuração, escreva um teste” -- Martin Fowler
  • entre no ritmo
  • stand-up meeting @ 09:00h monte seu par escreva um teste codifique para passar no teste refatore entregar Ir para casa @ 17:00h
  • red
  • escreva um teste que não funciona red
  • green
  • escreva código que passe no teste green
  • refactor
  • refatore, recomece e refatore. Sempre! refactor
  • testes de unidade
  • testes de unidade teste todo seu código
  • testes de unidade teste todo seu código por partes
  • testes de unidade teste todo seu código por partes isoladas
  • testes de unidade teste todo seu código por partes isoladas e independentes
  • testes de unidade
  • testes de unidade evitam bugs
  • testes de unidade evitam bugs permitem fáceis alterações (coragem)
  • testes de unidade evitam bugs permitem fáceis alterações (coragem) documenta
  • testes de unidade evitam bugs permitem fáceis alterações (coragem) documenta serve como métrica do projeto
  • testes de unidade evitam bugs permitem fáceis alterações (coragem) documenta serve como métrica do projeto - testes == requisitos
  • rode os testes todo o tempo
  • rode os testes todo o tempo é melhor corrigir dois ou três probleminhas
  • rode os testes todo o tempo é melhor corrigir dois ou três probleminhas do que corrigir um problemão
  • mantenha tudo simples
  • mantenha tudo simples deixe os ‘complexos’ por último
  • mantenha tudo simples deixe os ‘complexos’ por último seja criativo
  • mantenha tudo simples deixe os ‘complexos’ por último seja criativo mantenha o foco
  • mantenha tudo simples deixe os ‘complexos’ por último seja criativo mantenha o foco use dados suficientes
  • mantenha tudo simples deixe os ‘complexos’ por último seja criativo mantenha o foco use dados suficientes - se 3 condições bastam, pra que 10?
  • achou um bug?
  • não o conserte antes de ter um teste que o reproduza achou um bug?
  • não o conserte antes de ter um teste que o reproduza achou um bug? ou então ele volta!
  • JUnit
  • framework que facilita o desenvolvimento e execução de testes de unidade em Java fornece uma API para criar os testes e aplicações para executa-los
  • escrito originalmente por Erich Gamma e Kent Beck parte de uma família de arquitetura de testes conhecida como xUnit
  • pra que um framework?
  • pra que um framework? verifica toda unidade de código
  • pra que um framework? verifica toda unidade de código facilita a criação
  • pra que um framework? verifica toda unidade de código facilita a criação facilita a automatização
  • pra que um framework? verifica toda unidade de código facilita a criação facilita a automatização é OO, gratuito, Open Source ...
  • JUnit 4 ficou muito simples
  • @Test anote seu método não precisa mais do prefixo test suas classes não precisam estender TestCase
  • @Before e @After anote seus métodos que serão o setUp e tearDown @BeforeClass e @AfterClass anote seus métodos que serão o setUp e tearDown em nível de classe
  • Exceptions @Test(expected = ArithmeticException.class) @Ignore @Ignore(“Não pode ser executado ainda.”) @Test
  • Timeout @Test(timeout = 1000)
  • o ritual
  • saiba o vai implementar
  • saiba o vai implementar liste tudo que deve ser feito
  • saiba o vai implementar liste tudo que deve ser feito escreva um teste antes para qualquer tarefa listada
  • saiba o vai implementar liste tudo que deve ser feito escreva um teste antes para qualquer tarefa listada certifique-se que o teste falhe
  • implemente
  • implemente implemente um código simples para passar no teste
  • implemente implemente um código simples para passar no teste refatore o teste e depois o código
  • implemente implemente um código simples para passar no teste refatore o teste e depois o código recomece
  • alguns lembretes
  • alguns lembretes assertEquals
  • alguns lembretes assertEquals - testa igualdade (esperado x retornado)
  • alguns lembretes assertEquals - testa igualdade (esperado x retornado) assertTrue
  • alguns lembretes assertEquals - testa igualdade (esperado x retornado) assertTrue - testa o retorno ‘true’
  • alguns lembretes assertEquals - testa igualdade (esperado x retornado) assertTrue - testa o retorno ‘true’ assertFalse
  • alguns lembretes assertEquals - testa igualdade (esperado x retornado) assertTrue - testa o retorno ‘true’ assertFalse - testa o retorno ‘false’
  • alguns lembretes
  • alguns lembretes assertNull
  • alguns lembretes assertNull - testa se um valor é nulo
  • alguns lembretes assertNull - testa se um valor é nulo assertNotNull
  • alguns lembretes assertNull - testa se um valor é nulo assertNotNull - testa se um valor não é nulo
  • hands on!
  • dúvidas?
  • http://www.esjug.org
  • Referências • Fotos • ImproveIt - http://www.improveit.com.br • Pesquisas • [1] - NIST - http://www.nist.gov/public_affairs/releases/n02-10.htm • [2] - ImproveIt - http://www.improveit.com.br/xp/praticas/tdd • [3] – Fragmental - Shoes - http://blog.fragmental.com.br/2007/10/31/programadoresprofissionais-escrevem-testes- ponto-final • Materiais • Extreme Programming - http://extremeprogramming.org • Igor Macaubas e Marcos Pereira - http://www.slideshare.net/macaubas/seminario-scrum-presentation • ImproveIt - http://www.improveit.com.br/scrum • ImproveIt - http://www.improveit.com.br/xp • Manifesto Ágil - http://manifestoagil.com.br • Guilherme Chapiewski - http://www.slideshare.net/gchapiewski/desenvolvimento-gil-com-xp-e-scrum-presentation • André Faria Gomes - http://andrefaria.com/2008/08/22/junit-4-em-60-segundos • Cristiano Milfont - http://www.slideshare.net/cmilfont/extreme-programming-148802
  • Obrigado! podem acordar
  • Testes de Unidade com JUnit Paulo César M. Jeveaux paulo.jeveaux@giran.com.br