SlideShare uma empresa Scribd logo
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”
Unit test & TDD
• 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
Unit test & TDD
Unit test & TDD
Unit test & TDD
*Técnica chamada Fake-it
Unit test & TDD
Unit test & TDD
Prática
Dev a Java
application
Unit test & TDD
Testes
Unitários
Unit test & TDD
Cobertura
http://update.eclemma.org
Instalação Eclemma/jacoco
Execução Eclemma/jacoco
TDD

Mais conteúdo relacionado

PPTX
Desenvolvimento Dirigido por Testes
PPTX
1 2 3 - Testando - Automatizando os testes de software
PPT
TDD - Test Driven Development com JAVA
PDF
Ctai Teste De Software Aula 1
PPTX
[DevOps Carioca] Testes Automatizados
PDF
Testes em ambiente agil - TechTalks ADP Labs
PPTX
Todas as abordagens de testes dentro do ágil
PDF
DevCamp - O papel de um testador em uma equipe ágil
Desenvolvimento Dirigido por Testes
1 2 3 - Testando - Automatizando os testes de software
TDD - Test Driven Development com JAVA
Ctai Teste De Software Aula 1
[DevOps Carioca] Testes Automatizados
Testes em ambiente agil - TechTalks ADP Labs
Todas as abordagens de testes dentro do ágil
DevCamp - O papel de um testador em uma equipe ágil

Mais procurados (20)

PDF
Testes de Software & Ferramentas de Testes
PDF
Facilitando o desenvolvimento orientado a testes em aplicações PHP
PPT
Treinamento Testes Unitários - parte 2
PDF
TDD com Python
PDF
Como se tornar Agile Tester
PDF
Automacao de testes mitos e verdades
PPTX
CNQS - Testes Automatizados & Continuous Delivery
PDF
Como integrar um Agile Tester no seu time
PPTX
Automação de Testes de Aceitação em Sistemas Web
PPTX
TDD (Test-Driven Development)
PPT
IBM Rational Piores Práticas em Testes
PPTX
Pensando TDD
PPT
Minicurso - Teste de software (CACSI 2015)
PDF
Agile Testing - entregando valor do início a fim
PPTX
Apresentação testes white box
PDF
Apresentação Artigo SBQS 2015 - Um Comparativo na Execução de Testes Manuais ...
PDF
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
PDF
Introdução a testes de sofwtare
PDF
Testes e Refatoração
PDF
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
Testes de Software & Ferramentas de Testes
Facilitando o desenvolvimento orientado a testes em aplicações PHP
Treinamento Testes Unitários - parte 2
TDD com Python
Como se tornar Agile Tester
Automacao de testes mitos e verdades
CNQS - Testes Automatizados & Continuous Delivery
Como integrar um Agile Tester no seu time
Automação de Testes de Aceitação em Sistemas Web
TDD (Test-Driven Development)
IBM Rational Piores Práticas em Testes
Pensando TDD
Minicurso - Teste de software (CACSI 2015)
Agile Testing - entregando valor do início a fim
Apresentação testes white box
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 ...
Introdução a testes de sofwtare
Testes e Refatoração
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
Anúncio

Semelhante a Unit test & TDD (20)

PPT
Treinamento Testes Unitários - parte 1
PPTX
Sobre TDD - Tech Friday da Everis Uberlândia
PDF
Tecnicas de projeto design especificacao modelagem de casos de testes
PPTX
Gerenciamento da Qualidade de Software 4.pptx
KEY
Greenbar - Testes automatizados na sua empresa
PPT
O que é Teste de Software?
PPTX
Plano de teste
PPTX
Plano de teste
PPTX
Palestra Ufpb
PDF
TDD e UnitTest em Java
PPTX
Teste de software
PPTX
Por que você não escreve Testes Unitários?
PDF
TDD com Python (Completo)
PPTX
Palestra Teste de Software: princípios, ferramentas e carreira
PDF
Qualidade de software com Visual Studio ALM
PDF
Palestra Testes Ágeis - SEMAC INF UFRGS
PPT
Gerenciando Testes Com Qualidade V2a
PPTX
A importância da qualidade de software e suas diversas perspectivas
PPTX
Como fazer um bom desgn de c[odigo em java
PPTX
Teste automatizados e tdd
Treinamento Testes Unitários - parte 1
Sobre TDD - Tech Friday da Everis Uberlândia
Tecnicas de projeto design especificacao modelagem de casos de testes
Gerenciamento da Qualidade de Software 4.pptx
Greenbar - Testes automatizados na sua empresa
O que é Teste de Software?
Plano de teste
Plano de teste
Palestra Ufpb
TDD e UnitTest em Java
Teste de software
Por que você não escreve Testes Unitários?
TDD com Python (Completo)
Palestra Teste de Software: princípios, ferramentas e carreira
Qualidade de software com Visual Studio ALM
Palestra Testes Ágeis - SEMAC INF UFRGS
Gerenciando Testes Com Qualidade V2a
A importância da qualidade de software e suas diversas perspectivas
Como fazer um bom desgn de c[odigo em java
Teste automatizados e tdd
Anúncio

Último (7)

PPTX
Curso de Windows 11 resumido na prática.pptx
PDF
Evolução em código: algoritmos genéticos com PHP
PDF
Dos requisitos ao código: como criar código rastreável em PHP
PDF
apresentacao introducao computacao ead.pdf
PPTX
Mapeamento de Objeto para Tabela Relacional
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Curso de Windows 11 resumido na prática.pptx
Evolução em código: algoritmos genéticos com PHP
Dos requisitos ao código: como criar código rastreável em PHP
apresentacao introducao computacao ead.pdf
Mapeamento de Objeto para Tabela Relacional
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO

Unit test & TDD