SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
TDD - Test-Driven Development
Atua como desenvolvedora desde 2012, formada em Ciência da Computação e
pós-graduanda em Inteligência Artificial. Atualmente consultora de software na
ThoughtWorks.
Twitter: @jessykalage
Instagram: @jessykalage
LinkedIn: Jessyka Lage
Github: @jessyka
JESSYKA LAGE
DEVELOPER | SÃO PAULO
https://bit.ly/2ATDFAA
Dê seu Feedback! <3
Alô, alô… testando!
O que é teste?
● "Qualquer meio para verificar ou testar a qualidade ou a veracidade de algo;
prova, experimento, verificação"
● "Prova para verificação da eficiência ou do bom funcionamento de
equipamento, organização, material, etc"
● "Todo mecanismo que busca verificar ou provar a verdade"
Teste no nosso cotidiano
Benefícios do teste
● Dá os primeiros sentidos das nossas observações
● Feedback
● + Segurança
● + Confiança
E o que isso tem a ver com
software?
Pirâmide de Testes
"Escreva testes até que o medo
seja transformado em tédio".
Kent Beck
Falando de TDD
O que é TDD?
Uma metodologia de
desenvolvimento de software que
prima por ciclos curtos de teste,
implementação e refatoração, nesta
ordem.
O que é TDD?
1- Não se deve escrever código de
produção até criar um teste de
unidade de falha.
2- Não se deve escrever mais de um
teste de unidade necessário para
falhar.
3- Não se deve escrever mais código
de produção do que o necessário
para resolver o teste.
Razões para TDD
● Escrever o mínimo necessário de código para atender os requisitos do
negócio.
● Criar uma coleção executável de cenários da especificação do software.
● Dar a segurança necessária para introduzir mudanças no software.
Benefícios TDD
● Faz com que cada linha do software seja testada
● Proporciona código limpo e legível
● Mantém a implementação simples e testável
● Testes unitários são documentos atualizados do seu código
● Menos Bugs em produção
● Facilidade de refatoração
Python com TDD
Python com TDD - Pytest
● Ferramenta de teste python.
● Rápido e com boa legibilidade.
# Exemplo de teste:
Python com TDD- Pytest
● Como instalar o pytest no meu projeto?
○ Executando o comando:
● Onde escrever os testes?
○ Mantenha seu código de teste separado do código da aplicação:
pip install pytest
Python com TDD - Convenções para Testes
● Como escrever testes unitários:
○ O nome do arquivo deve iniciar com Test. ex: test_fizzbuzz.py
○ O nome do método deve iniciar com test.
ex: test_deve_retornar_isso()
● Assertions
○ assert esperado == saida
● Como rodar os testes:
○ Executar o comando pytest no terminal
○ pytest
Padrões e Práticas de Teste
● Pequenas unidades →
Separação de conceitos
● Divisão de complexidade
● Faça o mais simples possível
● Nomeie seus testes de forma
descritiva, aqui dicas de como
nomear seus testes
● Nomes de testes ruins
● Testes vazios (no assertions)
● Testes não determinísticos
(causes flaky tests)
Python com TDD - Estudo de Caso
FizzBuzz
Dado um número, o programa deve:
● Retornar "Fizz" se o número é um múltiplo de 3;
● Retornar "Buzz" se o número é um múltiplo de 5;
● Retornar "FizzBuzz" se o número é um múltiplo de 3 e 5
simultaneamente;
● Retornar o próprio número se não for múltiplo de nenhum.
● Retornar "Fizz" se o número é um múltiplo de 3;
● Retornar "Fizz" se o número é um múltiplo de 3;
● Retornar "Buzz" se o número é um múltiplo de 5;
● Retornar "Buzz" se o número é um múltiplo de 5;
● Retornar "FizzBuzz" se o número é um múltiplo de 3 e 5
simultaneamente;
● Retornar "FizzBuzz" se o número é um múltiplo de 3 e 5
simultaneamente;
● Retornar o próprio número se não for múltiplo de nenhum.
● Retornar o próprio número se não for múltiplo de nenhum.
Vamos refatorar
Python com TDD - Estudo de Caso
Novo requisito! 🚨
Dado um número, o programa deve:
● Retornar "Fizz" se o número é um múltiplo de 3;
● Retornar "Buzz" se o número é um múltiplo de 5;
● Retornar "FizzBuzz" se o número é um múltiplo de 3 e 5
simultaneamente;
● Retornar o próprio número se não for múltiplo de nenhum;
● Retornar um erro quando um número menor ou igual a zero.
Python com TDD - Estudo de Caso
Números Primos 🚨
Dado um número, o programa deve:
● Retornar "Falso" se o valor for 1;
● Retornar "Verdadeiro" se o número é divisível apenas por 1 e por ele mesmo;
● Retornar "Falso" se o número é divisível por 1, por ele mesmo e ainda possui
outro (s) divisor (es);
Próximos passos
● Praticando:
○ http://codewars.com
○ Tente adicionar 1 teste unitário ao seu código :)
● https://docs.pytest.org/en/stable/
● https://dzone.com/articles/7-popular-unit-test-naming
● Repo FizzBuzz e Números Primos
JESSYKA LAGE
DEVELOPER | SÃO PAULO
Twitter: @jessykalage
Instagram: @jessykalage
LinkedIn: Jessyka Lage
Github: @jessyka
OBRIGADA!
https://bit.ly/2ATDFAA

