SlideShare uma empresa Scribd logo
Testes automatizados e
TDD
SANKHYA TECH TALK
Você confia no seu código?
Quem sou eu
- Zup, CTBC, Kyros
- 9 anos de desenvolvimento de software
- 5 anos desenvolvendo com testes
automatizados, TDD, métodos ágeis
Definições
- Teste automatizado é um software que
executa seu código e verifica se ele funciona
como esperado
- TDD é uma maneira de se escrever testes
automatizados onde cada teste é escrito
antes de se escrever o código
Historia
- Kent Beck e o XP
- Agile
- Ruby/Rails
Por que testar?
Feedback imediato
- O código que você acabou de escrever
funciona?
- Bugs com vida curta
Evita regressões
- Garante que uma mudança futura não irá
quebrar o código
- Facilita a evolução do sistema
- Confiança
Design
- Os testes "forçam" um bom design
- É muito dificil testar um código ruim
Refactoring
- Melhorar/Limpar o código sem alterar o seu
comportamento
- Sem testes, refactoring é um tiro no escuro
- Sem refatoring seu software apodrece
Documentação
- Documentação executável
- Não fica desatualizada
- Realmente ajuda quem nunca viu o código
Por que TDD?
O Ciclo do TDD
Cadencia
- Por onde começar?
- Terminei, e agora?
- Flow
Design
- TDD é uma prática de design
- Um segundo cliente
- Simplicidade
Disciplina
- Testar depois é perigoso
- Não desistir
- Te ajuda nos momentos de pressão
Tipos de Teste
- Testes Unitarios
- Testes de Integração
- Testes de Aceitação
Como começar
- Problemas de DOJO
- API Rest, Aplicação Web simples
- Novas funcionalidades
- Novo projeto
- Ping pong pair programming
Corrigindo bugs usando
testes
1. Escreva um teste que reproduz o bug
2. Corrija o bug
3. Refatore o código para que outro bugs não
acontecam
4. Nunca mais se preocupe com esse bug
Ferramentas Java
- JUnit
- Mockito
- Cucumber JVM
- Selenium
Próximo Nivel
- O que testar?
- Tirar o máximo dos testes
- Bons testes
Referencias
Screencasts Kent Beck: https://pragprog.com/screencasts/v-kbtdd/test-driven-development
Clean Coders: http://cleancoders.com
TDD e o profissionalismo
- Uncle Bob Martin
- http://blog.8thlight.com/uncle-
bob/2014/05/02/ProfessionalismAndTDD.ht
ml
- Ignaz Semmelweis
Obrigado!
Luiz Signorelli - luiz.sg@gmail.com

Mais conteúdo relacionado

Mais procurados

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
Jony Ferreira dos Santos
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
Dionatan default
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
Bruno Maomeh
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.
Rômulo Augusto Santos
 
Metodologias de desenvolvimento de software
Metodologias de desenvolvimento de softwareMetodologias de desenvolvimento de software
Metodologias de desenvolvimento de software
Letícia Elaine Krauss
 
Por que aplicações falham
Por que aplicações falham Por que aplicações falham
Por que aplicações falham
Letícia Elaine Krauss
 
O teste atualmente
O teste atualmenteO teste atualmente
O teste atualmente
Letícia Elaine Krauss
 
Tester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitidoTester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitido
Leonardo Galani
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
Guilherme Chapiewski
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
Waldyr Felix
 
O poder do TDD
O poder do TDDO poder do TDD
O poder do TDD
Rafael Queiroz
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDD
Kleber Bernardo
 
Testes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsTestes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJs
Locaweb
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
Leandro Parazito
 
Automação de Teste para REST, Web e Mobile
Automação de Teste para REST, Web e MobileAutomação de Teste para REST, Web e Mobile
Automação de Teste para REST, Web e Mobile
Elias Nogueira
 
Apenas um script de teste para iOS e Android
Apenas um script de teste para iOS e AndroidApenas um script de teste para iOS e Android
Apenas um script de teste para iOS e Android
Elias Nogueira
 
Teste Unitários e TDD
Teste Unitários e TDDTeste Unitários e TDD
Teste Unitários e TDD
Diogo Damiani
 
Testes em um mundo ágil
Testes em um mundo ágilTestes em um mundo ágil
Testes em um mundo ágil
Jose Papo, MSc
 
Automatizando seus testes com Robot Framework
Automatizando seus testes com Robot FrameworkAutomatizando seus testes com Robot Framework
Automatizando seus testes com Robot Framework
Claudenir Freitas
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 

Mais procurados (20)

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
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.
 
Metodologias de desenvolvimento de software
Metodologias de desenvolvimento de softwareMetodologias de desenvolvimento de software
Metodologias de desenvolvimento de software
 
Por que aplicações falham
Por que aplicações falham Por que aplicações falham
Por que aplicações falham
 
