Lightning talk - TDD
Quem sou eu?

Willians de Paula Pereira
 Especialista em Engenharia de Software
  com Ênfase em Software Livre




 Professor do Instituto Federal de
  Educação, Ciência e Tecnologia de
  Rondônia
Quem sou eu?

  Willians de Paula Pereira
Membro do Grupo de
 Pesquisa em Automação e
 Robótica – GPMecatrônica

Corintiano
Mesatenista
Desenvolvedor
Aprendiz
Geek
Contextualizando
O que são testes?
O teste do software é a investigação do
 software a fim de fornecer informações
 sobre sua QUALIDADE em relação ao
 contexto em que ele deve operar. Isso
 inclui o processo de utilizar o produto para
 encontrar seus defeitos.
Tipos de testes

Caixa branca
Caixa preta
Caixa cinza
Regressão
Técnicas não funcionais
Fases

TESTE DE UNIDADE
Teste de integração
Teste de sistema
Teste de aceitação
Teste de operação
 Alpha
 Beta
 Release Cadidate
Problemas comuns no
desenvolvimento de software
Difícil manutenção
Problemas comuns no
desenvolvimento de software

Bugs geram mais bugs
Problemas comuns no
desenvolvimento de software
 Código macarrão

 Procedure var você,eu:string;
 begin você:=eu; if (eu<>você) or (você<>eu)
 then showmessage('Eu não sou você e você
 muito menos eu') else if (você=eu) then
 showmessage('você é você, eu sou eu'); with
 você do begin caption:='Eu'; size:='28 cm';
 Name:='Jeremias'; //Jeremias eu sou homem
 coisa que você não é, e não atiro pelas costas
 não showmessage('Come on
 Bitch!!Motherfucker and fuck u');
 end;
 end.
Problemas comuns no
desenvolvimento de software
Perda de tempo
Por que testar?
Saber que alguma coisa funciona




Tudo que você comprou na
 Bolívia funcionou
Como testamos hoje?
F5
Ctrl + Shift + B
Compilar NÃO significa
 testar
Significa que seu CÓDIGO
 ATENDE AOS
 REQUISITOS DO
 COMPILADOR e NÃO DO
 SEU SISTEMA
Por que não testar?
Demora
Por que não testar?
Sou o JEDI
Por que não testar?
Preciso escrever mais código
Por que não testar?
Estamos sem tempo
Are you sure?




Pergunte aos universitários
Por que não testar?
Deixar de testar não te faz mais
 rápido, apenas dá uma FALSA sensação
 de velocidade
Vantagens de Testes de Unidade
(Unity Tests)
 Reduz o tempo gasto em depuração e em correção de bugs.
 Serve de suporte para testes de regressão.
 Encoraja o refactoring.
 Serve como documentação.
 Reduz o GAP entre a introdução, identificação e correção de
  bugs.
    80% do tempo de um desenvolvedor é dedicado à
     identificação e correção de bugs.
    Mais de 50% dos bugs não são detectados até a fase de
     homologação.
    Aproximadamente 50% dos bugs são introduzidos na fase
     implementação.
    Cerca de 50% do orçamento total de um projeto de
     software é gasto em correção de bugs.
Vantagens de Testes de Unidade
(Unity Tests)
Rápido
Prático
Executa quase que instantaneamente
Auxiliam o design da funcionalidade
 Está difícil? Refatore
Ciclo do TDD
De forma prática
Desvantagens
DEMO
Considerações finais sobre TDD
 Design evolui com o conhecimento adquirido com projeto;
 Desenvolvimento com passos de bebê;
 Expressa a boa intenção do programador em relação aos
  testes;
 Servem de documentação.
 Sobre código o que podemos dizer:
    Nome dos teste definem o comportamento esperado;
    Sem duplicação;
    Alta cobertura;
    Anti-código inútil;
    Alta qualidade do código.
@williansdepaula
      /williansdepaula
williansdepaula@gmail.com

Lightning talk Test-Driven Development - TDD

  • 1.
  • 2.
    Quem sou eu? Williansde Paula Pereira Especialista em Engenharia de Software com Ênfase em Software Livre Professor do Instituto Federal de Educação, Ciência e Tecnologia de Rondônia
  • 3.
    Quem sou eu? Willians de Paula Pereira Membro do Grupo de Pesquisa em Automação e Robótica – GPMecatrônica Corintiano Mesatenista Desenvolvedor Aprendiz Geek
  • 4.
  • 5.
    O que sãotestes? O teste do software é a investigação do software a fim de fornecer informações sobre sua QUALIDADE em relação ao contexto em que ele deve operar. Isso inclui o processo de utilizar o produto para encontrar seus defeitos.
  • 6.
    Tipos de testes Caixabranca Caixa preta Caixa cinza Regressão Técnicas não funcionais
  • 7.
    Fases TESTE DE UNIDADE Testede integração Teste de sistema Teste de aceitação Teste de operação Alpha Beta Release Cadidate
  • 8.
    Problemas comuns no desenvolvimentode software Difícil manutenção
  • 9.
    Problemas comuns no desenvolvimentode software Bugs geram mais bugs
  • 10.
    Problemas comuns no desenvolvimentode software  Código macarrão Procedure var você,eu:string; begin você:=eu; if (eu<>você) or (você<>eu) then showmessage('Eu não sou você e você muito menos eu') else if (você=eu) then showmessage('você é você, eu sou eu'); with você do begin caption:='Eu'; size:='28 cm'; Name:='Jeremias'; //Jeremias eu sou homem coisa que você não é, e não atiro pelas costas não showmessage('Come on Bitch!!Motherfucker and fuck u'); end; end.
  • 11.
    Problemas comuns no desenvolvimentode software Perda de tempo
  • 12.
    Por que testar? Saberque alguma coisa funciona Tudo que você comprou na Bolívia funcionou
  • 13.
  • 16.
    Compilar NÃO significa testar Significa que seu CÓDIGO ATENDE AOS REQUISITOS DO COMPILADOR e NÃO DO SEU SISTEMA
  • 17.
    Por que nãotestar? Demora
  • 18.
    Por que nãotestar? Sou o JEDI
  • 19.
    Por que nãotestar? Preciso escrever mais código
  • 20.
    Por que nãotestar? Estamos sem tempo
  • 21.
    Are you sure? Pergunteaos universitários
  • 22.
    Por que nãotestar? Deixar de testar não te faz mais rápido, apenas dá uma FALSA sensação de velocidade
  • 23.
    Vantagens de Testesde Unidade (Unity Tests)  Reduz o tempo gasto em depuração e em correção de bugs.  Serve de suporte para testes de regressão.  Encoraja o refactoring.  Serve como documentação.  Reduz o GAP entre a introdução, identificação e correção de bugs.  80% do tempo de um desenvolvedor é dedicado à identificação e correção de bugs.  Mais de 50% dos bugs não são detectados até a fase de homologação.  Aproximadamente 50% dos bugs são introduzidos na fase implementação.  Cerca de 50% do orçamento total de um projeto de software é gasto em correção de bugs.
  • 24.
    Vantagens de Testesde Unidade (Unity Tests) Rápido Prático Executa quase que instantaneamente Auxiliam o design da funcionalidade Está difícil? Refatore
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
    Considerações finais sobreTDD  Design evolui com o conhecimento adquirido com projeto;  Desenvolvimento com passos de bebê;  Expressa a boa intenção do programador em relação aos testes;  Servem de documentação.  Sobre código o que podemos dizer:  Nome dos teste definem o comportamento esperado;  Sem duplicação;  Alta cobertura;  Anti-código inútil;  Alta qualidade do código.
  • 30.
    @williansdepaula /williansdepaula williansdepaula@gmail.com