SlideShare uma empresa Scribd logo
1 de 36
Projeto de Software com Testes Unitários e TDD Lucas Nazário dos Santos
Apesar do seu nome, “ test driven ” ou “ test first ” development não é na realidade uma técnica de teste. TDD força o programador a pensar em vários aspectos da funcionalidade antes de implementá-la. Muitas equipes utilizam “ customer facing ”, ou “ story ”  tests  para ajudar no desenvolvimento do código. Esses testes ilustram os requisitos e regras de negócio. Programadores escrevem código para fazer os testes passarem, o que mostra ao cliente que o código entregue endereça suas expectativas. TDD produz código com muito menos  unit-level bugs , menos  bugs  funcionais e uma probabilidade exponencial de endereçar as expectativas dos  stakeholders .
TDD foca a atenção do programador na interface e no comportamento do software. Organizações reconhecerão os benefícios do TDD tanto como uma técnica de teste como de projeto de software. Quando se escreve o teste antes do código, o programador decide não somente sobre a interface do software, mas também sobre o seu comportamento. TDD foca em como a técnica guia a análise, projeto e decisões de programação.
É uma estratégia de desenvolvimento que endereça tanto o projeto quanto o teste. TDD afeta a qualidade interna do projeto de software.
 
Agenda ,[object Object],[object Object],[object Object],[object Object],[object Object]
Teste unitário é simples. Qualquer um pode utilizar. Teste unitário
Você não precisa de nada sofisticado. Teste unitário
Os testes unitários cooperam com a gerência de risco Teste unitário
Os testes unitários exercitam o software Teste unitário
Os testes unitários documentam as funcionalidades Teste unitário
Teste unitário
Test-driven development Red Green Refactor Adiciona um teste que falha Adiciona qualquer código Refatora o código conforme necessário
Test-driven development: exemplo
Test-driven development: exemplo
Test-driven development: exemplo
Test-driven development: exemplo
Test-driven development: exemplo
Projetando software com TDD Durante os primeiros dias de cada iteração, nós  discutimos as  stories com o cliente . Nós utilizamos toda a informação  capturada através das interações com  os clientes para  escrever  high-level test  cases  para cada  story . Quando o desenvolvedor inicia a  codificação de uma story, ele  estuda os  test cases  para garantir que as  funcionalidades básicas foram  entendidas. Assim que a codificação inicia, é  escrito um teste executável simples  para a  story . O programador escreve código para  fazer o teste passar  e então  mais testes  unitários podem ser adicionados  para  adequar a cobertura.
Projetando software com TDD Etapa 1: Análise Disponibilizar uma opção para ordenação dos itens do carrinho de compras (por ordem de inserção e alfabética). High-level test cases User stories
Etapa 2: Projeto Projetando software com TDD Disponibilizar uma opção para ordenação dos itens do carrinho de compras (por ordem de inserção e alfabética).
Projetando software com TDD Etapa 2: Projeto
Projetando software com TDD Etapa 2: Projeto
Projetando software com TDD Etapa 2: Projeto - programação pelos pares
Projetando software com TDD Etapa 2: Projeto - revisão pelos pares
Projetando software com TDD Etapa 3: Codificação – 1º cenário Projeta Codifica Projetista/Programador
Projetando software com TDD Etapa 3: Codificação – 2º cenário Projeta Codifica Projetista Programador
Projetando software com TDD Etapa 4: Teste Recebe Testa Testador
Projetando software com TDD Etapa 4: Teste “ Estudos revelaram que programadores utilizando TDD produzem código que passam com sucesso entre 18% e 50% mais casos de uso externo do que código produzido por grupos que não utilizam TDD.” Software Architecture Improvement through Test-Driven Development (ACM Press, 2005)
Limitações Projeto de interfaces
Limitações Projeto de componentes intimamente relacionados a  containers
Onde procurar a partir daqui? http://retriever.stela.org.br/
Onde procurar a partir daqui? http://www.junit.org/
Onde procurar a partir daqui?
Onde procurar a partir daqui? Referência para os artigos
MUITO OBRIGADO! Lucas Nazário dos Santos TDD foca a atenção do programador na interface e no comportamento do software. Quando se escreve o teste antes do código, o programador decide não somente sobre a interface do software, mas também sobre o seu comportamento. Conclusão

