Testes de aceitação 5

Posted by BrunoPedroso Wed, 20 Aug 2008 22:47:00 GMT

Na última reunião da AgilDF, fiquei de escrever um pouco sobre nossa experiência com testes de aceitação escritos com Selenium. O Rafa escreveu sobre os detalhes técnicos de se colocar os testes pra funcionar, mas fiquei achando que faltou descrever um outro lado, mais relacionado com as dúvidas que o pessoal trouxe na reunião:

De que forma os testes podem funcionar como documentação?

Como escrever os testes selenium antes de codificar as telas e o fluxo?

Que testes são necessários?

Como/quando/quem deve escrevê-los?

Vou tentar responder a todas as questões de uma vez, descrevendo a forma como estamos fazendo no Sigadaer. Não estou dizendo que essa é a forma correta, ou melhor forma, nem nada disso. (Tenho um outro post sobre isso, aguardem.) O que será descrito aqui trata-se apenas da forma como a coisa se desenvolveu no nosso projeto, no nosso cliente, com as nossas restrições, e da forma como a nossa criatividade mandou.

Inicialmente, vale lembrar que a terceira pergunta (quais testes) foi um dos grandes motivadores para evoluirmos nosso esquema de testes. Levantou-se em uma reunião de retrospectiva como essa que alguns bugs não haviam sido detectados pelos testes. Discutimos um pouco e chegamos à conclusão de que haviam faltado alguns cenários de teste.

Até então, havíamos combinado escrever apenas um teste selenium por cenário, exercitando o “caminho feliz” daquele caso. Isso porque a maior parte da equipe ainda estava engatinhando com a técnica de testes, com o selenium, com o sistema, e - porque não dizer - com o cliente. Achamos que é mais fácil aprender uma coisa de cada vez.

Depois de algumas iterações, a questão surgiu sozinha, de dentro da própria equipe. Precisávamos que a Valeska ou o Souto (nossos product-owners) descrevessem o cenário. Mas como pedir, por exemplo, para o Souto colocar as mãos no código e testar a aplicação? Não rola… Então decidimos que, antes de se começar cada novo cartão, a equipe deveria chamar um dos dois e levantar os cenários de teste um a um, anotando num papel de rascunho ou então escrevendo direto em comentários no código, desse jeito:

Esse código é real e foi extraído do código fonte no dia em que levantamos os cenários. Na verdade, como dá pra perceber, não tem praticamente nenhum código aí. Apenas comentários que refletem exatamente o que o usuário nos disse. Depois, com toda calma, o pessoal, enquanto programa a funcionalidade, vai preenchendo esses métodos com código de verdade, até que no final da iteração o mesmo arquivo acaba ficando assim:

E esse teste, no final da iteração executa e prova que a funcionalidade foi corretamente implementada. Melhor ainda: esse teste vai executar umas 10 vezes por dia, garantindo que isso não para de funcionar à medida em que programamos coisas novas ou reestruturamos o código todo porque não estávamos satisfeitos com o design do código.

No final, ainda conseguimos gerar o javadoc das classes e ter uma documentação detalhada de tudo o que os testes estão cobrindo. Ainda não chegamos ao ponto de um rpec ou de um fitnesse em termos de geração de documentação a partir dos testes, mas já está muito bom. O principal recado é esse: não se preocupe em acertar de primeira, faça o seu melhor hoje e faça amanhã melhor do que fez ontem (MelhoriaContinua).

Espero que tenha dado uma boa visão de como os testes têm nos ajudado nesse e em todos os outros projetos. Hoje consideramos que a disciplina de testes é o carro chefe do sucesso dos nossos projetos. Citando o GuilhermeChapiewski, “nosso lema é qualidade - nós não viramos noite e mesmo assim entregamos software no prazo, testado e funcionando muito bem, obrigado.” Por isso, aliás, é que consideramos fundamentais iniciativas como o DojoSEA!

Aproveito pra deixar o link desse artigo do DaniloSato sobre testes de aceitação com que esbarrei agora sem querer no blog do Guilherme, procurando a referência acima.

Comments

Leave a comment

  1. Avatar
    Willi about 7 hours later:

    Ah!!!

    Agora sim!!!! :)

    Eu também tava esperando por esse…

    Valeu!

    Parabéns pelo post, Bruno!

  2. Avatar
    Alê! about 12 hours later:

    Em outro cliente, estamos incorporando esses testes de aceitação no JON (ferramenta de monitoração) para obter métricas periódicas da saúde operacional da aplicação. O que acham disso, Bruno e Weeeeelli?

  3. Avatar
    BrunoPedroso about 13 hours later:

    Massa demais Alê. Mas como vcs definem os casos que serão executados? Que tal um exmplo?

  4. Avatar
    Alê! about 13 hours later:

    Ainda não chegamos nesse ponto. E é aí que vocês entram :-)

    O objetivo macro e em estar constantemente monitorando se a aplicação está funcionando (e não apenas disponível). Achamos que a suite já construída sobre o Selenium poderia ser um ótimo ponto de partida. Agora, se a utilizaremos por inteiro ou se apenas um subset dos testes construídos, aindan não sei.

    Acho que quanto mais testes executarmos perioricamente, maior será a precisão da métrica. Por outro lado, quanto mais testes, dependendo da periodicidade, maior a carga sobre o ambiente.

    []s

  5. Avatar
    André Faria Gomes about 23 hours later:

    “Não se preocupe em acertar de primeira, faça o seu melhor hoje e faça amanhã melhor do que fez ontem”. Matou a Pau!!!! Abraço

Comments