SlideShare uma empresa Scribd logo
1 de 12
Francisco Clauvane
Sobre
 Esta apresentacao teve como base o livro de TDD da
 casa do codigo, a minha experiencia profissional e as
 dicas dadas por profissionais mais experientes. Onde o
 objetivo da mesma nao e ensinar como usar o
 junit, mas sim, a importancia dos testes, e o que eles
 podem agregar de positivo em projetos de software.
Sumario
1.   Teste de unidade
2.   TDD
3.   Design de classes
4.   Qualidade do codigo
5.   Coesao
6.   Acoplamento
7.   Mock Objects
8.   Niveis de teste
9.   Quando nao usar TDD
1-Teste de unidade
 Os sistemas sao geralmente grandes e complexos
 Um teste de unidade nao se preocupa com o sistema
  todo, mas sim com um “pedaco” dele.
 Geralmente esses pedacos sao classes.
 Logo, os teste de unidade serao responsaveis pelas
  classes.
2-TDD
 Foco no teste e nao na implementacao
 Codigo nasce testado
 Simplicidade
 Melhor reflexao sobre o design de classes
 Sem TDD vamos obter o mesmo resultado?
    Feedback dos teste
3-Design de classe
 Para muitos TDD e um guia para um bom design de
 classes
   Feedback
 “A pratica de TDD nao guia o desenvolvedor para um
 bom projeto de classes de forma automatica;A
 experiencia e o conhecimento do desenvolvedor sao
 fundamentais para criar o software orientado a objeto”
4-Qualidade do codigo
 Testes podem apresentar problemas no codigo
 Teste deve ser algo facil e produtivo
 Todas as boas praticas que o desenvolvedor aplica no
  codigo de producao pode ser utilizado no codigo de
  teste
5-Coesao
 Classes que fazem muita coisas sao dificeis de serem
  mantidas
 Principio da responsabilidade unica
   Uma classe coesa e aquela que possui apenas uma unica
    responsabilidade
 Em sistemas orientado a objetos a ideia e sempre
 buscar classes coesas
   Feedback
6-Acoplamento
 Dizemos que uma classe esta acoplada a outra quando
 existe alguma relacao de dependencia entre elas
   Mudanca nesta classes podem impactar negativamente
 Inversao de controle e injecao de dependencia
    Repassando a dependencia para uma abstracao
    Cenario mais preparado para os impactos que as
     possiveis mudancas podem causar
 Classes altamente coesas e pouco acopladas sao dificeis
 de serem projetadas
7-Mock Objects
 Em um teste onde existem classes integradas, se o teste falhar
  , como saber qual objeto gerou o erro
 “Objetos duble”
    Objetos que simulam o comportamento de outras
    Simula objetos que surgem como dependencia durante os testes
 Mocks “escondem” problemas que so seriam vistos em producao
   Classes que representam entidades, servicos, utilitarios, ou
    qualquer coisa que “encoste” na infraestrutura nao deve ser
    mockada
   Classes complexas e trabalhosas devem ser mockadas, por
    exemplo,classes de infraestrutura
 Mockito
8-Niveis de teste
 Unidade
    Testa modulos( classes ) de forma independente do restante do
     sistema
 Integracao
    Testa os modulos funcionando de forma conjunta
    Botton-up
    Top-down
 Sistema
    Testa todo o sistema mas se preocupa apenas com aspecto gerais
    Aspectos funcionais
        Regra de negocio
    nao-funcionais
        Expectativa do cliente
Fim
 Sites e livros recomendados
    http://www.guj.com.br
    http://www.CasaDoCodigo.com.br
    http://www.caelum.com.br/online
    https://github.com/clauvane
    https://github.com/rponte

Mais conteúdo relacionado

Mais procurados

PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlinkslides_teltools
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
Automação de Teste Funcionais - Selenium
Automação de Teste Funcionais - SeleniumAutomação de Teste Funcionais - Selenium
Automação de Teste Funcionais - SeleniumIsrael Santiago
 
Teste de aplicações web com selenium
Teste de aplicações web com seleniumTeste de aplicações web com selenium
Teste de aplicações web com seleniumMayron Cachina
 
Realizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosRealizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosVIVIANE RANGEL
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e SeleniumAndré Thiago
 
