Rogério Fontes
@rogeriofontes
http://rogeriofontes.inf.br
Lider Técnico Java.
Apaixonado em código e formas ágeis de criá-los, Líder do UaiJUG
(Grupo de Usuários do Triângulo Mineiro, Lider Técnico Everis.
TDD
• O que é Desenvolvimento Dirigido por Testes?
“Código limpo que funciona”
-- Ron Jeffries
Ciclo em Passos Pequenos:
1. Vermelho: Escreva um teste que falha.
2. Verde: Faça o teste passar
rapidamente.
3. Refatore.
• Como funciona?
 Ter menor custo de manutenção do projeto;
 Ter melhor prototipação e Analise do código;
 Ter Melhor estimativas;
 Ter melhor Legibilidade do código;
 Ter menos código;
 Ter melhor uso OOP;
 Ter menos defeitos e menos debug;
• Vantagens do TDD:
 Testes viciados;
 Falsa sensação de segurança;
 Mau uso;
 Curva de aprendizagem;
• Desvantagens do TDD:
 Usando TDD você sempre vai prototipar, pensar melhor sua unidade de
código, ou seja, seu código vai representar bem a regra de negocio.
• Por que usar esse processo do TDD:
Lembre-se:
"Teste é código"
• Se o desenvolvedor não entende a técnica;
• Acredita que design e o TDD são coisas separadas;
• Acha que é receita de bolo e não prototipagem.
• É oneroso ?
• Maior qualidade no código;
• Entregas mais rápidas;
• Desenvolvimento ágil;
• Melhoria nas estimativas;
• Resultado
• Problemas nas estimativas;
• “O código está feito, falta testar”;
• Unit test com baixa qualidade;
• Alta quantidade de bugs;
• Quando não usamos TDD
• Design evolui junto com o conhecimento:
• Andar em “Passos Pequenos”
• Nome dos testes definem o comportamento esperado
• Testes e código:
– Fatorados (sem duplicação)
– Expressam as intenções do programador
– Servem como documentação
• Resumindo o TDD:
Pirâmide de testes
• Quão importante ou quão crítico esse teste é para manter o negócio
funcionando?
• Qual é o impacto financeiro para a empresa em caso de erro?
• Qual é a probabilidade de falha? Alta, média ou baixa?
• Qual é o impacto no resultado final do produto ou serviço oferecido?
Para ajudar a definir esses testes, responder às seguintes perguntas:
O que são testes unitários?
@Test
public void whenAssertingEquality_thenEqual() {
String expected = "Baeldung";
String actual = "Baeldung";
assertEquals(expected, actual);
}
Você pode usar Frameworks para te ajudar a fazer teste unitários:
Como conseguimos um código simples? Fazendo um Teste passar
Como conseguimos um código claro? Refatorando o código após ele
passar
Como conseguimos um código seguro? Com Testes
O TDD nos obriga a escrever códigos menos acoplados e mais coesos para
que se tornem mais “testáveis”.
O simples fato de escrevermos o teste antes da função nos obriga a
respeitar o “Single Responsibility Principle”, um princípio fundamental do
desenvolvimento orientado a objetos. Por estamos pensando como
válidar os nossos Assert, com isso conseguimos que nossa função
tende a ter uma única tarefa.
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia

Sobre TDD - Tech Friday da Everis Uberlândia

  • 1.
    Rogério Fontes @rogeriofontes http://rogeriofontes.inf.br Lider TécnicoJava. Apaixonado em código e formas ágeis de criá-los, Líder do UaiJUG (Grupo de Usuários do Triângulo Mineiro, Lider Técnico Everis. TDD
  • 2.
    • O queé Desenvolvimento Dirigido por Testes? “Código limpo que funciona” -- Ron Jeffries
  • 3.
    Ciclo em PassosPequenos: 1. Vermelho: Escreva um teste que falha. 2. Verde: Faça o teste passar rapidamente. 3. Refatore. • Como funciona?
  • 4.
     Ter menorcusto de manutenção do projeto;  Ter melhor prototipação e Analise do código;  Ter Melhor estimativas;  Ter melhor Legibilidade do código;  Ter menos código;  Ter melhor uso OOP;  Ter menos defeitos e menos debug; • Vantagens do TDD:
  • 5.
     Testes viciados; Falsa sensação de segurança;  Mau uso;  Curva de aprendizagem; • Desvantagens do TDD:
  • 6.
     Usando TDDvocê sempre vai prototipar, pensar melhor sua unidade de código, ou seja, seu código vai representar bem a regra de negocio. • Por que usar esse processo do TDD: Lembre-se: "Teste é código"
  • 8.
    • Se odesenvolvedor não entende a técnica; • Acredita que design e o TDD são coisas separadas; • Acha que é receita de bolo e não prototipagem. • É oneroso ?
  • 9.
    • Maior qualidadeno código; • Entregas mais rápidas; • Desenvolvimento ágil; • Melhoria nas estimativas; • Resultado
  • 10.
    • Problemas nasestimativas; • “O código está feito, falta testar”; • Unit test com baixa qualidade; • Alta quantidade de bugs; • Quando não usamos TDD
  • 11.
    • Design evoluijunto com o conhecimento: • Andar em “Passos Pequenos” • Nome dos testes definem o comportamento esperado • Testes e código: – Fatorados (sem duplicação) – Expressam as intenções do programador – Servem como documentação • Resumindo o TDD:
  • 12.
  • 13.
    • Quão importanteou quão crítico esse teste é para manter o negócio funcionando? • Qual é o impacto financeiro para a empresa em caso de erro? • Qual é a probabilidade de falha? Alta, média ou baixa? • Qual é o impacto no resultado final do produto ou serviço oferecido? Para ajudar a definir esses testes, responder às seguintes perguntas:
  • 14.
    O que sãotestes unitários? @Test public void whenAssertingEquality_thenEqual() { String expected = "Baeldung"; String actual = "Baeldung"; assertEquals(expected, actual); }
  • 15.
    Você pode usarFrameworks para te ajudar a fazer teste unitários:
  • 16.
    Como conseguimos umcódigo simples? Fazendo um Teste passar Como conseguimos um código claro? Refatorando o código após ele passar Como conseguimos um código seguro? Com Testes O TDD nos obriga a escrever códigos menos acoplados e mais coesos para que se tornem mais “testáveis”.
  • 17.
    O simples fatode escrevermos o teste antes da função nos obriga a respeitar o “Single Responsibility Principle”, um princípio fundamental do desenvolvimento orientado a objetos. Por estamos pensando como válidar os nossos Assert, com isso conseguimos que nossa função tende a ter uma única tarefa.