Universidade de Belo HorizonteDesenvolvimento Dirigido por TestesCamilo Ribeirocamilo@camiloribeiro.comwww.bugbang.com.br
Camilo RibeiroMais de cinco anos de experiência em Engenharia de Software
Consultor em arquitetura de teste e qualidade de software
Instrutor e professor de teste de software na Iterasys
Graduado em Sistemas pela Internet pela Faculdade Pitágoras
Pós graduado em Engenharia de Software pela UFMG
Certificado pelo ISTQB, ALATS e ETS
Mantedor do blog técnico The Bug BangTheory (www.bugbang.com.br)
Palestrante e entusiasta de teste de softwarewww.about.me/camiloribeirowww.twitter.com/camiloribeirocamilo@camiloribeiro.com
AgendaO que é teste de unidade
Motivação para existência do teste de unidade
Problemas dos testes de unidade
Motivação para o TDD
Como funciona o TDD
Mitos sobre o TDD
Exemplos em .net
Framework Praxis em JavaFiquem à vontade para questionar qualquer assunto ou perguntar suas dúvidas.Ao final teremos alguns exemplos práticos e tempo para perguntas também.
Não sou DesenvolvedorSou um testador que aprendeu um pouco dos dois caminhos
Conceito: Teste de UnidadeTeste realizado com os componentes individuais de um software. [Subsequente ao IEEE 610] – Glóssário de termos do ISTQBTestes de unidade é um método pelo qual as unidades individuais do código-fonte são testados para determinar se eles estão aptos para o uso. A unidade é a menor parte testável de um aplicativo. Na programação procedural uma unidade pode ser uma função individual ou procedimento. Na programação orientada a objeto uma unidade é normalmente um método. Os testes unitários são criados por programadores ou ocasionalmente por testadores de caixa branca durante o processo de desenvolvimento. – Tradução Literal da Wikipedia Inglesa
O Modelo V TradicionalPlaneja >Teste de AceiteRequisitosTeste de SistemaPlaneja >Análise Teste de IntegraçãoPlaneja >DesenhoPlaneja >CódigoTeste de Unidade
Problema de escrever testes depoisVocê escreverá testes para passarem. Testes não podem ser feitos para “passar”, devem ser feitos para avaliar o código de produção. Testes feitos para ter testes não tem valor.
TDD vem pra resolver esse problema
O modelo V aplicado ao TDDPlaneja >Teste de AceiteRequisitosTeste de SistemaPlaneja >Análise Teste de IntegraçãoPlaneja >Desenho  Gera >CódigoTeste de Unidade
Framework de Teste de UnidadeCódigo de produçãoRequisitosGeraÉ testado porClasse de TesteAcessaAcessaImplementaDados(DB, XML, Excel)Framework
Considerações sobre Teste de UnidadeTeste de unidade valida uma unidade;Teste de unidade deve ser executável independente dos dados;O teste de unidade deve conter tudo o que o teste necessita;Teste de unidade não é teste de integração (Cuidado)Teste de unidade feito por fazer não tem valor;Teste de unidade sempre será usado  como teste de regressão
Outras Considerações Teste de UnidadeNunca use lógica em testes de unidade. Testes de unidade devem ser configurados (Não queremos mais bugs :p )Não altere ou exclua testes para ter um novo. Sempre adicione o novo. O teste só deve mudar quando a funcionalidade mudar; Quando todos os testes passarem, mude algum if, mude atribuições e retornos de lugar no seu código de produção para ver se os testes são efetivos;Code Review e Test Code Review tem a mesma importância;Teste de unidade deve testar o Contrato, não teste nada além do contrato;Testes de unidade devem ser isolados;Reuse o código de teste;
Como o TDD Funciona?
O que tem de teste de software?Uso de técnicas de teste como valores limites, partição de equivalência ou qualquer outra técnica usada para testes de sistema;Casos de teste (em forma de código);São requeridas as mesmas skills dos testes funcionais (criatividade, curiosidade, senso crítico, etc.). . .
O que tem de desenvolvimento?Orientação por Objetos;Acesso a bancos de dados e qualquer outro repositório usado em programação;Padrões de projeto como commanded, value object, imposter, factory method e composite ou qualquer outro usado em programação;Acesso irrestrito a todos os recursos da linguagem e IDE usada;. . .
Como o TDD Funciona?Adicionar um teste: Incluir um teste, que pode por exemplo, ter o formato de um caso de teste.Executar o teste: Devemos ter certeza que o teste falha antes da implementação. Se necessário, desenvolva apenas o contrato ou mockspara isso;Desenvolva: Agora complete seu contrato com o código funcional, como sempre fez. Execute o teste: Agora o teste deve passar. Caso existam defeitos, o teste de unidade vai demonstrar erros;Correção e reteste: Agora mude o código fonte de produção até que o teste de unidade tenha um resultado positivo;*Se algo nos requisitos mudar, os testes mudam.http://www.agiledata.org/essays/tdd.html

