Ismael soares
Testes unitários focam  apenas em uma unidade.
Gasta-se muito tempo criando  Fixtures que não são o alvo do teste
Posso ganhar agilidade usando Dublês de Testes? Brilhante! Use Dublês  de Testes!!!
Os Dublês oferecem uma maneira  de isolar as dependências
Entrada indireta –  dados que a unidade de teste obtém de algum objeto do qual ela depende (atributo de instância, parâmetro, etc). Saída indireta  – resultados esperados da unidade de teste que não podem ser conferidos apenas pelo valor de retorno. Efeitos colaterais.
 
Dummy Object  – usado apenas para que a execução do teste seja possível Test Stub  – provê informação necessária para a unidade de teste Test Spy  – captura e armazena as chamadas indiretas Mock Object  – verifica chamadas indiretas e provê dados necessários ao teste Fake Object  – provê uma implementação falsa de um objeto real
Queremos verificar a adição de um produto na nota fiscal. Suponha que para criar a nota seja obrigatório informar o fornececedor,  porém ele não será utilizado para exercitar o teste. Nota Fiscal Item  Produto  Fornecedor Add Item
Usando Stubs para testar Servlets. Neste teste é ignorado a existência de um container web (Tomcat, por exemplo)  o objetivo é avaliar o comportamento do servlet
 
 
Força um determinado comportamento para tornar possível verificar o tratamento de Exceptions.
Captura informações sobre os efeitos colaterais provocados pela unidade sob teste, para que o teste verifique se estão corretos.
Verificar notificações a observadores
Retornos pré-estabelecidos Verificações de interações Verifica diretamente os efeitos colaterais causados pela unidade sob teste
Estrito : espera as mesmas chamadas exatamente na mesma ordem que especificado Tolerante:  aceita qualquer ordem das chamadas, inclusive com chamadas a mais ou a menos
Substitui funcionalidade real por uma implementação alternativa. Emulando o comportamento real, com características amigáveis ao teste. Não é controlado nem observado pelo teste.
Mais exemplos Escolhendo entre as diferenças Classista ou Mockista? Ferramentas  Vantagens
 
Links Imagens http://www.rethinkware.com/download/attachments/557237/testesunitarios.JPG?version=1&modificationDate=1274749852384 http://www.yogodoshi.com/blog/wp-content/uploads/hacker2.jpg http://3.bp.blogspot.com/__8RKQKezcsk/TQee5_GRrEI/AAAAAAAABtk/-RNZUvv3Boo/s1600/0000+ideia.jpg http://www.corposaudavel.net/wp-content/uploads/beneficios-laranja.jpg http://dojofloripa.wordpress.com/2006/10/17/trabalhando-com-stubs/ http://i.s8.com.br/images/sport/cover/img2/21203992_4.jpg http://www.stanford.edu/group/storytelling/cgi-bin/joomla/images/stories/Impostor.jpg http://www.mxmasters.com.br/wp-content/uploads/2010/02/falso2.jpg
Referências Artigo do Martin Fowler ( Mocks Aren't Stubs ) http://www.infoq.com/br/articles/mocks-Arent-Stubs#4 Curso de verão com Mariana Bravo http://ccsl.ime.usp.br/agilcoop/files/TestesAutomatizados-3-1-Dubles-AgilCoop-Verao2009.pdf Livro:  xUnit Patterns http://xunitpatterns.com/Test%20Spy.html

Introducao a Dubles de Testes

  • 1.
  • 2.
    Testes unitários focam apenas em uma unidade.
  • 3.
    Gasta-se muito tempocriando Fixtures que não são o alvo do teste
  • 4.
    Posso ganhar agilidadeusando Dublês de Testes? Brilhante! Use Dublês de Testes!!!
  • 5.
    Os Dublês oferecemuma maneira de isolar as dependências
  • 6.
    Entrada indireta – dados que a unidade de teste obtém de algum objeto do qual ela depende (atributo de instância, parâmetro, etc). Saída indireta – resultados esperados da unidade de teste que não podem ser conferidos apenas pelo valor de retorno. Efeitos colaterais.
  • 7.
  • 8.
    Dummy Object – usado apenas para que a execução do teste seja possível Test Stub – provê informação necessária para a unidade de teste Test Spy – captura e armazena as chamadas indiretas Mock Object – verifica chamadas indiretas e provê dados necessários ao teste Fake Object – provê uma implementação falsa de um objeto real
  • 9.
    Queremos verificar aadição de um produto na nota fiscal. Suponha que para criar a nota seja obrigatório informar o fornececedor, porém ele não será utilizado para exercitar o teste. Nota Fiscal Item Produto Fornecedor Add Item
  • 10.
    Usando Stubs paratestar Servlets. Neste teste é ignorado a existência de um container web (Tomcat, por exemplo) o objetivo é avaliar o comportamento do servlet
  • 11.
  • 12.
  • 13.
    Força um determinadocomportamento para tornar possível verificar o tratamento de Exceptions.
  • 14.
    Captura informações sobreos efeitos colaterais provocados pela unidade sob teste, para que o teste verifique se estão corretos.
  • 15.
  • 16.
    Retornos pré-estabelecidos Verificaçõesde interações Verifica diretamente os efeitos colaterais causados pela unidade sob teste
  • 17.
    Estrito : esperaas mesmas chamadas exatamente na mesma ordem que especificado Tolerante: aceita qualquer ordem das chamadas, inclusive com chamadas a mais ou a menos
  • 18.
    Substitui funcionalidade realpor uma implementação alternativa. Emulando o comportamento real, com características amigáveis ao teste. Não é controlado nem observado pelo teste.
  • 19.
    Mais exemplos Escolhendoentre as diferenças Classista ou Mockista? Ferramentas Vantagens
  • 20.
  • 21.
    Links Imagens http://www.rethinkware.com/download/attachments/557237/testesunitarios.JPG?version=1&modificationDate=1274749852384http://www.yogodoshi.com/blog/wp-content/uploads/hacker2.jpg http://3.bp.blogspot.com/__8RKQKezcsk/TQee5_GRrEI/AAAAAAAABtk/-RNZUvv3Boo/s1600/0000+ideia.jpg http://www.corposaudavel.net/wp-content/uploads/beneficios-laranja.jpg http://dojofloripa.wordpress.com/2006/10/17/trabalhando-com-stubs/ http://i.s8.com.br/images/sport/cover/img2/21203992_4.jpg http://www.stanford.edu/group/storytelling/cgi-bin/joomla/images/stories/Impostor.jpg http://www.mxmasters.com.br/wp-content/uploads/2010/02/falso2.jpg
  • 22.
    Referências Artigo doMartin Fowler ( Mocks Aren't Stubs ) http://www.infoq.com/br/articles/mocks-Arent-Stubs#4 Curso de verão com Mariana Bravo http://ccsl.ime.usp.br/agilcoop/files/TestesAutomatizados-3-1-Dubles-AgilCoop-Verao2009.pdf Livro: xUnit Patterns http://xunitpatterns.com/Test%20Spy.html