SlideShare uma empresa Scribd logo
1 de 47
Unit test & TDD
Ricardo Moura - Test Analyst
Ricardo Moura
Há 7 anos, inimigo número 1 dos desenvolvedores
Aspirante a desenvolvedor
Desde 2014 na equipe de QA da Tecban.
Certificado pelo BSTQB nos níveis Foundation e Agile Tester
Amante dos carros velhos e rápidos
“Aquele cara chato”
“Por que comprar se eu posso fazer gastando o dobro?”
LinkedIN
www.linkedin.com/in/ricardoamr
Modelo V e
Pirâmide de
teste
Testes
Unitários
Cobertura TDD
Teoria
Prática Dev a Java
application
Testes
Unitários
Cobertura TDD
Teoria
Modelo V
X
Pirâmide de teste
Modelo V
Functional
Requirement
High Level
Design
Detailed
Design
Coding
System
Testing
Integration
Testing
Unit
Testing
User
Requirement
Acceptance
Testing
V&V
Pirâmide de Teste
¿Testes unitários?
Unidade: “Menor parte testável
de um programa de
computador”
“Soma(a,b)”
Teste
Unitário:
“Aplicação de teste
que consiste em
validar as entradas e
saídas de uma
unidade de código”
UnidadeEntrada Saída
Interruptor pra cima
Interruptor pra baixo
Porque?
“Em um processo de desenvolvimento/construção, cada
colaborador deve prezar e garantir a qualidade da sua entrega”
TEMPO
CUSTO
“Quanto mais cedo
defeitos forem
encontrados, mais
barato e rápido será
para corrigi-los”
• Forma de Diminuir a Alta Taxa de Defeitos
• Essencial no desenvolvimento de software e entrega de código legível, que se mantém
com facilidade por qualquer membro da equipe.
• Auxilia o desenvolvedor a escrever um código para que outras pessoas da equipe entenda.
• O Aumento das Validações de todas as funções do sistema.
• Diminui a probabilidade de erros futuros.
• Permitem a simplificação dos códigos, fazendo com que elementos desnecessários fiquem
de fora e não resultem no mau funcionamento do sistema
Motivações
Como?
public double soma(double valorA, double valorB) {
double resultado = valorA + valorB;
return resultado;
}
Entradas: valorA, valorB
Saída: resultado
@Test
public void testeSoma() throws Exception{
double valorA = 3;
double valorB = 2;
double resultado = soma(valorA,valorB);
assertEquals(5,resultado,0,001);
}
Correto?
NÃO
• Escreva o teste primeiro(TDD)
• Nunca inicie com um teste que será bem sucedido
• Comece com valores nulos, ou algo que não funcione
• Não fique com medo de fazer algo trivial para fazer o teste funcionar
• Desacoplamento e testabilidade andam de mãos dadas
• Faça apenas 1 ação e 1 verificação por teste
• Divida o seu teste em 3 partes, Preparação, Ação e Verificação (em inglês:
Arrange, Act and Assert)
Best Practices
@Test
public void testeSoma() throws Exception{
double valorA = 3;
double valorB = 0;
Calculadora calculadora = new Calculadora();
double resultado = soma(valorA,valorB);
assertEquals(5,resultado,0,001);
}
irá falhar
Preparação
Ação
Comparação
Frameworks
PyUnit
NOSE
https://goo.gl/AANM8s
Frameworks
Cobertura
“Objetivo de uma avaliação de cobertura de código é
informar lacunas em sua estratégia de testes unitários”
Facilita o encontro de módulos, classes e funções
que são testados de modo insuficiente como por
exemplo IF e catch parcialmente cobertos.
A maioria das IDEs lhe dão uma indicação visual:
Verde: Linhas que são cobertas pelos testes.
Vermelho: Linhas que não são cobertas pelos testes.
Amarelo: Branchs que não foram cobertos completamente
https://goo.gl/mio9QX
Frameworks
TDD
Test Driven Development
TDD
“É uma técnica que consiste em escrever os testes
unitários antes das classes e métodos de uma aplicação”
Porque?
Feedback imediato e constante
100% de cobertura de teste unitário
Somente o necessário é desenvolvido
Aplicação mais legível e simples
Documentação viva
Controle do progresso do desenvolvimento
Desenvolvimento fragmentado.
Como?
Escreva um
teste que
FALHE
Escreva código
para PASSAR
o teste
REFATORE
o código
TDD Cycle
*Técnica chamada Fake-it
Prática
Dev a Java
application
Testes
Unitários
Cobertura
http://update.eclemma.org
Instalação Eclemma/jacoco
Execução Eclemma/jacoco
TDD

Mais conteúdo relacionado

