Oi!
Aprendi um pouco de Cucumber recentemente, quando comecei a trabalhar com Ruby. O Cucumber é praticamente uma unanimidade no universo Ruby para execução de testes automatizados.
E o que é? Cucumber é um framework que permite criar cenários executáveis para os testes. Ele cria uma camada legível e compreensível dos scripts de teste.
Imagine que você tem criado diversos testes automatizados para o sistema em que trabalha. Quando criar seus scripts de testes, você vai ter um amontoado de métodos que clicam em botões e preenchem campos. Mas para o seu cliente final ou pra qualquer outra pessoa "menos técnica" da sua equipe, nenhum desses métodos "faz sentido". Com o Cucumber, podemos descrever o que esses métodos representam em forma de features e cenários.
Outros posts sobre Cucumber (e BDD), em português:
http://testinworld.wordpress.com/2013/05/24/bdd-com-cucumber-parte-1/
http://www.bugbang.com.br/entendendo-bdd-com-cucumber-parte-i/
E o Cucumber site:
http://cukes.info/
No site, vocês podem ver que o Cucumber trabalha com Ruby, Java, .Net e Flex... Ah, além de "qualquer aplicação web desenvolvida em qualquer linguagem"!
Na prática, eu tenho usado o Cucumber com Ruby e vou falar nesse contexto.
Estrutura do Cucumber
1 - Tipicamente, você deve inserir a estrutura de arquivos do Cucumber dentro do projeto do seu sistema. Você vai ter uma nova pasta, chamada features.Imagem retirada desse post: http://vertocardoso.wordpress.com/2010/09/02/utilizando-cucumber-com-selenium-em-seus-projetos-java/ |
2 - Na pasta features, teremos as pastas step_definitions e support, além dos arquivos features.
- features --> As features são o core do Cucumber, é por elas que adotamos um framework como esse. São escritas usando a DSL Gherkin e nelas descrevemos o comportamento do nosso software. Nosso software pode ter N features, e cada feature pode ter N cenários.
- step_definitions --> É o repositório para os scripts de teste, aquele tal amontoado de métodos que farão a iteração com o nosso software.
- support --> É o repositório das configurações dos testes. Browsers, drivers, pré e pós condições, constantes, etc.
Mãos na massa!
Pré-requisito:
- É preciso ter Ruby instalado. Instala aí, é fácil! Juro!
- Instalar a gem testgen
- Instalar um editor decente pra Gherkin DSL. Eu uso o Sublime Text 2, com esse plugin maroto aqui! Existem também plugins pra notepad ++, pra Eclipse, etc.
First trick
Já entendemos como é a estrutura de um projeto de testes feito com Cucumber, mas não precisamos criar isso na mão. Pra isso instalamos a gem TESTGEN. Essa bonitinha cria toda a estrutura do projeto pra nós. Basta executar o comando "testgen project <nome_do_projeto>".
Tipicamente², você colocaria essa estrutura do Cucumber dentro da estrutura de pastas do projeto do seu sistema. No nosso caso, o projeto de testes vai ficar apartado, por motivos óbvios.
Um ponto importante é que foram criados 3 arquivos dos quais não falamos anteriormente:
Rakefile, Gemfile e cucumber.yml.
São arquivos de configuração do projeto e não ficam dentro da pasta /features. Provavelmente, no projeto do sistema em que você trabalha, já existem Rakefiles e um Gemfile, mas como estamos criando um projeto de testes separado e "do zero", eles também foram criados.
Features e cenários
Vou usar um velho conhecido meu como alvo do nosso exemplo, o site do Walmart: //www.walmart.com.br/
Vamos usar duas features para desenvolver os cenários (testes): Recuperação de Login e Cálculo de Frete.
1 - Criar um arquivo para cada feature, usando a extensão .feature
2 - Descrever as features usando Gherkin. O Gherkin tem suporte a diversos idiomas e, por padrão, você pode usar o inglês diretamente. Vou usar o português utilizando # language: pt.
3 - Descrever os cenários pertinentes a cada feature. Esses cenários vão representar nossos testes, são os nossos executáveis e cada "passo" de um cenário vai estar vinculado ao código nos step_definitions.
Executando o projeto
Com o que fizemos até aqui já temos cenários executáveis, é uma documentação viva do nosso projeto e temos uma forma "legível" de representar o que nossos testes automatizados estão validando.Precisamos agora vincular esses cenários aos scripts. Criar os scripts vai ser assunto de outro post, mas faremos esse "vínculo" entre métodos e cenários agora, executando as features.
1 - Se você tiver a gem bundler instalada, execute o comando bundle no terminal, dentro da pasta do projeto (não na pasta features). O bundle instala as gems listadas no Gemfile do projeto, o que fará com que o Cucumber, o Rspec, e todas as dependências sejam instalados. Se você não tiver o bundler, instale as duas gems "na mão".
2 - Run! No momento em que executarmos as featues, o próprio Cucumber vai mostrar como devem ser implementados os steps com os scripts.
O comando para executar é: cucumber features/nomedafeture.feature
3 - Na pasta step_definitions, é preciso criar um arquivo Ruby (.rb) para colocar esses steps. Simples assim, copiar os steps sugeridos no terminal e colar no arquivo .rb.
Feito isso, em cada step pending vamos implementar nossos scripts testes, mas isso fica pra próxima.
O código desse exemplo está disponível no Bitbucket:
https://bitbucket.org/karolxavierleite/how-to-test-cucumber-framework
Nenhum comentário:
Postar um comentário