Mais conteúdo relacionado

Mais procurados

Ferramentas Case de Teste
Ferramentas Case de TesteFerramentas Case de Teste
Ferramentas Case de Teste
Beatriz Marques
 
Introdução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCasting
Pedro Pereira Martins
 

Mais procurados (19)

TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDD
 
DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?DevQA: Como medir qualidade de código ?
DevQA: Como medir qualidade de código ?
 
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeis
 
Seu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de código
Seu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de códigoSeu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de código
Seu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de código
 
Ferramentas Case de Teste
Ferramentas Case de TesteFerramentas Case de Teste
Ferramentas Case de Teste
 
Apresentação TDC2015
Apresentação TDC2015Apresentação TDC2015
Apresentação TDC2015
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
Introdução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCastingIntrodução ao TDD nas soluções Global AppCasting
Introdução ao TDD nas soluções Global AppCasting
 
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
 
Tech talk clean architecture and_pyramid_test
Tech talk clean architecture and_pyramid_testTech talk clean architecture and_pyramid_test
Tech talk clean architecture and_pyramid_test
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a Qualidade
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu código
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Qualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberQualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saber
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao teste
 

Semelhante a Instituto Stela S&T#001, Projeto de software com testes unitários

Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
Carlos Gonzaga
 

Semelhante a Instituto Stela S&T#001, Projeto de software com testes unitários (20)

TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Subm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINAL
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Aula - Teste de Software
Aula - Teste de SoftwareAula - Teste de Software
Aula - Teste de Software
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Behavior Driven Development - Unificando propostas de negócio com testes e có...
Behavior Driven Development - Unificando propostas de negócio com testes e có...Behavior Driven Development - Unificando propostas de negócio com testes e có...
Behavior Driven Development - Unificando propostas de negócio com testes e có...
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
Bdd&tdd
Bdd&tddBdd&tdd
Bdd&tdd
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
 
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfINTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de Software
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de Software
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
 
Cobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeCobertura de Código: Testes de Unidade
Cobertura de Código: Testes de Unidade
 
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareDevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
 

Mais de Instituto Stela (Florianópolis-SC, Brasil)

Mais de Instituto Stela (Florianópolis-SC, Brasil) (6)

Instituciones de I+D - Agentes de la Relación Universidad-Empresa y de la vi...
Instituciones de I+D - Agentes de la Relación Universidad-Empresa y de la vi...Instituciones de I+D - Agentes de la Relación Universidad-Empresa y de la vi...
Instituciones de I+D - Agentes de la Relación Universidad-Empresa y de la vi...
 
Currículo Lattes e Portal Inovação: Oportunidades para o especialista e a ins...
Currículo Lattes e Portal Inovação: Oportunidades para o especialista e a ins...Currículo Lattes e Portal Inovação: Oportunidades para o especialista e a ins...
Currículo Lattes e Portal Inovação: Oportunidades para o especialista e a ins...
 
Perspectivas para la construcción de indicadores en plataformas de gobierno e...
Perspectivas para la construcción de indicadores en plataformas de gobierno e...Perspectivas para la construcción de indicadores en plataformas de gobierno e...
Perspectivas para la construcción de indicadores en plataformas de gobierno e...
 
Instituto Stela S&T#006, Visão sistêmica segundo Bunge
Instituto Stela S&T#006, Visão sistêmica segundo BungeInstituto Stela S&T#006, Visão sistêmica segundo Bunge
Instituto Stela S&T#006, Visão sistêmica segundo Bunge
 
Instituto Stela S&T#004, ITIL e governança de TI
Instituto Stela S&T#004, ITIL e governança de TIInstituto Stela S&T#004, ITIL e governança de TI
Instituto Stela S&T#004, ITIL e governança de TI
 
Instituto Stela S&T#002, So you're Canadian, eh?
Instituto Stela S&T#002, So you're Canadian, eh?Instituto Stela S&T#002, So you're Canadian, eh?
Instituto Stela S&T#002, So you're Canadian, eh?
 

