SlideShare uma empresa Scribd logo

Introdução ao TDD

Contextualização e benefícios do desenvolvimento baseado em testes

1 de 61
Baixar para ler offline
@dudumendes




Desenvolvimento
Baseado em Testes
  Eduardo Mendes de Oliveira
       edumendes@gmail.com
@dudumendes




            Agenda
• Introdução
• Conceitos de desenvolvimento orientados a
  testes

 • TDD / BDD
• Revisão de Refatoração
• Padrões de teste
• Ferramentas
• Aulas práticas    2
@dudumendes




Introdução
@dudumendes



Processo de Software

                      Projeto	
  e	
  
    Especificação
                   Implementação




     Validação         Evolução
@dudumendes

Contexto do Processo de
   Sofware - Equipe
•Algo novo para a equipe de software
 •pessoas envolvidas
 •domínio da aplicação
 •tecnologia utilizada
 •uma combinação dos 03 anteriores
•Elementos surpresas
@dudumendes

Contexto do Processo de
   Sofware - Cliente

•Obriga a criar um novo olhar sobre a
  organização a partir de uma nova
  perspectiva
•É preciso negociar e formalizar
  processos que até então eram
  baseados na experiência e
  convenções

Recomendados

TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven DevelopmentElias Nogueira
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeRafaela Prado
 
TDD (Test Driven Design)
TDD (Test Driven Design)TDD (Test Driven Design)
TDD (Test Driven Design)nedirtv
 
Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...Thiago Faria de Andrade
 
Agile Test Driven Development
Agile Test Driven DevelopmentAgile Test Driven Development
Agile Test Driven DevelopmentViraf Karai
 
DevOps a pratical approach
DevOps a pratical approachDevOps a pratical approach
DevOps a pratical approachSiderlan Santos
 

Mais conteúdo relacionado

Mais procurados

Shifting Security Left - The Innovation of DevSecOps - ValleyTechCon
Shifting Security Left - The Innovation of DevSecOps - ValleyTechConShifting Security Left - The Innovation of DevSecOps - ValleyTechCon
Shifting Security Left - The Innovation of DevSecOps - ValleyTechConTom Stiehm
 
Roles and Responsibilities of a DevOps Engineer
Roles and Responsibilities of a DevOps EngineerRoles and Responsibilities of a DevOps Engineer
Roles and Responsibilities of a DevOps EngineerZaranTech LLC
 
Unit testing framework
Unit testing frameworkUnit testing framework
Unit testing frameworkIgor Vavrish
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven DevelopmentTung Nguyen Thanh
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)David Ehringer
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de UnidadeAline Ferreira
 
Bdd com cucumber + java + selenium
Bdd com cucumber + java + seleniumBdd com cucumber + java + selenium
Bdd com cucumber + java + seleniumSandy Maciel
 
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010guest5639fa9
 
Devops Devops Devops
Devops Devops DevopsDevops Devops Devops
Devops Devops DevopsKris Buytaert
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven DevelopmentJohn Blum
 
Knowledge sharing for QA teams
Knowledge sharing for QA teamsKnowledge sharing for QA teams
Knowledge sharing for QA teamsZbyszek Mockun
 
Arquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoArquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoMorvana Bonin
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Developmentguestc8093a6
 

Mais procurados (20)

Shifting Security Left - The Innovation of DevSecOps - ValleyTechCon
Shifting Security Left - The Innovation of DevSecOps - ValleyTechConShifting Security Left - The Innovation of DevSecOps - ValleyTechCon
Shifting Security Left - The Innovation of DevSecOps - ValleyTechCon
 
Roles and Responsibilities of a DevOps Engineer
Roles and Responsibilities of a DevOps EngineerRoles and Responsibilities of a DevOps Engineer
Roles and Responsibilities of a DevOps Engineer
 
Unit testing framework
Unit testing frameworkUnit testing framework
Unit testing framework
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
DevOps
DevOps DevOps
DevOps
 
