teste sua aplicação antes que ela teste você
DESCRIPTION
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.Material da palestra em: https://github.com/tiagolink/palestra-do-evento-I-boocamp-smoTRANSCRIPT
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 "[email protected] 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)● [email protected] (E-mail)
Obrigado!