Palestra tdd - rsjug
Palestra tdd - rsjugPalestra tdd - rsjug
Palestra tdd - rsjugBruno Maomeh
 
Testando aplicações Flex com Selenium
Testando aplicações Flex com SeleniumTestando aplicações Flex com Selenium
Testando aplicações Flex com SeleniumVictor Serta
 
Testes de interfaces Web com Selenium
Testes de interfaces Web com SeleniumTestes de interfaces Web com Selenium
Testes de interfaces Web com SeleniumRenato Groff
 
Test-Driven Development (TDD) - MSP Coding Day
Test-Driven Development (TDD) - MSP Coding DayTest-Driven Development (TDD) - MSP Coding Day
Test-Driven Development (TDD) - MSP Coding DayRenato Groff
 
Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmineRangel Javier
 
JUnit - Selenium
JUnit - SeleniumJUnit - Selenium
JUnit - SeleniumCaue Guerra
 

Mais procurados (20)

Testlink apresentacao
Testlink apresentacaoTestlink apresentacao
Testlink apresentacao
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlink
 
Selenium
SeleniumSelenium
Selenium
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Test link
Test linkTest link
Test link
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Automação de Teste Funcionais - Selenium
Automação de Teste Funcionais - SeleniumAutomação de Teste Funcionais - Selenium
Automação de Teste Funcionais - Selenium
 
Teste de aplicações web com selenium
Teste de aplicações web com seleniumTeste de aplicações web com selenium
Teste de aplicações web com selenium
 
Realizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosRealizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitos
 
Testes unitários e Mocks
Testes unitários e MocksTestes unitários e Mocks
Testes unitários e Mocks
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
 
Palestra tdd - rsjug
Palestra tdd - rsjugPalestra tdd - rsjug
Palestra tdd - rsjug
 
Testando aplicações Flex com Selenium
Testando aplicações Flex com SeleniumTestando aplicações Flex com Selenium
Testando aplicações Flex com Selenium
 
Testes de interfaces Web com Selenium
Testes de interfaces Web com SeleniumTestes de interfaces Web com Selenium
Testes de interfaces Web com Selenium
 
Test-Driven Development (TDD) - MSP Coding Day
Test-Driven Development (TDD) - MSP Coding DayTest-Driven Development (TDD) - MSP Coding Day
Test-Driven Development (TDD) - MSP Coding Day
 
JUnit Experience
JUnit ExperienceJUnit Experience
JUnit Experience
 
Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmine
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
O poder do TDD
O poder do TDDO poder do TDD
O poder do TDD
 
JUnit - Selenium
JUnit - SeleniumJUnit - Selenium
JUnit - Selenium
 

Destaque

Omelette in juice
Omelette in juiceOmelette in juice
Omelette in juiceisa_banet
 
F home sodo
F home sodoF home sodo
F home sodoVIP REAL
 
Gestion basica de la infomacion
Gestion basica de la infomacionGestion basica de la infomacion
Gestion basica de la infomacionsynyster1234
 
Reformation
Reformation Reformation
Reformation Heka Hime
 
Grand rounds presentation lauren ritchey updated last
Grand rounds presentation lauren ritchey updated lastGrand rounds presentation lauren ritchey updated last
Grand rounds presentation lauren ritchey updated lastLaur7114
 
142-147_Konceptualna moda
142-147_Konceptualna moda142-147_Konceptualna moda
142-147_Konceptualna modaIno Zeljak
 
Announcements2.24.13revised
Announcements2.24.13revisedAnnouncements2.24.13revised
Announcements2.24.13revisedstjamesame
 
Ciudadanos protagonistas
Ciudadanos protagonistas Ciudadanos protagonistas
Ciudadanos protagonistas carloschavesb
 
DH Art History - PSU
DH Art History - PSUDH Art History - PSU
DH Art History - PSUgtritchroman
 
Cfes ssubsidios sociojuridico2014
Cfes ssubsidios sociojuridico2014Cfes ssubsidios sociojuridico2014
Cfes ssubsidios sociojuridico2014Barbara Amaro
 
Proyecto pedagógico de ingles
Proyecto pedagógico de inglesProyecto pedagógico de ingles
Proyecto pedagógico de inglesRonald Cardenas
 
