O documento discute a importância de testes no desenvolvimento de software. Ele explica que testes garantem que o código funcione como esperado e ajudem a evitar bugs. Além disso, testes ajudam no design do sistema e inspiram mais confiança no código. O documento também apresenta diferentes técnicas de testes como TDD, BDD, testes unitários e de integração.
4. Presenteio.com
Sistema online para criar listas de presentes para
casamentos, amigo secreto...
Belasis.com.br
Sistema online para controle de salões de
beleza, spas, estéticas, profissionais de
beleza em geral...
Ruby e Rails
12. Cenário:
Dono do produto
Investidor
Desenvolvedor
13. Contextos:
● Adicionar nova funcionalidade...
● Atualizar versão do sistema...
● Atualizar dependências do sistema...
● Alterar código legado...
● Refatorar código criativo (gambiarra)...
● ....
14.
15. Como garantir a eficácia
do código?
● Através de Testes...
● Através de Documentação...
● Através de Design Patterns...
● Através de Especificação das Funcionalidades...
● Através de Código limpo e bem escrito...
● ...
16. Tipos de Testes
● Caixa Branca
● Caixa Preta
● Testes Unitários
● Testes de Integração
● Testes de Aceitação
● ...
19. TDD/BDD
● São técnicas de Desenvolvimento
● Encorajar o design simples
● Inspirar confiança
● Relacionado aos conceitos de metodologias Ágeis
● Sistemas dinâmicos complexos, mesmo com fatores
determinados, geram resultados instáveis
20. TDD/BDD
● Utiliza as ferramentas de testes
● Proporciona a documentação do código
● DRY, KISS, YAGNI...
● Em vez de testar a funcionalidade você especifica ela
● Escreve somente o código necessário, sem desperdício
24. TDD/BDD - Princípios
● Escrever primeiro o teste e vê-lo falhar
● Escrever apenas o código suficiente para o teste passar
● Refatorar
● Escrever testes pequenos
● Seguir com o próximo teste
25. TDD/BDD - Vantagens
● Colabora para o aumento da qualidade do sistema
● O software cresce de forma ordenada
● O design do sistema melhora
● Problemas são identificados antes de ir para o cliente
● Colabora com o aprendizado do desenvolvedor
● O software se adapta melhor a mudanças
● ...
31. Cenários - Critérios de
Aceitação
Cenário: Adicionar Pessoa Válida
Dado que estou em listagem de pessoas
E clico em "Nova Pessoa"
E preencho o campo nome com "Fulano de Tal"
E preencho o campo email com "fulano@empresa.com
Quando clicar em "Salvar Registro"
Então preciso ver "Pessoa cadastrada com sucesso"
32. BDD - Exemplo
(Cucumber)
Desenvolver uma calculadora
33. BDD - Vantagens
● Documenta a regra de negócio
● Valida a regra de negócio antes de escrever o código
● Colabora com a comunicação interna dentro da empresa
34. Dificuldades
● Não é fácil escrever testes, especialmente para iniciantes
● Resistência de equipes e de gerentes de projetos
● Muitas desculpas...
35. Top 5 Desculpas
● Vai demorar muito mais...
● A funcionalidade é fácil e não precisa testar...
● Não sei testar ou como testar...
● Isso não dá pra testar...
● Melhor deixar para os outros testarem...
● É mais caro testar...
36. Dicas
● Baby Steps
● Funcionalidades complexas: dividir em partes simples
● Perseverança
● Torcer para que o teste "quebre"*
● Festejar quando isso acontecer.