Download - Introducao a Dubles de Testes
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 serconferidos apenas pelo valor de retorno. Efeitos colaterais.
Dummy Object Dummy Object – usado apenas para que a execução do teste seja possível
Test Stub Test Stub – provê informação necessária para a unidade de teste
Test Spy Test Spy – captura e armazena as chamadas indiretas
Mock Object Mock Object – verifica chamadas indiretas e provê dados necessários ao teste
Fake Object Fake Object – provê uma implementação falsa de um objeto real
Nota Fiscal Item
Produto Fornecedor
Add Item
Queremos verificar a adição de um produto na nota fiscal.Queremos verificar a adição de um produto na nota fiscal.Suponha que para criar a nota seja obrigatório informar o fornececedor, Suponha que para criar a nota seja obrigatório informar o fornececedor,
porém ele não será utilizado para exercitar o teste.porém ele não será utilizado para exercitar o teste.
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 colateraisprovocados 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 colateraiscausados pela unidade sob teste
EstritoEstrito: espera as mesmas chamadas exatamente namesma ordem que especificado
Tolerante: Tolerante: aceita qualquer ordem das chamadas,inclusive com chamadas a mais ou a menos
Substitui funcionalidade real por umaSubstitui funcionalidade real por umaimplementação alternativa.implementação alternativa.Emulando o comportamento real, com Emulando o comportamento real, com características amigáveis ao teste.características amigáveis ao teste.
Não é controlado nem observado pelo Não é controlado nem observado pelo teste.teste.
Mais exemplosMais exemplos
Escolhendo entre as diferençasEscolhendo entre as diferenças
Classista ou Mockista?Classista ou Mockista?
Ferramentas Ferramentas
VantagensVantagens
Links Imagens
http://www.rethinkware.com/download/attachments/557237/testesunitarios.JPG?version=1&modificationDate=1274749852384http://www.yogodoshi.com/blog/wp-content/uploads/hacker2.jpghttp://3.bp.blogspot.com/__8RKQKezcsk/TQee5_GRrEI/AAAAAAAABtk/-RNZUvv3Boo/s1600/0000+ideia.jpghttp://www.corposaudavel.net/wp-content/uploads/beneficios-laranja.jpghttp://dojofloripa.wordpress.com/2006/10/17/trabalhando-com-stubs/http://i.s8.com.br/images/sport/cover/img2/21203992_4.jpghttp://www.stanford.edu/group/storytelling/cgi-bin/joomla/images/stories/Impostor.jpghttp://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 Bravohttp://ccsl.ime.usp.br/agilcoop/files/TestesAutomatizados-3-1-Dubles-AgilCoop-Verao2009.pdf
Livro: xUnit Patternshttp://xunitpatterns.com/Test%20Spy.html