Mais conteúdo relacionado

Mais procurados

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
 
Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Wellington Moreira
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalAdriano Petrich
 
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 developingRenato Oliveira
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design PatternsMaicon Heck
 
MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#Gustavo Bellini Bigardi
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu códigoAna Claudia Nogueira
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDDPHP Day Curitiba
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisAna Paula Gomes
 
Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Robson Agapito Correa
 
5 meses de python o que aprendi
5 meses de python  o que aprendi5 meses de python  o que aprendi
5 meses de python o que aprendiVinta Software
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Sidney Roberto
 
Desenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDDDesenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDDwashingtonlslima
 
Introdução ao framework Django
Introdução ao framework DjangoIntrodução ao framework Django
Introdução ao framework DjangoEduardo Palma
 

Mais procurados (19)

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.
 
Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
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
 
Desmistificando Design Patterns
Desmistificando Design PatternsDesmistificando Design Patterns
Desmistificando Design Patterns
 
Pep 8
Pep 8Pep 8
Pep 8
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu código
 
Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDD
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
Laços de Repetição
Laços de RepetiçãoLaços de Repetição
Laços de Repetição
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e mais
 
Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.
 
5 meses de python o que aprendi
5 meses de python  o que aprendi5 meses de python  o que aprendi
5 meses de python o que aprendi
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
 
Desenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDDDesenvolvimento orientado a testes - TDD
Desenvolvimento orientado a testes - TDD
 
Introdução ao framework Django
Introdução ao framework DjangoIntrodução ao framework Django
Introdução ao framework Django
 

Semelhante a TDD - Workshop Pyladies SP

TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 
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
 
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
 
Django Object factory
Django Object factoryDjango Object factory
Django Object factoryitalomaia
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesEverton Rodrigues
 
TDD com LEGO #PHPExperience2016
TDD com LEGO #PHPExperience2016TDD com LEGO #PHPExperience2016
TDD com LEGO #PHPExperience2016Simone Pittner
 
PHP Experience 2016 - [Workshop] Agile: Test Driven Development
PHP Experience 2016 - [Workshop] Agile: Test Driven DevelopmentPHP Experience 2016 - [Workshop] Agile: Test Driven Development
PHP Experience 2016 - [Workshop] Agile: Test Driven DevelopmentiMasters
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Gabriel Rubens
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Gabriel Rubens
 
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
 
Demystifying Automated Tests - [ PT-BR ]
Demystifying Automated Tests - [ PT-BR ]Demystifying Automated Tests - [ PT-BR ]
Demystifying Automated Tests - [ PT-BR ]oreasekadd
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitAdolfo Neto
 

Semelhante a TDD - Workshop Pyladies SP (20)

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 a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
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
 
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
 
Django Object factory
Django Object factoryDjango Object factory
Django Object factory
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por Testes
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
TDD com LEGO #PHPExperience2016
TDD com LEGO #PHPExperience2016TDD com LEGO #PHPExperience2016
TDD com LEGO #PHPExperience2016
 
PHP Experience 2016 - [Workshop] Agile: Test Driven Development
PHP Experience 2016 - [Workshop] Agile: Test Driven DevelopmentPHP Experience 2016 - [Workshop] Agile: Test Driven Development
PHP Experience 2016 - [Workshop] Agile: Test Driven Development
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Testes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicandoTestes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicando
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
 
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
 
Demystifying Automated Tests - [ PT-BR ]
Demystifying Automated Tests - [ PT-BR ]Demystifying Automated Tests - [ PT-BR ]
Demystifying Automated Tests - [ PT-BR ]
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
 

