Introdução ao TDD
Upcoming SlideShare
Loading in...5
×
 

Introdução ao TDD

on

  • 748 views

Contextualização e benefícios do desenvolvimento baseado em testes

Contextualização e benefícios do desenvolvimento baseado em testes

Statistics

Views

Total Views
748
Views on SlideShare
747
Embed Views
1

Actions

Likes
0
Downloads
30
Comments
0

1 Embed 1

https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

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
  • \n
  • \n
  • \n
  • Contextualizar o processo / Conjunto de atividades que levam a um sistema\n
  • \n
  • \n
  • Anotar mudanças e incertezas\n
  • Anotar mudanças e incertezas\n
  • Discutir um pouco as práticas para levar o benefício do feedback\n
  • Implantar é a oportunidade de checar as suposições frente à realidade / Sem implantar não como ter um feedback completo\n A cada ciclo de incremento se repetem as etapas de desenvolver e obter feedback / Maneira de aprender algo sobre o sistema e aplicar este conhecimento de volta ao sistema\n
  • Cada ciclo oferece um feedback em que o time pode descobrir e corrigir erros\nOs ciclos internos focam no detalhe, o ciclos exteros focam na organização e no time\nQuanto mais cedos obtivermos o feedback, melhor\n
  • \n
  • \n
  • \n
  • O esforço para escrever o teste primeiro dá-nos FEEDBACK sobre a qualidade das nossas ideias\nFazer código testável torna o desenvolvimento mais limpo e mais modular\nSe se escreve testes durante o processo de desenvolvimento, então TESTES de REGRESSÃO\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Onde meu software está quebrando? Vou ter que fazer manutenção demais!\n\nO medo nos faz hesitantes\nO medo nos faz diminuir a comunicação\nO medo nos afastam do feedback\nO medo nos faz mal-humorados\n
  • Onde meu software está quebrando? Vou ter que fazer manutenção demais!\n\nO medo nos faz hesitantes\nO medo nos faz diminuir a comunicação\nO medo nos afastam do feedback\nO medo nos faz mal-humorados\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Código limpo\ntestes como especificação\naumento de confiança\n
  • Código limpo\ntestes como especificação\naumento de confiança\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Problema: quando integra o sistema, propriedades emergentes surgem e quebram\n
  • Problema: quando integra o sistema, propriedades emergentes surgem e quebram\n
  • Problema: quando integra o sistema, propriedades emergentes surgem e quebram\n
  • \n
  • \n
  • \n
  • Os testes de aceitação demoram mais a passar / Testes de unidades devem passar logo depois que foram escritos / Testes unitários não devem comprometer o repositório de origem / Testes de aceitação devem estar presentes por todo o sistema / testando a GUI\n\n
  • Os testes de aceitação demoram mais a passar / Testes de unidades devem passar logo depois que foram escritos / Testes unitários não devem comprometer o repositório de origem / Testes de aceitação devem estar presentes por todo o sistema / testando a GUI\n\n
  • Os testes de aceitação demoram mais a passar / Testes de unidades devem passar logo depois que foram escritos / Testes unitários não devem comprometer o repositório de origem / Testes de aceitação devem estar presentes por todo o sistema / testando a GUI\n\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Introdução ao TDD Introdução ao TDD Presentation Transcript

  • @dudumendesDesenvolvimentoBaseado em Testes Eduardo Mendes de Oliveira edumendes@gmail.com
  • @dudumendes Agenda• Introdução• Conceitos de desenvolvimento orientados a testes • TDD / BDD• Revisão de Refatoração• Padrões de teste• Ferramentas• Aulas práticas 2
  • @dudumendesIntrodução
  • @dudumendesProcesso de Software Projeto  e   Especificação Implementação Validação Evolução
  • @dudumendesContexto do Processo de Sofware - Equipe•Algo novo para a equipe de software •pessoas envolvidas •domínio da aplicação •tecnologia utilizada •uma combinação dos 03 anteriores•Elementos surpresas
  • @dudumendesContexto do Processo de Sofware - Cliente•Obriga a criar um novo olhar sobre a organização a partir de uma nova perspectiva•É preciso negociar e formalizar processos que até então eram baseados na experiência e convenções
  • @dudumendes Processo de Software Processo de aprendizagem•Sucesso do projeto •Entender o progresso do projeto •trabalho conjunto para identificar e resolver mal-entendidos•É preciso um processo que ajude a lidar com as incertezas e antecipar mudanças inantecipadas
  • @dudumendes Princípios ágeis fundamentais•Desenvolvimento incremental•Envolvimento do cliente•Pessoas, não processos•Aceitar as mudanças•Envolvimento do cliente
  • Incremento + @dudumendes Feedback analisar projetar implantarimplementar CICLO feedback
  • @dudumendes Ciclos no Processo de Software•Testes de unidade•Testes de aceitação•Reuniões diárias•Releases
  • Lidando com a @dudumendes mudança• Possuir testes de regressão sempre • adicionar funcionalidades sem quebrar as existentes • escrever testes às vezes é visto como uma tarefa chata• Manter a simplicidade (FOWLER, 1999) • Código fácil de manter e modificar • exige esforço de refatoração constante
  • @dudumendes
  • @dudumendes Melhores práticas para programação•Evitar código spaghetti•Incluir comentários relevantes nos fontes•Criar testes antes ou concomitantemente à codificação•Inspeções formais•Re-inspeções de código após mudanças significativas•Renovar código legado antes de melhorias
  • @dudumendes TDD•Teste antes, teste primeiro •ao invés de deixar o teste verificar o trabalho depois de feito•Teste como atividade de projeto •esclarece as ideias sobre o que queremos que o código faça •separação dos projetos físicos e lógicos
  • Ciclo de vida do @dudumendes softwareDensenvolvimentoem um primeiro momento só existiam 02 fases Manutenção 15
  • @dudumendes Ciclos ruins•Quando se chega na época de entregar o software •Cliente não está satisfeito •Por falta de tempo, o software é entregue sem testes
  • @dudumendesEspiral da mortemenos testes mais problemas menos tempo
  • Abordagens Ágeis Test First ✦ Modifica a abordagem tradicional para modelar e analisar•Kent Beck ✦ Cria práticas para fornecer apoio ao Test First Baby Steps 18
  • ConsequênciasDensenvolvimento Manutenção
  • ConsequênciasTDDTest Driven Development
  • ConsequênciasTDD Test Driven Design
  • TDD• “Test-driven development is a way of managing fear during programming.” Kent Beck
  • TDD• “Desenvolvimento baseado em testes é uma forma de administrar o medo durante a programação.” Kent Beck
  • “Alguém sabe o que isso faz?”
  • “Eu acho que não temos nenhuma documentação para isso!”
  • “Se eu mudar XprovalvementeY vai quebrar!”
  • “Na última vez quepeguei nesse negócio, nós passamos uma semana para corrigí-lo.”
  • @dudumendesTDD
  • @dudumendesEntão o que é TDD
  • TDD @dudumendesEscreva um teste ANTESde escrever um código a ser testadoEscreva um código queapenas faça compilar o testee observe o teste funcionandoRefatore para o formato mais simplespossível
  • @dudumendesO ciclo básico do TDD F Fazer um código Escrever um passar no testeteste unitário que falha Refatorar
  • @dudumendesred / green / refactor
  • @dudumendes Feedback do TDD•Implementação •Funciona?•Projeto •Está bem elaborado?
  • @dudumendesBenefícios do TDD•Escrevendo testes •esclarece os critérios de aceitação •encoraja a escrever componentes fracamente acoplados para que sejam testados isoladamente •atribui uma descrição executável do que o código faz •ganha-se uma suíte de regressão completa
  • @dudumendesBenefícios do TDD•Executando testes •detecta erros enquanto o contexto do código ainda está em mente •avisa quando fizemos o bastante, evitando esforço desnecessário
  • @dudumendesBenefícios resumo•O projeto evolui constatemente•O projeto está sobre constante revisão •qualidade de código •fraco acoplamento •alta coesão
  • @dudumendesRegra de Ouro do TDD “Nunca codifique uma funcionalidade nova sem um teste falhando”
  • @dudumendesNíveis de teste
  • Testes preparar Unitários Componente  “resetar” testado  de   executar maneira   isolada validar
  • TDD @dudumendes x Testes unitários•TDD é somente a utilização de testes unitários? •melhor do que nada! •às vezes os testes ficam isolados e não podem ser integrados
  • @dudumendes Por onde começar?• Por onde começa um projeto?
  • @dudumendesRegra de Ouro do TDD “Nunca codifique uma funcionalidade nova sem um teste falhando”
  • @dudumendes Por onde começar? Fazer um código F Escrever um passar no teste teste unitário que falha Escrever um Refatorarteste de aceitação que falha
  • @dudumendes Níveis de teste• Aceitação • O sistema funciona como um todo?• Integração • Nosso código funciona com o código já existente?• Unidade • Nossos objetos fazem a coisa certa do jeito certo?
  • Processo de SoftwareRequisitos Projeto Implementa Teste Evolução
  • Processo de Software com TDD Projeto Implementa Teste
  • Processo de Software com TDD Projeto Teste Implementa
  • Processo de Software com TDD Projeto Teste Implementa Teste
  • TDD ProjetoTeste Teste Implementa
  • TDD ProjetoTeste Teste Implementa
  • TDD Projeto crie uma lista de teste anote e identifique os testes seja conciso: uma classe ou métodoposteriormente, é possível adicionar mais testes
  • TDDProjeto Teste
  • TDDEscreva o teste primeiro •pense no design •controle o escopo Testecrie o teste utilizando assertivas •teste o que é esperado e o que não é esperado
  • TDD TesteImplementa
  • TDDimplemente o código que deve ser testado faça o mínimo e somente o necessário para que o teste compile e passe Implementa
  • TDDTeste Implementa
  • TDDTeste Verifique se o teste passou
  • TDD ProjetoTeste E tudo de novo! Teste Implementa
  • @dudumendesEntendi! Já sei! TDD é um método para testar software
  • @dudumendesPEINNNNN!!!!!
  • @dudumendes TDD éum método*para construir software*método: abordagem repetítivel - ciclo para solucionar um determinado problema - aprendizado