Unit Testing in Swift
Unit Testing in SwiftUnit Testing in Swift
Unit Testing in Swift
 
Teste de Software - Introdução
Teste de Software - IntroduçãoTeste de Software - Introdução
Teste de Software - Introdução
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
 
Bdd com cucumber + java + selenium
Bdd com cucumber + java + seleniumBdd com cucumber + java + selenium
Bdd com cucumber + java + selenium
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010
 
Devops Devops Devops
Devops Devops DevopsDevops Devops Devops
Devops Devops Devops
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 
Knowledge sharing for QA teams
Knowledge sharing for QA teamsKnowledge sharing for QA teams
Knowledge sharing for QA teams
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Arquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoArquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introdução
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 

Destaque

Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Eduardo Mendes
 
Turbinando o desenvolvimento com Eclipse
Turbinando o desenvolvimento com EclipseTurbinando o desenvolvimento com Eclipse
Turbinando o desenvolvimento com EclipseMarcos Sousa
 
Testes de Software parte 2
Testes de Software parte 2Testes de Software parte 2
Testes de Software parte 2Eduardo Mendes
 
Academia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeAcademia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeGlobalcode
 
The Power of Collaboration to Build Your Own Startup
The Power of Collaboration to Build Your Own StartupThe Power of Collaboration to Build Your Own Startup
The Power of Collaboration to Build Your Own StartupTaufan Erfiyanto
 
Evolucao de software - parte 1
Evolucao de software - parte 1Evolucao de software - parte 1
Evolucao de software - parte 1Eduardo Mendes
 
Teste de Software - parte 1
Teste de Software - parte 1Teste de Software - parte 1
Teste de Software - parte 1Eduardo Mendes
 
Evolucao de software - parte 2
Evolucao de software - parte 2Evolucao de software - parte 2
Evolucao de software - parte 2Eduardo Mendes
 
Desenvolvimento Web com PHP parte 7
Desenvolvimento Web com PHP parte 7Desenvolvimento Web com PHP parte 7
Desenvolvimento Web com PHP parte 7Eduardo Mendes
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de RequisitosEduardo Mendes
 
TDD Projeto e Estrategias
TDD Projeto e EstrategiasTDD Projeto e Estrategias
TDD Projeto e EstrategiasEduardo Mendes
 
Introdução à Linguagem Ruby - Fundamentos - Parte 2
 Introdução à Linguagem Ruby - Fundamentos - Parte 2 Introdução à Linguagem Ruby - Fundamentos - Parte 2
Introdução à Linguagem Ruby - Fundamentos - Parte 2Eduardo Mendes
 
Desenvolvimento web com PHP parte 4
Desenvolvimento web com PHP parte 4Desenvolvimento web com PHP parte 4
Desenvolvimento web com PHP parte 4Eduardo Mendes
 
TDD - Prática com RSpec
TDD - Prática com RSpecTDD - Prática com RSpec
TDD - Prática com RSpecEduardo Mendes
 
Desenvolvimento web com PHP parte 3
Desenvolvimento web com PHP parte 3Desenvolvimento web com PHP parte 3
Desenvolvimento web com PHP parte 3Eduardo Mendes
 

Destaque (20)

Jquery
JqueryJquery
Jquery
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2
 
Turbinando o desenvolvimento com Eclipse
Turbinando o desenvolvimento com EclipseTurbinando o desenvolvimento com Eclipse
Turbinando o desenvolvimento com Eclipse
 
Testes de Software parte 2
Testes de Software parte 2Testes de Software parte 2
Testes de Software parte 2
 
Academia do Arquiteto Globalcode
Academia do Arquiteto GlobalcodeAcademia do Arquiteto Globalcode
Academia do Arquiteto Globalcode
 
The Power of Collaboration to Build Your Own Startup
The Power of Collaboration to Build Your Own StartupThe Power of Collaboration to Build Your Own Startup
The Power of Collaboration to Build Your Own Startup
 
