SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
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.
[object Object],[object Object],[object Object],[object Object],[object Object]
 
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

Contenu connexe

Tendances

Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitRobinson Castilho
 
SITSP Developers 2016 - ABAP c/ TDD
SITSP Developers 2016 - ABAP c/ TDDSITSP Developers 2016 - ABAP c/ TDD
SITSP Developers 2016 - ABAP c/ TDDJose Nunes
 
Casos teste integração efetiva de algumas unidades
Casos teste integração efetiva de algumas unidades Casos teste integração efetiva de algumas unidades
Casos teste integração efetiva de algumas unidades Adriana Telles
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizadosThiago Ghisi
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de SoftwareMaurício Aniche
 
Introdução a testes unitários com jUnit
Introdução a testes unitários com jUnitIntrodução a testes unitários com jUnit
Introdução a testes unitários com jUnitLeonardo Soares
 

Tendances (8)

Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnit
 
SITSP Developers 2016 - ABAP c/ TDD
SITSP Developers 2016 - ABAP c/ TDDSITSP Developers 2016 - ABAP c/ TDD
SITSP Developers 2016 - ABAP c/ TDD
 
Casos teste integração efetiva de algumas unidades
Casos teste integração efetiva de algumas unidades Casos teste integração efetiva de algumas unidades
Casos teste integração efetiva de algumas unidades
 
Testes
TestesTestes
Testes
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de Software
 
Introdução a testes unitários com jUnit
Introdução a testes unitários com jUnitIntrodução a testes unitários com jUnit
Introdução a testes unitários com jUnit
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 

En vedette (7)

Casa e Lar
Casa e LarCasa e Lar
Casa e Lar
 
Pregó 2012
Pregó 2012Pregó 2012
Pregó 2012
 
Apresentação Institucional - Muraski Imóveis
Apresentação Institucional - Muraski ImóveisApresentação Institucional - Muraski Imóveis
Apresentação Institucional - Muraski Imóveis
 
2 encontro proinfo 100h
2 encontro proinfo 100h2 encontro proinfo 100h
2 encontro proinfo 100h
 
La arquitectura de Grecia I
La arquitectura de Grecia ILa arquitectura de Grecia I
La arquitectura de Grecia I
 
Comunicação Digital: Olfativi
Comunicação Digital: OlfativiComunicação Digital: Olfativi
Comunicação Digital: Olfativi
 
Excursiones verano. Mallorca.
Excursiones verano. Mallorca.Excursiones verano. Mallorca.
Excursiones verano. Mallorca.
 

Similaire à Usando Dublês de Teste

Android DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidAndroid DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidiMasters
 
Indo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps AndroidIndo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps AndroidEduardo Carrara de Araujo
 
Descomplicando os mocks - pyse
Descomplicando os mocks - pyseDescomplicando os mocks - pyse
Descomplicando os mocks - pyseDouglas Bastos
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressWalmyr Lima e Silva Filho
 
Testes unitários com Qunit
Testes unitários com QunitTestes unitários com Qunit
Testes unitários com QunitThiago Tiveron
 
Test-driven development & Mocking
Test-driven development & MockingTest-driven development & Mocking
Test-driven development & MockingDaniel Tamiosso
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareCamilo Ribeiro
 
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...minastestingconference
 
Introdução À Automação de Testes com Selenium
Introdução À Automação de Testes com SeleniumIntrodução À Automação de Testes com Selenium
Introdução À Automação de Testes com Seleniumrodrigogouveia
 
TDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaTDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaChristian Cunha
 
Workshop - Plano de Testes End to End com o Microsoft Test Manager
Workshop   - Plano de Testes End to End com o Microsoft Test ManagerWorkshop   - Plano de Testes End to End com o Microsoft Test Manager
Workshop - Plano de Testes End to End com o Microsoft Test ManagerAlan Carlos
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 

Similaire à Usando Dublês de Teste (20)

TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
Android DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidAndroid DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps Android
 
Indo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps AndroidIndo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps Android
 
Descomplicando os mocks - pyse
Descomplicando os mocks - pyseDescomplicando os mocks - pyse
Descomplicando os mocks - pyse
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
 
Testes unitários com Qunit
Testes unitários com QunitTestes unitários com Qunit
Testes unitários com Qunit
 
Test-driven development & Mocking
Test-driven development & MockingTest-driven development & Mocking
Test-driven development & Mocking
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
Fases testes
Fases testesFases testes
Fases testes
 
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Introdução À Automação de Testes com Selenium
Introdução À Automação de Testes com SeleniumIntrodução À Automação de Testes com Selenium
Introdução À Automação de Testes com Selenium
 
JUnit
JUnitJUnit
JUnit
 
TDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaTDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian Cunha
 
Workshop - Plano de Testes End to End com o Microsoft Test Manager
Workshop   - Plano de Testes End to End com o Microsoft Test ManagerWorkshop   - Plano de Testes End to End com o Microsoft Test Manager
Workshop - Plano de Testes End to End com o Microsoft Test Manager
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Ibm app scan
Ibm app scanIbm app scan
Ibm app scan
 

Plus de Ismael

TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilTDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilIsmael
 
Introducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIntroducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIsmael
 
Testes de unidade alem do basico
Testes de unidade alem do basicoTestes de unidade alem do basico
Testes de unidade alem do basicoIsmael
 
