SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
TDD NA VEIA
a tortura de um código sem testes
Matheus Fechine
Graduado em Ciencias da Computacão com
pós graduacão em Desenvolvimento de
Software com ênfase em arquitetura java,
ambas pela Universidade de Fortaleza
(UNIFOR), atua no mercado como
desenvolvedor desde 2008 e Coordenador
da comunidade JavaCE. Sente-se torturado
ao ver um código sem cobertura de teste.
Torcedor do Ceará, apreciador do Punk
Rock e baixista nas horas vagas.
https://github.
com/matheusfechine/TCC/blob/master/Matheus Fechine
Artigo.pdf
Bruno Maomeh
Grande aficionado pelo conhecimento e suas
diversas formas de representacão pelo
mundo. Admirador do desenvolvimento de
software para web e metodologias ágeis, com
o que trabalha a mais de 5 anos. Também é
apaixonado por comunidades, atuando como
coordenador da JavaSF International e
membro ativo da JavaCE. Além de tudo,
adorador do Deus Metal.
M2M Solutions
Nós adicionamos tecnologia da informacão e
comunicacão à infra-estrutura de transporte e
veículos com o objetivo de aumentar a
mobilidade urbana, a eficiência da frota e o
lucro operacional. Isto é ITS, sigla em inglês
para Sistemas de Transporte Inteligente.
O que são teste?
Teste é tudo aquilo que
asegura que alguma
coisa está funcionando
“Myers (2004) afirma que o teste de
software é um processo, ou uma série de
processos, projetado para se certificar a
respeito do código de computador, além
de fazer o que foi designado a cumprir, e
sem realizar nada que não seja
intencional.”
O que são teste automatizados?
Qualquer teste que execute automaticamente.
O que são teste automatizados?
Ferramentas para execução de testes
O que é TDD?
É uma prática de
programacão onde
̧
todo o código do
sistema é escrito
baseado em testes
automatizados.
O que é TDD?
Só se escreve algum código novo no sistema, se houver
algum código de teste quebrando.
O que é TDD?
Auxilia na detectacão de falhas no design do sistema
̧
Se seu teste está ficando muito complicado,
é um indício que existe problema no design.
É hora de refatorar.
O que é TDD?
Ciclo do TDD: Vermelho-Verde-Amarelo.
Teste de unidade
É um teste que executa a menor parcela de
código de um software.

Mock de Objetos
Teste de unidade
Em Java, essa menor parcela é representada
por um método.
Teste de unidade

Ajuda na rastreabilidade
de bugs no sistema.
Teste de unidade
Primeiro teste de unidade
Antes de tudo
Configurando o ambiente
Baixar o projeto no github
git clone https://github.com/brunomaomeh/tddnaveia.git
Configurando o ambiente
Executar o gradlew
./gradlew eclipse
Configurando o ambiente
Importar o projeto
no eclipse
Configurando o ambiente
Importar o projeto
no eclipse
Configurando o ambiente
Importar o projeto
no eclipse
Teste de unidade
Classe Fatorial.java, iremos testa-la.
Teste de unidade
Classe FatorialTest.java, nossa classe de teste.
Teste de unidade
Entendendo o JUnit
Teste de unidade
Implementando o primeiro teste
Teste de unidade
Implementem outros testes
Teste de unidade
Refatorando o código do sistema
Teste de unidade
Execute todos os testes
Se algum teste não
passar, significa que
sua refatoração está
inconsistente.
Não é um teste de unidade
Se ele conversa com o banco de dados
Não é um teste de unidade
Se ele se comunica através de rede.
Não é um teste de unidade
Se ele toca o sistema de arquivos.
Não é um teste de unidade
Se ele não pode ser executado ao mesmo
tempo de outros testes de unidade;
Não é um teste de unidade
Se você tiver que configurar ou preparar o
ambiente para executar os testes.
Teste de Integracão
Pode-se acessar outros recursos do sistema, como
também o banco de dados ou o sistema de arquivos.
Teste de Integracão

Reducão na rastreabilidade de bugs (comparado ao teste
de unidade)
Teste de Integracão
São teste de caixa preta
Teste de Integracão

Em via de regras gerais
Teste de aceitação

Não entraremos nesse assunto!
Praticando o ciclo do TDD
Entrando no “mundo real”.
Aplicando TDD no seu dia-a-dia
Vamos construir um CRUD simples utilizando:

E nos testes:
Andando em passos de bebê
Vamos criar um CRUD
simples de Cadastro de
Usuários, onde iremos
focar em resolver
utilizando as tecnicas do
tdd.