Evolucao de software - parte 1
Evolucao de software - parte 1Evolucao de software - parte 1
Evolucao de software - parte 1
 
Teste de Software - parte 1
Teste de Software - parte 1Teste de Software - parte 1
Teste de Software - parte 1
 
RSpec com doubles
RSpec com doublesRSpec com doubles
RSpec com doubles
 
Evolucao de software - parte 2
Evolucao de software - parte 2Evolucao de software - parte 2
Evolucao de software - parte 2
 
Desenvolvimento Web com PHP parte 7
Desenvolvimento Web com PHP parte 7Desenvolvimento Web com PHP parte 7
Desenvolvimento Web com PHP parte 7
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Academia java intensivo
Academia java intensivoAcademia java intensivo
Academia java intensivo
 
TDD Projeto e Estrategias
TDD Projeto e EstrategiasTDD Projeto e Estrategias
TDD Projeto e Estrategias
 
Introdução à Linguagem Ruby - Fundamentos - Parte 2
 Introdução à Linguagem Ruby - Fundamentos - Parte 2 Introdução à Linguagem Ruby - Fundamentos - Parte 2
Introdução à Linguagem Ruby - Fundamentos - Parte 2
 
Desenvolvimento web com PHP parte 4
Desenvolvimento web com PHP parte 4Desenvolvimento web com PHP parte 4
Desenvolvimento web com PHP parte 4
 
TDD - Prática com RSpec
TDD - Prática com RSpecTDD - Prática com RSpec
TDD - Prática com RSpec
 
Desenvolvimento web com PHP parte 3
Desenvolvimento web com PHP parte 3Desenvolvimento web com PHP parte 3
Desenvolvimento web com PHP parte 3
 
Html Aula 1 - parte 2
Html Aula 1 - parte 2Html Aula 1 - parte 2
Html Aula 1 - parte 2
 
Rails - parte 1
Rails - parte 1Rails - parte 1
Rails - parte 1
 

Semelhante a Introdução ao TDD

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 AppCastingPedro Pereira Martins
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareDextra Sistemas / Etec Itu
 
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ândiaRogerio Fontes
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 
TDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a TestesTDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a TestesNetto Cavalcante
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código LegadoCesar Romero
 
Desenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesDesenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesAndre Carlucci
 
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGModelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGNeubio Ferreira
 
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
 

Semelhante a Introdução ao TDD (20)

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
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Testes
TestesTestes
Testes
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
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
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
TDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a TestesTDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a Testes
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código Legado
 
Criando uma Arquitetura Testável
Criando uma Arquitetura TestávelCriando uma Arquitetura Testável
Criando uma Arquitetura Testável
 
Desenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesDesenvolvimento Orientado a Testes
Desenvolvimento Orientado a Testes
 
Tdd On Rails
Tdd On RailsTdd On Rails
Tdd On Rails
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
 
Introdução a TDD
Introdução a TDDIntrodução a TDD
Introdução a TDD
 
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MGModelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
Modelagem Ágil - UaiJug TechDays 2013 - Uberlândia MG
 
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
 
TDD
TDDTDD
TDD
 

Mais de Eduardo Mendes

JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosEduardo Mendes
 
Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - FundamentosEduardo Mendes
 
Singleton - Padrão de Projeto
Singleton - Padrão de ProjetoSingleton - Padrão de Projeto
Singleton - Padrão de ProjetoEduardo Mendes
 
Introdução à Internet, Http e HTML
Introdução à Internet, Http e HTMLIntrodução à Internet, Http e HTML
Introdução à Internet, Http e HTMLEduardo Mendes
 
Estimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEstimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEduardo Mendes
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 
Validações no Ruby on Rails
Validações no Ruby on Rails Validações no Ruby on Rails
Validações no Ruby on Rails Eduardo Mendes
 
Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Eduardo Mendes
 

Mais de Eduardo Mendes (20)

JavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a ObjetosJavaScript - Introdução com Orientação a Objetos
JavaScript - Introdução com Orientação a Objetos
 
AngularJS - Rotas
AngularJS - RotasAngularJS - Rotas
AngularJS - Rotas
 
Angular JS - Fundamentos
Angular JS - FundamentosAngular JS - Fundamentos
Angular JS - Fundamentos
 
Singleton - Padrão de Projeto
Singleton - Padrão de ProjetoSingleton - Padrão de Projeto
Singleton - Padrão de Projeto
 
Layout Fluido
Layout FluidoLayout Fluido
Layout Fluido
 
Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design Responsivo
 
Html - Aula 4
Html - Aula 4Html - Aula 4
Html - Aula 4
 
Html - Aula 3
Html - Aula 3Html - Aula 3
Html - Aula 3
 
Introdução à Internet, Http e HTML
Introdução à Internet, Http e HTMLIntrodução à Internet, Http e HTML
Introdução à Internet, Http e HTML
 
ExtJS-4
ExtJS-4ExtJS-4
ExtJS-4
 
Jquery 2
Jquery 2Jquery 2
Jquery 2
 
Estimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de SoftwareEstimativas de Esforço - Engenharia de Software
Estimativas de Esforço - Engenharia de Software
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
Validações no Ruby on Rails
Validações no Ruby on Rails Validações no Ruby on Rails
Validações no Ruby on Rails
 
Padrão Iterator
Padrão IteratorPadrão Iterator
Padrão Iterator
 
Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)Padroes Template-Method (Método Gabarito)
Padroes Template-Method (Método Gabarito)
 
Padrão Command
Padrão CommandPadrão Command
Padrão Command
 
Padrão Fachada
Padrão FachadaPadrão Fachada
Padrão Fachada
 
Padrão Adapter
Padrão AdapterPadrão Adapter
Padrão Adapter
 
Web Design Responsivo
Web Design ResponsivoWeb Design Responsivo
Web Design Responsivo
 

Último

MAPA -INTRODUÇÃO À ENGENHARIA - 512024.docx
MAPA -INTRODUÇÃO À ENGENHARIA  - 512024.docxMAPA -INTRODUÇÃO À ENGENHARIA  - 512024.docx
MAPA -INTRODUÇÃO À ENGENHARIA - 512024.docx2m Assessoria
 
ATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docx
ATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docxATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docx
ATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docxjosecarlos413721
 
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docxATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx2m Assessoria
 
ATIVIDADE 1- LÓGICA PARA COMPUTAÇÃO - 512024.docx
ATIVIDADE 1- LÓGICA PARA COMPUTAÇÃO - 512024.docxATIVIDADE 1- LÓGICA PARA COMPUTAÇÃO - 512024.docx
ATIVIDADE 1- LÓGICA PARA COMPUTAÇÃO - 512024.docx2m Assessoria
 
MAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docx
MAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docxMAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docx
MAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docxjosecarlos413721
 
ATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docx
ATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docxATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docx
ATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docx2m Assessoria
 
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docxATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx2m Assessoria
 
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docxATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docxjosecarlos413721
 
MAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
MAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES  - 512024.docxMAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES  - 512024.docx
MAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx2m Assessoria
 
ATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docx
ATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docxATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docx
ATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docx2m Assessoria
 
ATIVIDADE 1 - CONTABILIDADE EMPRESARIAL - 512024.docx
ATIVIDADE 1 - CONTABILIDADE EMPRESARIAL - 512024.docxATIVIDADE 1 - CONTABILIDADE EMPRESARIAL - 512024.docx
ATIVIDADE 1 - CONTABILIDADE EMPRESARIAL - 512024.docx2m Assessoria
 
ATIVIDADE 1 - TEORIA DAS ESTRUTURAS I - 512024.docx
ATIVIDADE 1 - TEORIA DAS ESTRUTURAS I - 512024.docxATIVIDADE 1 - TEORIA DAS ESTRUTURAS I - 512024.docx
ATIVIDADE 1 - TEORIA DAS ESTRUTURAS I - 512024.docx2m Assessoria
 
ATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docx
ATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docxATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docx
ATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docxjosecarlos413721
 
MAPA -INTRODUÇÃO À ENGENHARIA - 512024.docx
MAPA -INTRODUÇÃO À ENGENHARIA  - 512024.docxMAPA -INTRODUÇÃO À ENGENHARIA  - 512024.docx
MAPA -INTRODUÇÃO À ENGENHARIA - 512024.docx2m Assessoria
 
ATIVIDADE 1 - MODELAGEM DE SOFTWARE – 512024.docx
ATIVIDADE 1 - MODELAGEM DE SOFTWARE – 512024.docxATIVIDADE 1 - MODELAGEM DE SOFTWARE – 512024.docx
ATIVIDADE 1 - MODELAGEM DE SOFTWARE – 512024.docxjosecarlos413721
 
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES  - 512024.docxATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES  - 512024.docx
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx2m Assessoria
 
ATIVIDADE 1 - DESENHO TÉCNICO - 512024.docx
ATIVIDADE 1 - DESENHO TÉCNICO - 512024.docxATIVIDADE 1 - DESENHO TÉCNICO - 512024.docx
ATIVIDADE 1 - DESENHO TÉCNICO - 512024.docx2m Assessoria
 
Power BI: A ferramenta da Microsoft que vem ganhando o mercado.
Power BI: A ferramenta da Microsoft que vem ganhando o mercado.Power BI: A ferramenta da Microsoft que vem ganhando o mercado.
Power BI: A ferramenta da Microsoft que vem ganhando o mercado.Daniel Mendes
 
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoCurso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoGuilhermeJorgeAragod
 
Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024
Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024
Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024Ismael Ash
 

Último (20)

MAPA -INTRODUÇÃO À ENGENHARIA - 512024.docx
MAPA -INTRODUÇÃO À ENGENHARIA  - 512024.docxMAPA -INTRODUÇÃO À ENGENHARIA  - 512024.docx
MAPA -INTRODUÇÃO À ENGENHARIA - 512024.docx
 
ATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docx
ATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docxATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docx
ATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docx
 
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docxATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
 
ATIVIDADE 1- LÓGICA PARA COMPUTAÇÃO - 512024.docx
ATIVIDADE 1- LÓGICA PARA COMPUTAÇÃO - 512024.docxATIVIDADE 1- LÓGICA PARA COMPUTAÇÃO - 512024.docx
ATIVIDADE 1- LÓGICA PARA COMPUTAÇÃO - 512024.docx
 
MAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docx
MAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docxMAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docx
MAPA - INTRODUÇÃO À ENGENHARIA - 51-2024.docx
 
ATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docx
ATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docxATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docx
ATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docx
 
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docxATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
 
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docxATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
ATIVIDADE 1 - ESTATÍSTICA E PROBABILIDADE - 512024.docx
 
MAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
MAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES  - 512024.docxMAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES  - 512024.docx
MAPA - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
 
ATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docx
ATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docxATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docx
ATIVIDADE 1 - PESQUISA OPERACIONAL - 512024.docx
 
ATIVIDADE 1 - CONTABILIDADE EMPRESARIAL - 512024.docx
ATIVIDADE 1 - CONTABILIDADE EMPRESARIAL - 512024.docxATIVIDADE 1 - CONTABILIDADE EMPRESARIAL - 512024.docx
ATIVIDADE 1 - CONTABILIDADE EMPRESARIAL - 512024.docx
 
ATIVIDADE 1 - TEORIA DAS ESTRUTURAS I - 512024.docx
ATIVIDADE 1 - TEORIA DAS ESTRUTURAS I - 512024.docxATIVIDADE 1 - TEORIA DAS ESTRUTURAS I - 512024.docx
ATIVIDADE 1 - TEORIA DAS ESTRUTURAS I - 512024.docx
 
ATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docx
ATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docxATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docx
ATIVIDADE 1 - TI - BOAS PRÁTICAS DE GOVERNANÇA EM TI - 512024.docx
 
MAPA -INTRODUÇÃO À ENGENHARIA - 512024.docx
MAPA -INTRODUÇÃO À ENGENHARIA  - 512024.docxMAPA -INTRODUÇÃO À ENGENHARIA  - 512024.docx
MAPA -INTRODUÇÃO À ENGENHARIA - 512024.docx
 
ATIVIDADE 1 - MODELAGEM DE SOFTWARE – 512024.docx
ATIVIDADE 1 - MODELAGEM DE SOFTWARE – 512024.docxATIVIDADE 1 - MODELAGEM DE SOFTWARE – 512024.docx
ATIVIDADE 1 - MODELAGEM DE SOFTWARE – 512024.docx
 
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES  - 512024.docxATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES  - 512024.docx
ATIVIDADE 1 - ADSIS - FUNDAMENTOS E ARQUITETURA DE COMPUTADORES - 512024.docx
 
ATIVIDADE 1 - DESENHO TÉCNICO - 512024.docx
ATIVIDADE 1 - DESENHO TÉCNICO - 512024.docxATIVIDADE 1 - DESENHO TÉCNICO - 512024.docx
ATIVIDADE 1 - DESENHO TÉCNICO - 512024.docx
 
Power BI: A ferramenta da Microsoft que vem ganhando o mercado.
Power BI: A ferramenta da Microsoft que vem ganhando o mercado.Power BI: A ferramenta da Microsoft que vem ganhando o mercado.
Power BI: A ferramenta da Microsoft que vem ganhando o mercado.
 
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoCurso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
 
Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024
Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024
Serviços para fazer deploy do seu Frontend - react ceara 8 meetup 2024
 