Instituto Stela S&T#001, Projeto de software com testes unitários

  • 1. Projeto de Software com Testes Unitários e TDD Lucas Nazário dos Santos
  • 2. Apesar do seu nome, “ test driven ” ou “ test first ” development não é na realidade uma técnica de teste. TDD força o programador a pensar em vários aspectos da funcionalidade antes de implementá-la. Muitas equipes utilizam “ customer facing ”, ou “ story ” tests para ajudar no desenvolvimento do código. Esses testes ilustram os requisitos e regras de negócio. Programadores escrevem código para fazer os testes passarem, o que mostra ao cliente que o código entregue endereça suas expectativas. TDD produz código com muito menos unit-level bugs , menos bugs funcionais e uma probabilidade exponencial de endereçar as expectativas dos stakeholders .
  • 3. TDD foca a atenção do programador na interface e no comportamento do software. Organizações reconhecerão os benefícios do TDD tanto como uma técnica de teste como de projeto de software. Quando se escreve o teste antes do código, o programador decide não somente sobre a interface do software, mas também sobre o seu comportamento. TDD foca em como a técnica guia a análise, projeto e decisões de programação.
  • 4. É uma estratégia de desenvolvimento que endereça tanto o projeto quanto o teste. TDD afeta a qualidade interna do projeto de software.
  • 5.  
  • 6.
  • 7. Teste unitário é simples. Qualquer um pode utilizar. Teste unitário
  • 8. Você não precisa de nada sofisticado. Teste unitário
  • 9. Os testes unitários cooperam com a gerência de risco Teste unitário
  • 10. Os testes unitários exercitam o software Teste unitário
  • 11. Os testes unitários documentam as funcionalidades Teste unitário
  • 13. Test-driven development Red Green Refactor Adiciona um teste que falha Adiciona qualquer código Refatora o código conforme necessário
  • 19. Projetando software com TDD Durante os primeiros dias de cada iteração, nós discutimos as stories com o cliente . Nós utilizamos toda a informação capturada através das interações com os clientes para escrever high-level test cases para cada story . Quando o desenvolvedor inicia a codificação de uma story, ele estuda os test cases para garantir que as funcionalidades básicas foram entendidas. Assim que a codificação inicia, é escrito um teste executável simples para a story . O programador escreve código para fazer o teste passar e então mais testes unitários podem ser adicionados para adequar a cobertura.
  • 20. Projetando software com TDD Etapa 1: Análise Disponibilizar uma opção para ordenação dos itens do carrinho de compras (por ordem de inserção e alfabética). High-level test cases User stories
  • 21. Etapa 2: Projeto Projetando software com TDD Disponibilizar uma opção para ordenação dos itens do carrinho de compras (por ordem de inserção e alfabética).
  • 22. Projetando software com TDD Etapa 2: Projeto
  • 23. Projetando software com TDD Etapa 2: Projeto
  • 24. Projetando software com TDD Etapa 2: Projeto - programação pelos pares
  • 25. Projetando software com TDD Etapa 2: Projeto - revisão pelos pares
  • 26. Projetando software com TDD Etapa 3: Codificação – 1º cenário Projeta Codifica Projetista/Programador
  • 27. Projetando software com TDD Etapa 3: Codificação – 2º cenário Projeta Codifica Projetista Programador
  • 28. Projetando software com TDD Etapa 4: Teste Recebe Testa Testador
  • 29. Projetando software com TDD Etapa 4: Teste “ Estudos revelaram que programadores utilizando TDD produzem código que passam com sucesso entre 18% e 50% mais casos de uso externo do que código produzido por grupos que não utilizam TDD.” Software Architecture Improvement through Test-Driven Development (ACM Press, 2005)
  • 31. Limitações Projeto de componentes intimamente relacionados a containers
  • 32. Onde procurar a partir daqui? http://retriever.stela.org.br/
  • 33. Onde procurar a partir daqui? http://www.junit.org/
  • 34. Onde procurar a partir daqui?
  • 35. Onde procurar a partir daqui? Referência para os artigos
  • 36. MUITO OBRIGADO! Lucas Nazário dos Santos TDD foca a atenção do programador na interface e no comportamento do software. Quando se escreve o teste antes do código, o programador decide não somente sobre a interface do software, mas também sobre o seu comportamento. Conclusão