Mais procurados

Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesPaulo César M Jeveaux
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPPedro Chaves
 
Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2Diego Pacheco
 
Como se tornar Agile Tester
Como se tornar Agile TesterComo se tornar Agile Tester
Como se tornar Agile TesterElias Nogueira
 
Automacao de testes mitos e verdades
Automacao de testes mitos e verdadesAutomacao de testes mitos e verdades
Automacao de testes mitos e verdadesCristiano Caetano
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliverySamanta Cicilia
 
Como integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu timeComo integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu timeElias Nogueira
 
Automação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas WebAutomação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas WebRodrigo Veiga
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
IBM Rational Piores Práticas em Testes
IBM Rational Piores Práticas em TestesIBM Rational Piores Práticas em Testes
IBM Rational Piores Práticas em TestesFelipe Freire
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Vanilton Pinheiro
 
Agile Testing - entregando valor do início a fim
Agile Testing - entregando valor do início a fimAgile Testing - entregando valor do início a fim
Agile Testing - entregando valor do início a fimElias Nogueira
 
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...Vanilton Pinheiro
 
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...Walmyr Lima e Silva Filho
 
Introdução a testes de sofwtare
Introdução a testes de sofwtareIntrodução a testes de sofwtare
Introdução a testes de sofwtareFernando Palma
 
Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoraçãoguest23778e
 
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.João Clineu - CTFL, CSM, CSD
 

Mais procurados (20)

Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
 
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHPFacilitando o desenvolvimento orientado a testes em aplicações PHP
Facilitando o desenvolvimento orientado a testes em aplicações PHP
 
Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2Treinamento Testes Unitários - parte 2
Treinamento Testes Unitários - parte 2
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
Como se tornar Agile Tester
Como se tornar Agile TesterComo se tornar Agile Tester
Como se tornar Agile Tester
 
Automacao de testes mitos e verdades
Automacao de testes mitos e verdadesAutomacao de testes mitos e verdades
Automacao de testes mitos e verdades
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
 
Como integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu timeComo integrar um Agile Tester no seu time
Como integrar um Agile Tester no seu time
 
Automação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas WebAutomação de Testes de Aceitação em Sistemas Web
Automação de Testes de Aceitação em Sistemas Web
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
IBM Rational Piores Práticas em Testes
IBM Rational Piores Práticas em TestesIBM Rational Piores Práticas em Testes
IBM Rational Piores Práticas em Testes
 
Pensando TDD
Pensando TDDPensando TDD
Pensando TDD
 
Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)Minicurso - Teste de software (CACSI 2015)
Minicurso - Teste de software (CACSI 2015)
 
Agile Testing - entregando valor do início a fim
Agile Testing - entregando valor do início a fimAgile Testing - entregando valor do início a fim
Agile Testing - entregando valor do início a fim
 
Apresentação testes white box
Apresentação testes white boxApresentação testes white box
Apresentação testes white box
 
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
 
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
 
Introdução a testes de sofwtare
Introdução a testes de sofwtareIntrodução a testes de sofwtare
Introdução a testes de sofwtare
 
Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoração
 
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.
 

Semelhante a TDD e Testes Unitários para Qualidade e Manutenção de Software

Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
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
 
Tecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testesTecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testesCristiano Caetano
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaRafael Ponte
 
TDD e UnitTest em Java
TDD e UnitTest em JavaTDD e UnitTest em Java
TDD e UnitTest em JavaJúlio de Lima
 
Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Alex Tercete
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraTaís Dall'Oca
 
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
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aLeonardo Molinari
 
A importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivasA importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivasRicardo Serradas
 
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 Unitários para Qualidade e Manutenção de Software (20)

Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
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
 
Tecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testesTecnicas de projeto design especificacao modelagem de casos de testes
Tecnicas de projeto design especificacao modelagem de casos de testes
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Plano de teste
Plano de testePlano de teste
Plano de teste
 
Plano de teste
Plano de testePlano de teste
Plano de teste
 
Palestra Ufpb
Palestra UfpbPalestra Ufpb
Palestra Ufpb
 
TDD e UnitTest em Java
TDD e UnitTest em JavaTDD e UnitTest em Java
TDD e UnitTest em Java
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?Por que você não escreve Testes Unitários?
Por que você não escreve Testes Unitários?
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
 
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
 
Palestra Testes Ágeis - SEMAC INF UFRGS
Palestra Testes Ágeis - SEMAC INF UFRGSPalestra Testes Ágeis - SEMAC INF UFRGS
Palestra Testes Ágeis - SEMAC INF UFRGS
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2a
 
A importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivasA importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivas
 
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
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 

TDD e Testes Unitários para Qualidade e Manutenção de Software