Começaremos com
os testes de unidade
para os controllers.
Andando em passos de bebê
br.com.tddnaveia.controller.UsuarioControllerTest.java
(src/test/java)
Andando em passos de bebê
br.com.tddnaveia.controller.UsuarioController.java
(src/java/java)
Andando em passos de bebê
Fake Object
São objetos "falsos",
usados para dar
suporte à algum
comportamento do
teste, para que este
seja válido.
Mock Objects
São objetos "simulados",
usados para dar suporte à
algum comportamento do
teste, para que este seja
válido.
Mock Objects
Ferramentas de Mock
Mock Objects
● Quando devo “mockar”?
○ Quando se quer isolar as dependencias de um
objeto;
○ Muito utilizado junto com testes de unidade;
■ Caso uma dependencia apresente algum bug,
seu teste poderá ser afetado por ela.
○ Também em testes de integracão, porém em casos
mais "especiais".
Implementando os serviços
Implementando os serviços
Implementando os serviços
Cobertura de código
É uma medida utilizada para descrever a quantidade de um
código-fonte que está sendo testado por um determinado
conjunto de testes.
Cobertura de código
Cobertura de código no eclipse
Cobertura de código
● 100% de cobertura do Código?

NÃO
Projetos legados
Utilizando o mesmo princípio: Vermelho-VerdeAmarelo
AINDA DÁ TEMPO
PARA SE INSCREVER!!!

Veja mais amanhã no curso de
Caçadores de Mitos
Algumas más práticas
● Focar na cobertura e não nas
funcionalidades
● Testar Strings (sql)
● Testar getters e setters... (codigos gerados
pela IDE)
● @Ignore quando o teste falha
Referências
● Matheus Fechine:
○
○
○

https://github.com/matheusfechine/TCC/raw/master/Matheus Fechine Artigo.
pdf
https://github.com/matheusfechine
http://www.linkedin.com/profile/view?id=24698083

● Bruno Maomeh:
○
○
○

https://github.com/brunomaomeh
http://www.slideshare.net/BrunoMaomeh
http://www.linkedin.com/profile/view?id=74407196
Conclusão

Contenu connexe

Tendances

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
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
 
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
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeRafaela Prado
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Raphael Paiva
 
Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...GessdaSilvaMachado
 
Tente desenvolver diferente com TDD
Tente desenvolver diferente com TDDTente desenvolver diferente com TDD
Tente desenvolver diferente com TDDWebgoal
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDJony Ferreira dos Santos
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Maurício Aniche
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDDKleber Bernardo
 

Tendances (19)

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
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
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
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao teste
 
Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?Como TDD pode influenciar na construção do seu Produto?
Como TDD pode influenciar na construção do seu Produto?
 
Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Tente desenvolver diferente com TDD
Tente desenvolver diferente com TDDTente desenvolver diferente com TDD
Tente desenvolver diferente com TDD
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
TDD para Java EE
TDD para Java EETDD para Java EE
TDD para Java EE
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDD
 

En vedette

Palestra tdd - rsjug
Palestra tdd - rsjugPalestra tdd - rsjug
Palestra tdd - rsjugBruno Maomeh
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Bruno Maomeh
 
Apresentando meteor! Join Community - Goiânia
Apresentando meteor! Join Community - GoiâniaApresentando meteor! Join Community - Goiânia
Apresentando meteor! Join Community - GoiâniaFrederico Maia Arantes
 
Testes para Android de ponta a ponta
Testes para Android de ponta a pontaTestes para Android de ponta a ponta
Testes para Android de ponta a pontaElias Nogueira
 
Tudo o que você precisa saber para começar a automação de testes em dispositi...
Tudo o que você precisa saber para começar a automação de testes em dispositi...Tudo o que você precisa saber para começar a automação de testes em dispositi...
Tudo o que você precisa saber para começar a automação de testes em dispositi...Elias Nogueira
 
Automação de Teste para iOS e Android com Appium
Automação de Teste para iOS e Android com AppiumAutomação de Teste para iOS e Android com Appium
Automação de Teste para iOS e Android com AppiumElias Nogueira
 
Workshop Agile Testing Mindset
Workshop Agile Testing MindsetWorkshop Agile Testing Mindset
Workshop Agile Testing MindsetElias Nogueira
 
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
 
Feedback mais rápido na sua build dividindo os testes funcionais
Feedback mais rápido na sua build dividindo os testes funcionaisFeedback mais rápido na sua build dividindo os testes funcionais
Feedback mais rápido na sua build dividindo os testes funcionaisElias Nogueira
 
Testes da Talent Group
Testes da Talent GroupTestes da Talent Group
Testes da Talent GroupTalent Group
 
A Importância do Teste Continuo
A Importância do Teste ContinuoA Importância do Teste Continuo
A Importância do Teste ContinuoElias Nogueira
 
10 coisas que não me contaram sobre Testes
10 coisas que não me contaram sobre Testes10 coisas que não me contaram sobre Testes
10 coisas que não me contaram sobre TestesKatiana Maia
 
O que Evitar na Escrita de Criterios de Aceite
O que Evitar na Escrita de Criterios de AceiteO que Evitar na Escrita de Criterios de Aceite
O que Evitar na Escrita de Criterios de AceiteElias Nogueira
 
