SlideShare une entreprise Scribd logo
1  sur  22
Test-Driven Development
Software quality factors
Testability
“Disposition to support acceptance criteria and
evaluation of performance. Such a characteristic
must be built-in during the design phase if the
product is to be easily testable; a complex design
leads to poor testability”
From Wikipedia
Agenda
• Testes
• Testes Unitários
• Testes Unitários Automatizados
• Mock
• Test-driven Development
Por que testamos?
Validação. Garantir que o software ou
componente se comporta como foi projetado
Unit test
“In computer programming, unit testing is a
method by which individual units of source
code are tested to determine if they are fit for
use. A unit is the smallest testable part of an
application”
From Wikipedia
Por que automatizamos?
• Confiabilidade
• Regressão
• Refactoring
DEMONSTRAÇÃO
Testes Unitários Automatizados
• Fácil para componentes isolados
Classe a
ser testada
Classe de
Teste
Testes Unitários Automatizados
• Difícil quando há dependências
Classe a
ser testada
Classe de
Teste
Testes Unitários Automatizados
• Quebra-se as dependências para obter
isolamento
Classe a
ser testada
Classe de
Teste
M
o
c
k
M
o
c
k
M
o
c
k
DEMONSTRAÇÃO
Testes
Desenho
Implementação
Testes
Primeiro Testes
Desenho
Testes
Implementação
Primeiro Testes
Desenho
Testes
Implementação
Testes
Test-driven Developement
Desenho
Testes
Implementação
Testes
Test-driven Developement
Novo
Requerimento
Escreve Novo
Teste
Executa Testes
Escreve o
Código
Executa Testes
Refactoring
Executa Testes
Faça Falhar
Faça Funcionar
Faça Melhor
Ciclo TDD
• Escreva o teste
– Garante que todo o código funcional é testável
– Prove uma especificação funcional para o código
– Ajuda a pensar no desenho
– Garante que o código é tangível
• Escreva o código
– Complete o requerimento
– Escreva a solução mais simples
– Deixe as melhorias para um passo seguinte
– O código serve somente para passar no teste
• Reescreva (Refactoring)
– Faça a limpeza no código
– Aplique as melhores práticas de codificação
– Repense o desenho
– Delete o código desnecessário
Importante!
Não escreva o código em sua cabeça antes de
escrever o teste!!
Lembre-se: está escrevendo um teste unitário
caixa preta
Por que aplicar TDD
• Confiabilidade
– Aumenta confiança no código
– Elimina o medo de refactoring
• Documenta os requisitos (no código)
• Teste de regressão = Estabilidade = Qualidade
Por que aplicar TDD
0
1
2
3
4
5
6
7
8
9
10
0%
20%
40%
60%
80%
100%
Requirements Coding Integration Testing Support
Thousand$s
%defectscreated
% of Defects Introduced Cost to Fix a Defect
The pain is here! This is too late…
DEMONSTRAÇÃO
OBRIGADO

Contenu connexe

Tendances

CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliverySamanta Cicilia
 
Desenvolvendo software com qualidade e agilidade
Desenvolvendo software com qualidade e agilidadeDesenvolvendo software com qualidade e agilidade
Desenvolvendo software com qualidade e agilidadeDiogo Augusto Pereira
 
Priorização dos casos de teste de regressão baseados nos defeitos
Priorização dos casos de teste de regressão baseados nos defeitosPriorização dos casos de teste de regressão baseados nos defeitos
Priorização dos casos de teste de regressão baseados nos defeitosPablo Quiroga
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Visual Regression Testing: mais um tipo de teste pra sua pipeline
Visual Regression Testing: mais um tipo de teste pra sua pipelineVisual Regression Testing: mais um tipo de teste pra sua pipeline
Visual Regression Testing: mais um tipo de teste pra sua pipelineSamanta Cicilia
 
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesSamanta Cicilia
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentOtavio Augusto
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes AutomatizadosSamanta Cicilia
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilElias Nogueira
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...Samanta Cicilia
 
Application Insights - Monitore a sua aplicação em tempo real
Application Insights - Monitore a sua aplicação em tempo realApplication Insights - Monitore a sua aplicação em tempo real
Application Insights - Monitore a sua aplicação em tempo realAndré Dias
 