TDD - Workshop Pyladies SP

  • 1. TDD - Test-Driven Development
  • 2. Atua como desenvolvedora desde 2012, formada em Ciência da Computação e pós-graduanda em Inteligência Artificial. Atualmente consultora de software na ThoughtWorks. Twitter: @jessykalage Instagram: @jessykalage LinkedIn: Jessyka Lage Github: @jessyka JESSYKA LAGE DEVELOPER | SÃO PAULO
  • 5. O que é teste? ● "Qualquer meio para verificar ou testar a qualidade ou a veracidade de algo; prova, experimento, verificação" ● "Prova para verificação da eficiência ou do bom funcionamento de equipamento, organização, material, etc" ● "Todo mecanismo que busca verificar ou provar a verdade"
  • 6. Teste no nosso cotidiano
  • 7. Benefícios do teste ● Dá os primeiros sentidos das nossas observações ● Feedback ● + Segurança ● + Confiança
  • 8. E o que isso tem a ver com software?
  • 9. Pirâmide de Testes "Escreva testes até que o medo seja transformado em tédio". Kent Beck
  • 11. O que é TDD? Uma metodologia de desenvolvimento de software que prima por ciclos curtos de teste, implementação e refatoração, nesta ordem.
  • 12. O que é TDD? 1- Não se deve escrever código de produção até criar um teste de unidade de falha. 2- Não se deve escrever mais de um teste de unidade necessário para falhar. 3- Não se deve escrever mais código de produção do que o necessário para resolver o teste.
  • 13. Razões para TDD ● Escrever o mínimo necessário de código para atender os requisitos do negócio. ● Criar uma coleção executável de cenários da especificação do software. ● Dar a segurança necessária para introduzir mudanças no software.
  • 14. Benefícios TDD ● Faz com que cada linha do software seja testada ● Proporciona código limpo e legível ● Mantém a implementação simples e testável ● Testes unitários são documentos atualizados do seu código ● Menos Bugs em produção ● Facilidade de refatoração
  • 16. Python com TDD - Pytest ● Ferramenta de teste python. ● Rápido e com boa legibilidade. # Exemplo de teste:
  • 17. Python com TDD- Pytest ● Como instalar o pytest no meu projeto? ○ Executando o comando: ● Onde escrever os testes? ○ Mantenha seu código de teste separado do código da aplicação: pip install pytest
  • 18. Python com TDD - Convenções para Testes ● Como escrever testes unitários: ○ O nome do arquivo deve iniciar com Test. ex: test_fizzbuzz.py ○ O nome do método deve iniciar com test. ex: test_deve_retornar_isso() ● Assertions ○ assert esperado == saida ● Como rodar os testes: ○ Executar o comando pytest no terminal ○ pytest
  • 19. Padrões e Práticas de Teste ● Pequenas unidades → Separação de conceitos ● Divisão de complexidade ● Faça o mais simples possível ● Nomeie seus testes de forma descritiva, aqui dicas de como nomear seus testes ● Nomes de testes ruins ● Testes vazios (no assertions) ● Testes não determinísticos (causes flaky tests)
  • 20. Python com TDD - Estudo de Caso FizzBuzz Dado um número, o programa deve: ● Retornar "Fizz" se o número é um múltiplo de 3; ● Retornar "Buzz" se o número é um múltiplo de 5; ● Retornar "FizzBuzz" se o número é um múltiplo de 3 e 5 simultaneamente; ● Retornar o próprio número se não for múltiplo de nenhum.
  • 21. ● Retornar "Fizz" se o número é um múltiplo de 3;
  • 22. ● Retornar "Fizz" se o número é um múltiplo de 3;
  • 23. ● Retornar "Buzz" se o número é um múltiplo de 5;
  • 24. ● Retornar "Buzz" se o número é um múltiplo de 5;
  • 25. ● Retornar "FizzBuzz" se o número é um múltiplo de 3 e 5 simultaneamente;
  • 26. ● Retornar "FizzBuzz" se o número é um múltiplo de 3 e 5 simultaneamente;
  • 27. ● Retornar o próprio número se não for múltiplo de nenhum.
  • 28. ● Retornar o próprio número se não for múltiplo de nenhum.
  • 30.
  • 31. Python com TDD - Estudo de Caso Novo requisito! 🚨 Dado um número, o programa deve: ● Retornar "Fizz" se o número é um múltiplo de 3; ● Retornar "Buzz" se o número é um múltiplo de 5; ● Retornar "FizzBuzz" se o número é um múltiplo de 3 e 5 simultaneamente; ● Retornar o próprio número se não for múltiplo de nenhum; ● Retornar um erro quando um número menor ou igual a zero.
  • 32. Python com TDD - Estudo de Caso Números Primos 🚨 Dado um número, o programa deve: ● Retornar "Falso" se o valor for 1; ● Retornar "Verdadeiro" se o número é divisível apenas por 1 e por ele mesmo; ● Retornar "Falso" se o número é divisível por 1, por ele mesmo e ainda possui outro (s) divisor (es);
  • 33. Próximos passos ● Praticando: ○ http://codewars.com ○ Tente adicionar 1 teste unitário ao seu código :) ● https://docs.pytest.org/en/stable/ ● https://dzone.com/articles/7-popular-unit-test-naming ● Repo FizzBuzz e Números Primos
  • 34. JESSYKA LAGE DEVELOPER | SÃO PAULO Twitter: @jessykalage Instagram: @jessykalage LinkedIn: Jessyka Lage Github: @jessyka OBRIGADA! https://bit.ly/2ATDFAA