teste sua aplicação antes que ela teste você
Post on 03-Jul-2015
517 Views
Preview:
DESCRIPTION
TRANSCRIPT
Teste sua aplicaçãoantes que ela teste você
I BootCamp OeSC LivreSão Miguel do Oeste
jun/2012
por Tiago Link
Who I am?
Tiago LinkDesenvolvedor Web
desenvolvemos ideias e aplicações web
Presenteio.comSistema online para criar listas de presentes para casamentos, amigo secreto...
Belasis.com.brSistema online para controle de salões de beleza, spas, estéticas, profissionais de beleza em geral...
Ruby e Rails
Teste sua aplicação...
... antes que ela teste você.
Vamos falar de testes...
Não. Vamos falar de
desenvolvimento.
Código.Responsabilidade.
Cenário:
Dono do produto
Cenário:
Investidor
Dono do produto
Cenário:
Investidor
Dono do produto
Desenvolvedor
Contextos:● Adicionar nova funcionalidade...● Atualizar versão do sistema...● Atualizar dependências do sistema...● Alterar código legado...● Refatorar código criativo (gambiarra)...● ....
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...● ...
Tipos de Testes
● Caixa Branca● Caixa Preta● Testes Unitários● Testes de Integração● Testes de Aceitação● ...
TDD
Desenvolvimento Orientado a Testes
BDD
Desenvolvimento Guiado por Comportamento
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
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
Escrever código eficaz évê-lo falhar primeiro.
TDD/BDD - Ciclo de VidaRED
GREENREFACTOR
TDD/BDD - Exemplo
Desenvolver o jogo: FizzBuzz
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
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● ...
BDD
● Como começar?● O que testar?
Como começar?
● Escrever testes outside-in (de fora pra dentro)
O que testar?
● User Stories (história do usuário)
Funcionalidade: Gerenciar PessoasComo um usuário do sistemaEu quero utilizar este cadastro em outros pontos do sistema
Histórias do Usuário
Cenário: Adicionar Pessoa VálidaDado que estou em listagem de pessoasE clico em "Nova Pessoa"E preencho o campo nome com "Fulano de Tal"E preencho o campo email com "fulano@empresa.comQuando clicar em "Salvar Registro"Então preciso ver "Pessoa cadastrada com sucesso"
Cenários - Critérios de Aceitação
BDD - Exemplo(Cucumber)
Desenvolver uma calculadora
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
Dificuldades
● Não é fácil escrever testes, especialmente para iniciantes● Resistência de equipes e de gerentes de projetos● Muitas desculpas...
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...
Dicas
● Baby Steps● Funcionalidades complexas: dividir em partes simples● Perseverança● Torcer para que o teste "quebre"*● Festejar quando isso acontecer.
Perguntas?
Vou ficar devendo...
● Integração Contínua● Testes Automatizados● Deploy Contínuo● Ferramentas BDD em ruby (Cucumber, Rspec, Steak)● Exemplos utilizados na prática
Não existe bala de prata
Teste sua aplicação...
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)● tlink.k@gmail.com (E-mail)
Obrigado!
top related