Presentación contenidos de la asignatura "Diseño y Desarrollo de Materiales d...
Presentación contenidos de la asignatura "Diseño y Desarrollo de Materiales d...Presentación contenidos de la asignatura "Diseño y Desarrollo de Materiales d...
Presentación contenidos de la asignatura "Diseño y Desarrollo de Materiales d...Beatriz_MTE
 
How important is SEE for Western Energy Security
How important is SEE for Western Energy SecurityHow important is SEE for Western Energy Security
How important is SEE for Western Energy SecurityNick Chatzipoulidis
 

Destaque (20)

Omelette in juice
Omelette in juiceOmelette in juice
Omelette in juice
 
F home sodo
F home sodoF home sodo
F home sodo
 
בית רשת
בית רשתבית רשת
בית רשת
 
Gestion basica de la infomacion
Gestion basica de la infomacionGestion basica de la infomacion
Gestion basica de la infomacion
 
Mia z
Mia zMia z
Mia z
 
Reformation
Reformation Reformation
Reformation
 
Grand rounds presentation lauren ritchey updated last
Grand rounds presentation lauren ritchey updated lastGrand rounds presentation lauren ritchey updated last
Grand rounds presentation lauren ritchey updated last
 
142-147_Konceptualna moda
142-147_Konceptualna moda142-147_Konceptualna moda
142-147_Konceptualna moda
 
Matriz tpack proyecto
Matriz tpack proyectoMatriz tpack proyecto
Matriz tpack proyecto
 
Announcements2.24.13revised
Announcements2.24.13revisedAnnouncements2.24.13revised
Announcements2.24.13revised
 
Ciudadanos protagonistas
Ciudadanos protagonistas Ciudadanos protagonistas
Ciudadanos protagonistas
 
Rd ed2ano1 artigo11-liene_leal
Rd ed2ano1 artigo11-liene_lealRd ed2ano1 artigo11-liene_leal
Rd ed2ano1 artigo11-liene_leal
 
DH Art History - PSU
DH Art History - PSUDH Art History - PSU
DH Art History - PSU
 
Rsepi
RsepiRsepi
Rsepi
 
Cfes ssubsidios sociojuridico2014
Cfes ssubsidios sociojuridico2014Cfes ssubsidios sociojuridico2014
Cfes ssubsidios sociojuridico2014
 
Proyecto pedagógico de ingles
Proyecto pedagógico de inglesProyecto pedagógico de ingles
Proyecto pedagógico de ingles
 
Loksangharsh patrika march 2015
Loksangharsh patrika march 2015Loksangharsh patrika march 2015
Loksangharsh patrika march 2015
 
Trabajo utilitarismo (1)
Trabajo utilitarismo (1)Trabajo utilitarismo (1)
Trabajo utilitarismo (1)
 
Presentación contenidos de la asignatura "Diseño y Desarrollo de Materiales d...
Presentación contenidos de la asignatura "Diseño y Desarrollo de Materiales d...Presentación contenidos de la asignatura "Diseño y Desarrollo de Materiales d...
Presentación contenidos de la asignatura "Diseño y Desarrollo de Materiales d...
 
How important is SEE for Western Energy Security
How important is SEE for Western Energy SecurityHow important is SEE for Western Energy Security
How important is SEE for Western Energy Security
 

Semelhante a TDD e testes de unidade

O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
 
A influência do Test-Driven Design no projeto de classes e no design em siste...
A influência do Test-Driven Design no projeto de classes e no design em siste...A influência do Test-Driven Design no projeto de classes e no design em siste...
A influência do Test-Driven Design no projeto de classes e no design em siste...Toni Esteves
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de UnidadeAline Ferreira
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizadosThiago Ghisi
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Maurício Aniche
 
Desenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por testeDesenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por testeUniversidade Tiradentes
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Test Driven Development - Conceitos básicos
Test Driven Development - Conceitos básicosTest Driven Development - Conceitos básicos
Test Driven Development - Conceitos básicosMateus Parente
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
Como fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaComo fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaPaula Santana
 

