Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Teste sua aplicação antes que ela teste você

Link
June 26, 2012

Teste sua aplicação antes que ela teste você

O I BootCamp SMO organizado pelo grupo OeSC Livre foi organizado pelos voluntários da comunidade de software livre do Oeste Catarinense no dia 23 de junho de 2012 no SENAI em São Miguel do Oeste.

Link

June 26, 2012
Tweet

Other Decks in Programming

Transcript

  1. Teste sua aplicação antes que ela teste você I BootCamp

    OeSC Livre São Miguel do Oeste jun/2012 por Tiago Link
  2. 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
  3. Contextos: • Adicionar nova funcionalidade... • Atualizar versão do sistema...

    • Atualizar dependências do sistema... • Alterar código legado... • Refatorar código criativo (gambiarra)... • ....
  4. 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... • ...
  5. Tipos de Testes • Caixa Branca • Caixa Preta •

    Testes Unitários • Testes de Integração • Testes de Aceitação • ...
  6. 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
  7. 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
  8. 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
  9. 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 • ...
  10. Funcionalidade: Gerenciar Pessoas Como um usuário do sistema Eu quero

    utilizar este cadastro em outros pontos do sistema Histórias do Usuário
  11. 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 "[email protected] Quando clicar em "Salvar Registro" Então preciso ver "Pessoa cadastrada com sucesso" Cenários - Critérios de Aceitação
  12. 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
  13. Dificuldades • Não é fácil escrever testes, especialmente para iniciantes

    • Resistência de equipes e de gerentes de projetos • Muitas desculpas...
  14. 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...
  15. Dicas • Baby Steps • Funcionalidades complexas: dividir em partes

    simples • Perseverança • Torcer para que o teste "quebre"* • Festejar quando isso acontecer.
  16. Vou ficar devendo... • Integração Contínua • Testes Automatizados •

    Deploy Contínuo • Ferramentas BDD em ruby (Cucumber, Rspec, Steak) • Exemplos utilizados na prática
  17. Para entrar em contato... Basta pesquisar no Google a palavra

    "Link", você encontrará: • about.me/tiagolink • github.com/tiagolink • twitter.com/tiagolink • facebook.com/tiagolink • slideshare.com/tiagolink • tiagolink.net (blog - em breve) • [email protected] (E-mail) Obrigado!