Bluesoft Culture
Bluesoft CultureBluesoft Culture
Bluesoft CultureIsmael
 
Como dar e receber feedbacks
Como dar e receber feedbacksComo dar e receber feedbacks
Como dar e receber feedbacksIsmael
 
Eficiencia de fluxo
Eficiencia de fluxoEficiencia de fluxo
Eficiencia de fluxoIsmael
 
Como você testa seu software TDC 2017
Como você testa seu software  TDC 2017Como você testa seu software  TDC 2017
Como você testa seu software TDC 2017Ismael
 
Como ter Entregas Frequentes
Como ter Entregas FrequentesComo ter Entregas Frequentes
Como ter Entregas FrequentesIsmael
 
JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4Ismael
 
Conceitos por trás do Ágil
Conceitos por trás do ÁgilConceitos por trás do Ágil
Conceitos por trás do ÁgilIsmael
 
Boas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesBoas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesIsmael
 
8 passos para mudança de John Kotter
8 passos para mudança de John Kotter8 passos para mudança de John Kotter
8 passos para mudança de John KotterIsmael
 
Curva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossCurva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossIsmael
 
DevCamp 2016
DevCamp 2016DevCamp 2016
DevCamp 2016Ismael
 
7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider AgilIsmael
 
Law of demeter
Law of demeterLaw of demeter
Law of demeterIsmael
 
Junit Lambda
Junit LambdaJunit Lambda
Junit LambdaIsmael
 
Feedback dos Testes
Feedback dos TestesFeedback dos Testes
Feedback dos TestesIsmael
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - EstrategiasIsmael
 
Refactoring Databases - parte 1
Refactoring Databases - parte 1Refactoring Databases - parte 1
Refactoring Databases - parte 1Ismael
 

Plus de Ismael (20)

TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão ÁgilTDC 2020 - Trilha de Management 3.0 e Gestão Ágil
TDC 2020 - Trilha de Management 3.0 e Gestão Ágil
 
Introducao ao Pensamento Sistemico
Introducao ao Pensamento SistemicoIntroducao ao Pensamento Sistemico
Introducao ao Pensamento Sistemico
 
Testes de unidade alem do basico
Testes de unidade alem do basicoTestes de unidade alem do basico
Testes de unidade alem do basico
 
Bluesoft Culture
Bluesoft CultureBluesoft Culture
Bluesoft Culture
 
Como dar e receber feedbacks
Como dar e receber feedbacksComo dar e receber feedbacks
Como dar e receber feedbacks
 
Eficiencia de fluxo
Eficiencia de fluxoEficiencia de fluxo
Eficiencia de fluxo
 
Como você testa seu software TDC 2017
Como você testa seu software  TDC 2017Como você testa seu software  TDC 2017
Como você testa seu software TDC 2017
 
Como ter Entregas Frequentes
Como ter Entregas FrequentesComo ter Entregas Frequentes
Como ter Entregas Frequentes
 
JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4JUnit 5 vs JUnit 4
JUnit 5 vs JUnit 4
 
Conceitos por trás do Ágil
Conceitos por trás do ÁgilConceitos por trás do Ágil
Conceitos por trás do Ágil
 
Boas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros MacetesBoas Praticas de Testes, Bad Smell e Outros Macetes
Boas Praticas de Testes, Bad Smell e Outros Macetes
 
8 passos para mudança de John Kotter
8 passos para mudança de John Kotter8 passos para mudança de John Kotter
8 passos para mudança de John Kotter
 
Curva da Mudança Kubler-Ross
Curva da Mudança Kubler-RossCurva da Mudança Kubler-Ross
Curva da Mudança Kubler-Ross
 
DevCamp 2016
DevCamp 2016DevCamp 2016
DevCamp 2016
 
7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil7 Caracteristicas de um bom Lider Agil
7 Caracteristicas de um bom Lider Agil
 
Law of demeter
Law of demeterLaw of demeter
Law of demeter
 
Junit Lambda
Junit LambdaJunit Lambda
Junit Lambda
 
Feedback dos Testes
Feedback dos TestesFeedback dos Testes
Feedback dos Testes
 
Refactoring Databases - Estrategias
Refactoring Databases - EstrategiasRefactoring Databases - Estrategias
Refactoring Databases - Estrategias
 
Refactoring Databases - parte 1
Refactoring Databases - parte 1Refactoring Databases - parte 1
Refactoring Databases - parte 1
 

Usando Dublês de Teste

  • 2. Testes unitários focam apenas em uma unidade.
  • 3. Gasta-se muito tempo criando Fixtures que não são o alvo do teste
  • 4. Posso ganhar agilidade usando Dublês de Testes? Brilhante! Use Dublês de Testes!!!
  • 5. Os Dublês oferecem uma 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 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
  • 10. 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
  • 11.  
  • 12.  
  • 13. Força um determinado comportamento para tornar possível verificar o tratamento de Exceptions.
  • 14. Captura informações sobre os efeitos colaterais provocados pela unidade sob teste, para que o teste verifique se estão corretos.
  • 16. Retornos pré-estabelecidos Verificações de interações Verifica diretamente os efeitos colaterais causados pela unidade sob teste
  • 17. 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
  • 18. 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.
  • 19.
  • 20.  
  • 21. 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
  • 22. 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