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

Post on 03-Jul-2015

517 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

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-smo

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