SlideShare uma empresa Scribd logo
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
TDD - Workshop Pyladies SP
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

PDF
TDD - Pós Graduação em Engenharia de Software Ágil
PDF
Introdução ao TDD (Test-Driven Development) - #guma10anos
PDF
DEVCAMP 2013 - Refatorar! porque ninguém gosta de código que cheira mal
PDF
TDD com Python
PDF
Trabalho sobre a linguagem Python
PPT
Coding dojo
PPTX
TDD no Community Launch 2010 - Christian Cunha
PPTX
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
TDD - Pós Graduação em Engenharia de Software Ágil
Introdução ao TDD (Test-Driven Development) - #guma10anos
DEVCAMP 2013 - Refatorar! porque ninguém gosta de código que cheira mal
TDD com Python
Trabalho sobre a linguagem Python
Coding dojo
TDD no Community Launch 2010 - Christian Cunha
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...

Mais procurados (19)

PDF
Test Driven Development (TDD) para seres humanos.
PDF
Por quê você deve utilizar TDD?
PDF
Tdd em django sem desculpas versao final
PDF
Tdd not sure if testing or developing
PPTX
Desmistificando Design Patterns
PDF
PDF
RealDay: Introduction to TDD
PPTX
Unit Testing
PDF
MSP Tech Days 2018 - Programação Funcional com F#
PPTX
Programe a eficácia do seu código
PDF
Zend Framework Estrutura e TDD
PDF
Dicas para sua carreira de Desenvolvedor PHP
PDF
Laços de Repetição
PDF
In tests we trust: começando com TDD, mocks e mais
PDF
Mutant Testing: um mundo para um X-Testing.
PPTX
5 meses de python o que aprendi
PDF
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
PPTX
Desenvolvimento orientado a testes - TDD
PPT
Introdução ao framework Django
Test Driven Development (TDD) para seres humanos.
Por quê você deve utilizar TDD?
Tdd em django sem desculpas versao final
Tdd not sure if testing or developing
Desmistificando Design Patterns
RealDay: Introduction to TDD
Unit Testing
MSP Tech Days 2018 - Programação Funcional com F#
Programe a eficácia do seu código
Zend Framework Estrutura e TDD
Dicas para sua carreira de Desenvolvedor PHP
Laços de Repetição
In tests we trust: começando com TDD, mocks e mais
Mutant Testing: um mundo para um X-Testing.
5 meses de python o que aprendi
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Desenvolvimento orientado a testes - TDD
Introdução ao framework Django
Anúncio

Semelhante a TDD - Workshop Pyladies SP (20)

PDF
Test-Driven Development with PHP
PPTX
TDD na Prática
PDF
Coding Dojo e Test Driven Development
PDF
Coding Dojo e Test Driven Development
PDF
TDD para "meros mortais"
PPTX
TDD Desenvolvimento orientado ao teste
PPT
Introdução a Desenvolvimento Orientado a Testes ( TDD )
PPTX
O poder do TDD
PDF
Desenvolvimento orientado a testes
PPT
Minicurso de TDD
PPTX
Desenvolvimento Dirigido por Testes
PPTX
Sobre TDD - Tech Friday da Everis Uberlândia
PDF
Testes de unidade na prática
PDF
TDD e Refactoring
PPTX
1 2 3 - Testando - Automatizando os testes de software
PPTX
Introdução a TDD
PPT
TDD - Test Driven Development
PDF
TDD com Python (Completo)
PDF
Padrões para Desenvolvimento de Software Guiado por Testes
PDF
DOJO - TDD com C++
Test-Driven Development with PHP
TDD na Prática
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
TDD para "meros mortais"
TDD Desenvolvimento orientado ao teste
Introdução a Desenvolvimento Orientado a Testes ( TDD )
O poder do TDD
Desenvolvimento orientado a testes
Minicurso de TDD
Desenvolvimento Dirigido por Testes
Sobre TDD - Tech Friday da Everis Uberlândia
Testes de unidade na prática
TDD e Refactoring
1 2 3 - Testando - Automatizando os testes de software
Introdução a TDD
TDD - Test Driven Development
TDD com Python (Completo)
Padrões para Desenvolvimento de Software Guiado por Testes
DOJO - TDD com C++
Anúncio

Último (19)

PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Apple Pippin Uma breve introdução. - David Glotz
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Processos na gestão de transportes, TM100 Col18
Custos e liquidação no SAP Transportation Management, TM130 Col18
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
COBITxITIL-Entenda as diferença em uso governança TI
Aula04-Academia Heri- Tecnologia Geral 2025
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Aula 18 - Manipulacao De Arquivos python
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26

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.
  • 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