Automatizando uma app Híbrida
Automatizando uma app HíbridaAutomatizando uma app Híbrida
Automatizando uma app HíbridaElias Nogueira
 
Acelerando o feedback e deploy com Automação de Testes!
Acelerando o feedback e deploy com Automação de Testes! Acelerando o feedback e deploy com Automação de Testes!
Acelerando o feedback e deploy com Automação de Testes! Elias Nogueira
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)David Ehringer
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Camilo Ribeiro
 

En vedette (20)

Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Palestra tdd - rsjug
Palestra tdd - rsjugPalestra tdd - rsjug
Palestra tdd - rsjug
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
 
Apresentando meteor! Join Community - Goiânia
Apresentando meteor! Join Community - GoiâniaApresentando meteor! Join Community - Goiânia
Apresentando meteor! Join Community - Goiânia
 
Testes para Android de ponta a ponta
Testes para Android de ponta a pontaTestes para Android de ponta a ponta
Testes para Android de ponta a ponta
 
Tudo o que você precisa saber para começar a automação de testes em dispositi...
Tudo o que você precisa saber para começar a automação de testes em dispositi...Tudo o que você precisa saber para começar a automação de testes em dispositi...
Tudo o que você precisa saber para começar a automação de testes em dispositi...
 
Automação de Teste para iOS e Android com Appium
Automação de Teste para iOS e Android com AppiumAutomação de Teste para iOS e Android com Appium
Automação de Teste para iOS e Android com Appium
 
Workshop Agile Testing Mindset
Workshop Agile Testing MindsetWorkshop Agile Testing Mindset
Workshop Agile Testing Mindset
 
Testes generativos
Testes generativosTestes generativos
Testes generativos
 
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
 
Feedback mais rápido na sua build dividindo os testes funcionais
Feedback mais rápido na sua build dividindo os testes funcionaisFeedback mais rápido na sua build dividindo os testes funcionais
Feedback mais rápido na sua build dividindo os testes funcionais
 
Testes da Talent Group
Testes da Talent GroupTestes da Talent Group
Testes da Talent Group
 
A Importância do Teste Continuo
A Importância do Teste ContinuoA Importância do Teste Continuo
A Importância do Teste Continuo
 
10 coisas que não me contaram sobre Testes
10 coisas que não me contaram sobre Testes10 coisas que não me contaram sobre Testes
10 coisas que não me contaram sobre Testes
 
O que Evitar na Escrita de Criterios de Aceite
O que Evitar na Escrita de Criterios de AceiteO que Evitar na Escrita de Criterios de Aceite
O que Evitar na Escrita de Criterios de Aceite
 
Automatizando uma app Híbrida
Automatizando uma app HíbridaAutomatizando uma app Híbrida
Automatizando uma app Híbrida
 
Casperjs-tdc-2016.ppt
Casperjs-tdc-2016.pptCasperjs-tdc-2016.ppt
Casperjs-tdc-2016.ppt
 
Acelerando o feedback e deploy com Automação de Testes!
Acelerando o feedback e deploy com Automação de Testes! Acelerando o feedback e deploy com Automação de Testes!
Acelerando o feedback e deploy com Automação de Testes!
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade
 

Similaire à TDD na veia: testes automatizados para garantir código limpo

Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Lightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDDLightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDDWillians De Paula Pereira
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27Hélio Medeiros
 
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
 
Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmineRangel Javier
 
DevOps - Como remover barreiras para a adoção?
DevOps - Como remover barreiras para a adoção?DevOps - Como remover barreiras para a adoção?
DevOps - Como remover barreiras para a adoção?Mateus Prado
 
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
 
Apresentação tcc final
Apresentação tcc finalApresentação tcc final
Apresentação tcc finalJhool Flores
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
TDD (Test Driven Development)
TDD (Test Driven Development)TDD (Test Driven Development)
TDD (Test Driven Development)Felipe Pimentel
 

Similaire à TDD na veia: testes automatizados para garantir código limpo (20)

Teste Driven Development
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Lightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDDLightning talk Test-Driven Development - TDD
Lightning talk Test-Driven Development - TDD
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
Quem e dev ops
Quem e dev opsQuem e dev ops
Quem e dev ops
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Test day 2012
Test day 2012Test day 2012
Test day 2012
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de 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
 
Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmine
 
DevOps - Como remover barreiras para a adoção?
DevOps - Como remover barreiras para a adoção?DevOps - Como remover barreiras para a adoção?
DevOps - Como remover barreiras para a adoção?
 
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
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Apresentação tcc final
Apresentação tcc finalApresentação tcc final
Apresentação tcc final
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
JUnit Sample
JUnit SampleJUnit Sample
JUnit Sample
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
TDD (Test Driven Development)
TDD (Test Driven Development)TDD (Test Driven Development)
TDD (Test Driven Development)
 
TDD
TDDTDD
TDD
 

TDD na veia: testes automatizados para garantir código limpo