Desenvolvimento Dirigido por Testes

  • 1.
    Universidade de BeloHorizonteDesenvolvimento Dirigido por TestesCamilo Ribeirocamilo@camiloribeiro.comwww.bugbang.com.br
  • 2.
    Camilo RibeiroMais decinco anos de experiência em Engenharia de Software
  • 3.
    Consultor em arquiteturade teste e qualidade de software
  • 4.
    Instrutor e professorde teste de software na Iterasys
  • 5.
    Graduado em Sistemaspela Internet pela Faculdade Pitágoras
  • 6.
    Pós graduado emEngenharia de Software pela UFMG
  • 7.
  • 8.
    Mantedor do blogtécnico The Bug BangTheory (www.bugbang.com.br)
  • 9.
    Palestrante e entusiastade teste de softwarewww.about.me/camiloribeirowww.twitter.com/camiloribeirocamilo@camiloribeiro.com
  • 10.
    AgendaO que éteste de unidade
  • 11.
    Motivação para existênciado teste de unidade
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
    Framework Praxis emJavaFiquem à vontade para questionar qualquer assunto ou perguntar suas dúvidas.Ao final teremos alguns exemplos práticos e tempo para perguntas também.
  • 18.
    Não sou DesenvolvedorSouum testador que aprendeu um pouco dos dois caminhos
  • 19.
    Conceito: Teste deUnidadeTeste realizado com os componentes individuais de um software. [Subsequente ao IEEE 610] – Glóssário de termos do ISTQBTestes de unidade é um método pelo qual as unidades individuais do código-fonte são testados para determinar se eles estão aptos para o uso. A unidade é a menor parte testável de um aplicativo. Na programação procedural uma unidade pode ser uma função individual ou procedimento. Na programação orientada a objeto uma unidade é normalmente um método. Os testes unitários são criados por programadores ou ocasionalmente por testadores de caixa branca durante o processo de desenvolvimento. – Tradução Literal da Wikipedia Inglesa
  • 20.
    O Modelo VTradicionalPlaneja >Teste de AceiteRequisitosTeste de SistemaPlaneja >Análise Teste de IntegraçãoPlaneja >DesenhoPlaneja >CódigoTeste de Unidade
  • 21.
    Problema de escrevertestes depoisVocê escreverá testes para passarem. Testes não podem ser feitos para “passar”, devem ser feitos para avaliar o código de produção. Testes feitos para ter testes não tem valor.
  • 22.
    TDD vem praresolver esse problema
  • 23.
    O modelo Vaplicado ao TDDPlaneja >Teste de AceiteRequisitosTeste de SistemaPlaneja >Análise Teste de IntegraçãoPlaneja >Desenho Gera >CódigoTeste de Unidade
  • 24.
    Framework de Testede UnidadeCódigo de produçãoRequisitosGeraÉ testado porClasse de TesteAcessaAcessaImplementaDados(DB, XML, Excel)Framework
  • 25.
    Considerações sobre Testede UnidadeTeste de unidade valida uma unidade;Teste de unidade deve ser executável independente dos dados;O teste de unidade deve conter tudo o que o teste necessita;Teste de unidade não é teste de integração (Cuidado)Teste de unidade feito por fazer não tem valor;Teste de unidade sempre será usado como teste de regressão
  • 26.
    Outras Considerações Testede UnidadeNunca use lógica em testes de unidade. Testes de unidade devem ser configurados (Não queremos mais bugs :p )Não altere ou exclua testes para ter um novo. Sempre adicione o novo. O teste só deve mudar quando a funcionalidade mudar; Quando todos os testes passarem, mude algum if, mude atribuições e retornos de lugar no seu código de produção para ver se os testes são efetivos;Code Review e Test Code Review tem a mesma importância;Teste de unidade deve testar o Contrato, não teste nada além do contrato;Testes de unidade devem ser isolados;Reuse o código de teste;
  • 27.
    Como o TDDFunciona?
  • 28.
    O que temde teste de software?Uso de técnicas de teste como valores limites, partição de equivalência ou qualquer outra técnica usada para testes de sistema;Casos de teste (em forma de código);São requeridas as mesmas skills dos testes funcionais (criatividade, curiosidade, senso crítico, etc.). . .
  • 29.
    O que temde desenvolvimento?Orientação por Objetos;Acesso a bancos de dados e qualquer outro repositório usado em programação;Padrões de projeto como commanded, value object, imposter, factory method e composite ou qualquer outro usado em programação;Acesso irrestrito a todos os recursos da linguagem e IDE usada;. . .
  • 30.
    Como o TDDFunciona?Adicionar um teste: Incluir um teste, que pode por exemplo, ter o formato de um caso de teste.Executar o teste: Devemos ter certeza que o teste falha antes da implementação. Se necessário, desenvolva apenas o contrato ou mockspara isso;Desenvolva: Agora complete seu contrato com o código funcional, como sempre fez. Execute o teste: Agora o teste deve passar. Caso existam defeitos, o teste de unidade vai demonstrar erros;Correção e reteste: Agora mude o código fonte de produção até que o teste de unidade tenha um resultado positivo;*Se algo nos requisitos mudar, os testes mudam.http://www.agiledata.org/essays/tdd.html