1. TDD – TestDrivenDevelopment Gibran Silva gibran.silva@gmail.com / @ggibran BacharelemCiência da Computação Arquiteto de Software ConsultorIndependente
2. Objetivo O que é TDD? Como Funciona Frameworks Benefícios Princípios
3. Curiosidade Uma pesquisa do Departamento de Comércio dos EUA, publicada em 2002, revelou que falhas de software são tão comuns e tão danosas que se estima que causem um prejuízo anual de mais de 60 bilhões de dólares para a economia americana. O estudo também alega que, embora não seja possível remover todos os erros, mais de um terço destes custos poderia ser eliminado caso se utilizasse uma infra-estrutura de testes melhor, que permitisse identificar e remover defeitos mais cedo e de forma mais eficaz. Atualmente, calcula-se que cerca de 50% dos defeitos são encontrados apenas nas fases finais dos projetos, ou após os sistemas começarem a ser utilizados em produção. Retirado de National Institute of Standards and Technology O que é TDD?
4. O que é TDD? É uma técnica de desenvolvimento de software cujo processo é formado por pequenas iterações para o desenvolvimento de uma nova funcionalidade. TDD vem do conceito “test-first programming” do XP (Extreme Programming), mas acabou ganhando tando interesse que hoje é utilizado independente da adoção de XP. Não é um método para testar software, mas para construir software. O que é TDD?
10. Princípios Exemplo de “Lista de Testes” para o caso de uso “Realizar Transferência Bancária”: Realizar uma transferência normal (bem sucedida); Tentar transferir uma quantidade superior ao saldo da conta de origem; Verificar atomicidade no caso de falha de sistema antes de concluir a operação; Conta de origem inativa; Conta de destino inativa; Valor transferido menor que zero; Princípios
11. Princípios Exemplo: Transferir uma quantidade superior ao saldo da conta de origem; [Test] [ExpectedException(typeof(SaldoInsuficiente))] publicvoidTransferirValorSuperiorAoSaldoDaContaDeOrigem() { Decimal saldoInicial = 1000.0; Decimal valorTransferencia = 5000.0; ContacontaOrigem= newConta(SaldoInicial); ContacontaDestino = newConta(SaldoInicial); contaOrigem.Debitar(valorTransferencia); contaDestino.Creditar(valorTransferencia); } Princípios
12. Princípios Dados para Teste Não escolha números mágicos se eles não tiverem um significado específico no teste. Por exemplo, se não faz diferença utilizar “1”, “2” ou “1365”, preferia “1”. Evite passar o mesmo valor para diferentes parâmetros. Por exemplo, para testar um método Operacao(int x, int y), não utilize Operacao(2,2), pois “Operacao” pode inverter “x” e “y” e o teste ainda assim passar. Prefira, por exemplo, Operacao(2,3). Dê preferência a dados do mundo real, especialmente quando você tem algum sistema legado com dados que podem ser aproveitados Princípios
13. Dúvidas? Gibran Silva gibran.silva@gmail.com / @ggibran BacharelemCiência da Computação Arquiteto de Software ConsultorIndependente