O teste atualmente
O teste atualmenteO teste atualmente
O teste atualmente
 
Tester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitidoTester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitido
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
O poder do TDD
O poder do TDDO poder do TDD
O poder do TDD
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDD
 
Testes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsTestes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJs
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
 
Automação de Teste para REST, Web e Mobile
Automação de Teste para REST, Web e MobileAutomação de Teste para REST, Web e Mobile
Automação de Teste para REST, Web e Mobile
 
Apenas um script de teste para iOS e Android
Apenas um script de teste para iOS e AndroidApenas um script de teste para iOS e Android
Apenas um script de teste para iOS e Android
 
Teste Unitários e TDD
Teste Unitários e TDDTeste Unitários e TDD
Teste Unitários e TDD
 
Testes em um mundo ágil
Testes em um mundo ágilTestes em um mundo ágil
Testes em um mundo ágil
 
Automatizando seus testes com Robot Framework
Automatizando seus testes com Robot FrameworkAutomatizando seus testes com Robot Framework
Automatizando seus testes com Robot Framework
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 

Semelhante a Teste automatizados e tdd

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
Dextra 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ândia
Rogerio Fontes
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
Hélio Medeiros
 
Testes unitários e Mocks
Testes unitários e MocksTestes unitários e Mocks
Testes unitários e Mocks
Frederico Belisario
 
XP Programming
XP ProgrammingXP Programming
XP Programming
CJR, UnB
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
Kleitor Franklint Correa Araujo
 
Desenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDDDesenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDD
washingtonlslima
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
Dionatan default
 
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
Pedro Pereira Martins
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
elliando dias
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
Igor Abade
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
Camilo Ribeiro
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
Rafael Ponte
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
Simone Pittner
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developing
Renato Oliveira
 
Tente desenvolver diferente com TDD
Tente desenvolver diferente com TDDTente desenvolver diferente com TDD
Tente desenvolver diferente com TDD
Webgoal
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
André Phillip Bertoletti
 
Teste de software
Teste de softwareTeste de software
Teste de software
Nylce Garcia
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
Willy Salazar
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
Henrique Schmidt
 

Semelhante a Teste automatizados e tdd (20)

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
 
UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27UnP Eng. Software - Aula 27
UnP Eng. Software - Aula 27
 
Testes unitários e Mocks
Testes unitários e MocksTestes unitários e Mocks
Testes unitários e Mocks
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
 
Desenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDDDesenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDD
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
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
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Greenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresaGreenbar - Testes automatizados na sua empresa
Greenbar - Testes automatizados na sua empresa
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Tdd not sure if testing or developing
Tdd  not sure if testing or developingTdd  not sure if testing or developing
Tdd not sure if testing or developing
 
Tente desenvolver diferente com TDD
Tente desenvolver diferente com TDDTente desenvolver diferente com TDD
Tente desenvolver diferente com TDD
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 

Teste automatizados e tdd

Notas do Editor

  1. Já teve medo de mexer em um código? Já mexeu em um código e quando foi pra produção descobriu que outra coisa nada a ver com a alteração quebrou? Já viu uma coisa que podia ser melhorada em um código, mas não melhorou pq teve medo de quebrar alguma coisa?
  2. Alguns programadores bem antigos dizem que já faziam TDD desde sempre, mas que 'redescobriu' a técnica foi o Kent Beck. Com a pupularização das metodologias ágeis, TDD e testes em geral se tornaram mais conhecidos. Na minha opinião, o Rails ajudou muito nessa popularização, porque desde as primeiras versões teve um suporte de primeira linha para testes.
  3. Vc não precisa subir o ambiente completo pra testar o que acabou de codificar Se o seu teste te mostra um bug, é mais facil encontrar e corrigir
  4. Para conseguir testar um pedaço do código isoladamente ele obrigatoriamente terá que ser mais coeso e menos acoplado O teste é o primeiro cliente o seu código
  5. Você sabe que um software está apodrecendo quando cada nova alteração leva mais tempo para ser feita que a anterior, até chegar ao extremo de impedr qualquer nova funcionalidade
  6. Write a test Simplest thing that could possibly work Remove duplication/Refactor Make it work Make it good Make it fast
  7. The key is to test the areas that you are most worried about going wrong. That way you get the most benefit for your testing effort. – Martin Fowler, Refactoring
  8. Médico Obstetra Hungaro que pregava que a prática de lavar as mãos antes de examinar as pacientes diminiuiria a ocorrencia de Infeção puerperal. Isso pode parecer ridiculo hoje, mas na época não existia estudos que comprovassem a eficacia de lavar as mãos, e a maioria dos médicos discordava e não fazia. Atualmente nem se discute mais isso e lavar as mãos é uma prática comum dos médicos. Ubcle Bob acredita que o mesmo acontecerá em relacão ao TDD e o desenvolvimeto de software.