Semelhante a TDD e testes de unidade (20)

Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Test day 2012
Test day 2012Test day 2012
Test day 2012
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
A influência do Test-Driven Design no projeto de classes e no design em siste...
A influência do Test-Driven Design no projeto de classes e no design em siste...A influência do Test-Driven Design no projeto de classes e no design em siste...
A influência do Test-Driven Design no projeto de classes e no design em siste...
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.net
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?
 
Desenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por testeDesenvolvimento dirigido por comportamento e por teste
Desenvolvimento dirigido por comportamento e por teste
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Teste Driven Development
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
 
Test Driven Development - Conceitos básicos
Test Driven Development - Conceitos básicosTest Driven Development - Conceitos básicos
Test Driven Development - Conceitos básicos
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
Como fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em javaComo fazer um bom desgn de c[odigo em java
Como fazer um bom desgn de c[odigo em java
 

TDD e testes de unidade

  • 2. Sobre  Esta apresentacao teve como base o livro de TDD da casa do codigo, a minha experiencia profissional e as dicas dadas por profissionais mais experientes. Onde o objetivo da mesma nao e ensinar como usar o junit, mas sim, a importancia dos testes, e o que eles podem agregar de positivo em projetos de software.
  • 3. Sumario 1. Teste de unidade 2. TDD 3. Design de classes 4. Qualidade do codigo 5. Coesao 6. Acoplamento 7. Mock Objects 8. Niveis de teste 9. Quando nao usar TDD
  • 4. 1-Teste de unidade  Os sistemas sao geralmente grandes e complexos  Um teste de unidade nao se preocupa com o sistema todo, mas sim com um “pedaco” dele.  Geralmente esses pedacos sao classes.  Logo, os teste de unidade serao responsaveis pelas classes.
  • 5. 2-TDD  Foco no teste e nao na implementacao  Codigo nasce testado  Simplicidade  Melhor reflexao sobre o design de classes  Sem TDD vamos obter o mesmo resultado?  Feedback dos teste
  • 6. 3-Design de classe  Para muitos TDD e um guia para um bom design de classes  Feedback  “A pratica de TDD nao guia o desenvolvedor para um bom projeto de classes de forma automatica;A experiencia e o conhecimento do desenvolvedor sao fundamentais para criar o software orientado a objeto”
  • 7. 4-Qualidade do codigo  Testes podem apresentar problemas no codigo  Teste deve ser algo facil e produtivo  Todas as boas praticas que o desenvolvedor aplica no codigo de producao pode ser utilizado no codigo de teste
  • 8. 5-Coesao  Classes que fazem muita coisas sao dificeis de serem mantidas  Principio da responsabilidade unica  Uma classe coesa e aquela que possui apenas uma unica responsabilidade  Em sistemas orientado a objetos a ideia e sempre buscar classes coesas  Feedback
  • 9. 6-Acoplamento  Dizemos que uma classe esta acoplada a outra quando existe alguma relacao de dependencia entre elas  Mudanca nesta classes podem impactar negativamente  Inversao de controle e injecao de dependencia  Repassando a dependencia para uma abstracao  Cenario mais preparado para os impactos que as possiveis mudancas podem causar  Classes altamente coesas e pouco acopladas sao dificeis de serem projetadas
  • 10. 7-Mock Objects  Em um teste onde existem classes integradas, se o teste falhar , como saber qual objeto gerou o erro  “Objetos duble”  Objetos que simulam o comportamento de outras  Simula objetos que surgem como dependencia durante os testes  Mocks “escondem” problemas que so seriam vistos em producao  Classes que representam entidades, servicos, utilitarios, ou qualquer coisa que “encoste” na infraestrutura nao deve ser mockada  Classes complexas e trabalhosas devem ser mockadas, por exemplo,classes de infraestrutura  Mockito
  • 11. 8-Niveis de teste  Unidade  Testa modulos( classes ) de forma independente do restante do sistema  Integracao  Testa os modulos funcionando de forma conjunta  Botton-up  Top-down  Sistema  Testa todo o sistema mas se preocupa apenas com aspecto gerais  Aspectos funcionais  Regra de negocio  nao-funcionais  Expectativa do cliente
  • 12. Fim  Sites e livros recomendados  http://www.guj.com.br  http://www.CasaDoCodigo.com.br  http://www.caelum.com.br/online  https://github.com/clauvane  https://github.com/rponte