Introdução ao TDD

  • 1. @dudumendes Desenvolvimento Baseado em Testes Eduardo Mendes de Oliveira edumendes@gmail.com
  • 2. @dudumendes Agenda • Introdução • Conceitos de desenvolvimento orientados a testes • TDD / BDD • Revisão de Refatoração • Padrões de teste • Ferramentas • Aulas práticas 2
  • 4. @dudumendes Processo de Software Projeto  e   Especificação Implementação Validação Evolução
  • 5. @dudumendes Contexto do Processo de Sofware - Equipe •Algo novo para a equipe de software •pessoas envolvidas •domínio da aplicação •tecnologia utilizada •uma combinação dos 03 anteriores •Elementos surpresas
  • 6. @dudumendes Contexto do Processo de Sofware - Cliente •Obriga a criar um novo olhar sobre a organização a partir de uma nova perspectiva •É preciso negociar e formalizar processos que até então eram baseados na experiência e convenções
  • 7. @dudumendes Processo de Software Processo de aprendizagem •Sucesso do projeto •Entender o progresso do projeto •trabalho conjunto para identificar e resolver mal-entendidos •É preciso um processo que ajude a lidar com as incertezas e antecipar mudanças inantecipadas
  • 8. @dudumendes Princípios ágeis fundamentais •Desenvolvimento incremental •Envolvimento do cliente •Pessoas, não processos •Aceitar as mudanças •Envolvimento do cliente
  • 9. Incremento + @dudumendes Feedback analisar projetar implantar implementar CICLO feedback
  • 10. @dudumendes Ciclos no Processo de Software •Testes de unidade •Testes de aceitação •Reuniões diárias •Releases
  • 11. Lidando com a @dudumendes mudança • Possuir testes de regressão sempre • adicionar funcionalidades sem quebrar as existentes • escrever testes às vezes é visto como uma tarefa chata • Manter a simplicidade (FOWLER, 1999) • Código fácil de manter e modificar • exige esforço de refatoração constante
  • 13. @dudumendes Melhores práticas para programação •Evitar código spaghetti •Incluir comentários relevantes nos fontes •Criar testes antes ou concomitantemente à codificação •Inspeções formais •Re-inspeções de código após mudanças significativas •Renovar código legado antes de melhorias
  • 14. @dudumendes TDD •Teste antes, teste primeiro •ao invés de deixar o teste verificar o trabalho depois de feito •Teste como atividade de projeto •esclarece as ideias sobre o que queremos que o código faça •separação dos projetos físicos e lógicos
  • 15. Ciclo de vida do @dudumendes software Densenvolvimento em um primeiro momento só existiam 02 fases Manutenção 15
  • 16. @dudumendes Ciclos ruins •Quando se chega na época de entregar o software •Cliente não está satisfeito •Por falta de tempo, o software é entregue sem testes
  • 17. @dudumendes Espiral da morte menos testes mais problemas menos tempo
  • 18. Abordagens Ágeis Test First ✦ Modifica a abordagem tradicional para modelar e analisar •Kent Beck ✦ Cria práticas para fornecer apoio ao Test First Baby Steps 18
  • 22. TDD • “Test-driven development is a way of managing fear during programming.” Kent Beck
  • 23. TDD • “Desenvolvimento baseado em testes é uma forma de administrar o medo durante a programação.” Kent Beck
  • 24. “Alguém sabe o que isso faz?”
  • 25. “Eu acho que não temos nenhuma documentação para isso!”
  • 26. “Se eu mudar X provalvemente Y vai quebrar!”
  • 27. “Na última vez que peguei nesse negócio, nós passamos uma semana para corrigí-lo.”
  • 30. TDD @dudumendes Escreva um teste ANTES de escrever um código a ser testado Escreva um código que apenas faça compilar o teste e observe o teste funcionando Refatore para o formato mais simples possível
  • 31. @dudumendes O ciclo básico do TDD F Fazer um código Escrever um passar no teste teste unitário que falha Refatorar
  • 33. @dudumendes Feedback do TDD •Implementação •Funciona? •Projeto •Está bem elaborado?
  • 34. @dudumendes Benefícios do TDD •Escrevendo testes •esclarece os critérios de aceitação •encoraja a escrever componentes fracamente acoplados para que sejam testados isoladamente •atribui uma descrição executável do que o código faz •ganha-se uma suíte de regressão completa
  • 35. @dudumendes Benefícios do TDD •Executando testes •detecta erros enquanto o contexto do código ainda está em mente •avisa quando fizemos o bastante, evitando esforço desnecessário
  • 36. @dudumendes Benefícios resumo •O projeto evolui constatemente •O projeto está sobre constante revisão •qualidade de código •fraco acoplamento •alta coesão
  • 37. @dudumendes Regra de Ouro do TDD “Nunca codifique uma funcionalidade nova sem um teste falhando”
  • 39. Testes preparar Unitários Componente   “resetar” testado  de   executar maneira   isolada validar
  • 40. TDD @dudumendes x Testes unitários •TDD é somente a utilização de testes unitários? •melhor do que nada! •às vezes os testes ficam isolados e não podem ser integrados
  • 41. @dudumendes Por onde começar? • Por onde começa um projeto?
  • 42. @dudumendes Regra de Ouro do TDD “Nunca codifique uma funcionalidade nova sem um teste falhando”
  • 43. @dudumendes Por onde começar? Fazer um código F Escrever um passar no teste teste unitário que falha Escrever um Refatorar teste de aceitação que falha
  • 44. @dudumendes Níveis de teste • Aceitação • O sistema funciona como um todo? • Integração • Nosso código funciona com o código já existente? • Unidade • Nossos objetos fazem a coisa certa do jeito certo?
  • 45. Processo de Software Requisitos Projeto Implementa Teste Evolução
  • 46. Processo de Software com TDD Projeto Implementa Teste
  • 47. Processo de Software com TDD Projeto Teste Implementa
  • 48. Processo de Software com TDD Projeto Teste Implementa Teste
  • 49. TDD Projeto Teste Teste Implementa
  • 50. TDD Projeto Teste Teste Implementa
  • 51. TDD Projeto crie uma lista de teste anote e identifique os testes seja conciso: uma classe ou método posteriormente, é possível adicionar mais testes
  • 52. TDD Projeto Teste
  • 53. TDD Escreva o teste primeiro •pense no design •controle o escopo Teste crie o teste utilizando assertivas •teste o que é esperado e o que não é esperado
  • 54. TDD Teste Implementa
  • 55. TDD implemente o código que deve ser testado faça o mínimo e somente o necessário para que o teste compile e passe Implementa
  • 56. TDD Teste Implementa
  • 57. TDD Teste Verifique se o teste passou
  • 58. TDD Projeto Teste E tudo de novo! Teste Implementa
  • 59. @dudumendes Entendi! Já sei! TDD é um método para testar software
  • 61. @dudumendes TDD é um método* para construir software *método: abordagem repetítivel - ciclo para solucionar um determinado problema - aprendizado

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. Contextualizar o processo / Conjunto de atividades que levam a um sistema\n
  5. \n
  6. \n
  7. Anotar mudanças e incertezas\n
  8. Anotar mudanças e incertezas\n
  9. Discutir um pouco as práticas para levar o benefício do feedback\n
  10. Implantar é a oportunidade de checar as suposições frente à realidade / Sem implantar não como ter um feedback completo\n A cada ciclo de incremento se repetem as etapas de desenvolver e obter feedback / Maneira de aprender algo sobre o sistema e aplicar este conhecimento de volta ao sistema\n
  11. Cada ciclo oferece um feedback em que o time pode descobrir e corrigir erros\nOs ciclos internos focam no detalhe, o ciclos exteros focam na organização e no time\nQuanto mais cedos obtivermos o feedback, melhor\n
  12. \n
  13. \n
  14. \n
  15. O esforço para escrever o teste primeiro dá-nos FEEDBACK sobre a qualidade das nossas ideias\nFazer código testável torna o desenvolvimento mais limpo e mais modular\nSe se escreve testes durante o processo de desenvolvimento, então TESTES de REGRESSÃO\n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. Onde meu software está quebrando? Vou ter que fazer manutenção demais!\n\nO medo nos faz hesitantes\nO medo nos faz diminuir a comunicação\nO medo nos afastam do feedback\nO medo nos faz mal-humorados\n
  29. Onde meu software está quebrando? Vou ter que fazer manutenção demais!\n\nO medo nos faz hesitantes\nO medo nos faz diminuir a comunicação\nO medo nos afastam do feedback\nO medo nos faz mal-humorados\n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. Código limpo\ntestes como especificação\naumento de confiança\n
  47. Código limpo\ntestes como especificação\naumento de confiança\n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. Problema: quando integra o sistema, propriedades emergentes surgem e quebram\n
  57. Problema: quando integra o sistema, propriedades emergentes surgem e quebram\n
  58. Problema: quando integra o sistema, propriedades emergentes surgem e quebram\n
  59. \n
  60. \n
  61. \n
  62. Os testes de aceitação demoram mais a passar / Testes de unidades devem passar logo depois que foram escritos / Testes unitários não devem comprometer o repositório de origem / Testes de aceitação devem estar presentes por todo o sistema / testando a GUI\n\n
  63. Os testes de aceitação demoram mais a passar / Testes de unidades devem passar logo depois que foram escritos / Testes unitários não devem comprometer o repositório de origem / Testes de aceitação devem estar presentes por todo o sistema / testando a GUI\n\n
  64. Os testes de aceitação demoram mais a passar / Testes de unidades devem passar logo depois que foram escritos / Testes unitários não devem comprometer o repositório de origem / Testes de aceitação devem estar presentes por todo o sistema / testando a GUI\n\n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n