Test Strategies, Testes unitários, Testes de integração e DevOps
Test Strategies, Testes unitários, Testes de integração e DevOpsTest Strategies, Testes unitários, Testes de integração e DevOps
Test Strategies, Testes unitários, Testes de integração e DevOpsRodolfo dos Santos Pinto
 
Integrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de softwareIntegrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de softwareConviso Application Security
 

Tendances (20)

RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Testes Automatizados
Testes AutomatizadosTestes Automatizados
Testes Automatizados
 
TDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVA
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
 
Desenvolvendo software com qualidade e agilidade
Desenvolvendo software com qualidade e agilidadeDesenvolvendo software com qualidade e agilidade
Desenvolvendo software com qualidade e agilidade
 
TDD
TDDTDD
TDD
 
Priorização dos casos de teste de regressão baseados nos defeitos
Priorização dos casos de teste de regressão baseados nos defeitosPriorização dos casos de teste de regressão baseados nos defeitos
Priorização dos casos de teste de regressão baseados nos defeitos
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Visual Regression Testing: mais um tipo de teste pra sua pipeline
Visual Regression Testing: mais um tipo de teste pra sua pipelineVisual Regression Testing: mais um tipo de teste pra sua pipeline
Visual Regression Testing: mais um tipo de teste pra sua pipeline
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
Testes Ágeis
Testes ÁgeisTestes Ágeis
Testes Ágeis
 
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...
 
Application Insights - Monitore a sua aplicação em tempo real
Application Insights - Monitore a sua aplicação em tempo realApplication Insights - Monitore a sua aplicação em tempo real
Application Insights - Monitore a sua aplicação em tempo real
 
Test Strategies, Testes unitários, Testes de integração e DevOps
Test Strategies, Testes unitários, Testes de integração e DevOpsTest Strategies, Testes unitários, Testes de integração e DevOps
Test Strategies, Testes unitários, Testes de integração e DevOps
 
Integrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de softwareIntegrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de software
 
O Testador Técnico
O Testador TécnicoO Testador Técnico
O Testador Técnico
 

Similaire à Test-Driven Development

Integração Contínua
Integração ContínuaIntegração Contínua
Integração ContínuaScrumHalf Tool
 
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe munizMatheus de Lara Calache
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 
DevOps na nuvem: Azure DevOps Projects
DevOps na nuvem: Azure DevOps ProjectsDevOps na nuvem: Azure DevOps Projects
DevOps na nuvem: Azure DevOps ProjectsQaladies
 
QA Ladies 2018 - Azure DevOps Projects
QA Ladies 2018 - Azure DevOps ProjectsQA Ladies 2018 - Azure DevOps Projects
QA Ladies 2018 - Azure DevOps ProjectsJaqueline Ramos
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMAdriano Bertucci
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código LegadoCesar Romero
 
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
 
BaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareBaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareAdriano Bertucci
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfHoctairBernardino
 
Desenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesDesenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesAndre Carlucci
 
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
 
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADE
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADEREFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADE
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADEAlexsander Camargo
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...minastestingconference
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 

Similaire à Test-Driven Development (20)

Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
 
Testes unitários e Mocks
Testes unitários e MocksTestes unitários e Mocks
Testes unitários e Mocks
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
DevOps na nuvem: Azure DevOps Projects
DevOps na nuvem: Azure DevOps ProjectsDevOps na nuvem: Azure DevOps Projects
DevOps na nuvem: Azure DevOps Projects
 
QA Ladies 2018 - Azure DevOps Projects
QA Ladies 2018 - Azure DevOps ProjectsQA Ladies 2018 - Azure DevOps Projects
QA Ladies 2018 - Azure DevOps Projects
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código Legado
 
TDD na Prática
TDD na PráticaTDD na Prática
TDD na Prática
 
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 ...
 
Aula - Teste de Software
Aula - Teste de SoftwareAula - Teste de Software
Aula - Teste de Software
 
BaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareBaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de Software
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdf
 
Desenvolvimento Orientado a Testes
Desenvolvimento Orientado a TestesDesenvolvimento Orientado a Testes
Desenvolvimento Orientado a Testes
 
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
 
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADE
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADEREFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADE
REFATORAÇÃO DE CÓDIGO LEGADO: DETALHAMENTO DE UMA ESTRUTURA DE MANUTENIBILIDADE
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
TDD
TDDTDD
TDD
 
DevOps 101
DevOps 101DevOps 101
DevOps 101
 

Test-Driven Development