Publicidade - Adsense

BDD com Cucumber – Parte 1



  • Olá pessoas, tudo bem?
    Aproveitando o espaço, vamos falar de coisa boa, vamos falar da tekpix…… brincadeira.

    Hoje, apresentarei para quem ainda não conhece, um framework muito famoso para BDD (Behaviour-Driven Development - Desenvolvimento Guiado por Comportamento), chamado Cucumber.

    Antes de falar do Cucumber, vocês sabem o que é BDD?

    Para explicar o que é BDD, vamos observar a clássica imagem abaixo:

    sa_1369080489Software.jpg

    É lógico que podem ter ocorrido inúmeras situações para que cada uma das fases acima tenha falhado, entretanto, tem uma falha que é a mais comum em projetos de desenvolvimento de software: a comunicação.

    Definindo a palavra “Comunicação” –> A comunicação é um processo que envolve a troca de informações, e utiliza os sistemas simbólicos como suporte para este fim. (Fonte: Wikipedia )

    A definição acima nos mostra que para haver uma comunicação temos que utilizar algum sistema simbólico,que pode ser desenho, fala ou escrita.

    Imagine uma empresa onde trabalhem pessoas de toda a parte do mundo. Para você se comunicar, provavelmente a empresa estabeleceu um idioma comum, por exemplo, o inglês.

    Parece fácil né? Mas se fosse, não haveriam inúmeros problemas por causa da comunicação, principalmente em desenvolvimento de software, onde o cliente usa uma linguagem diferente do líder técnico, que por sua vez fala diferente dos analistas de testes.
    Há muito ruído na comunicação, mesmo todas essas pessoas falando o mesmo idioma.

    É nesse momento que entra o BDD.

    BDD é uma técnica de desenvolvimento, onde a comunicação é através de um vocabulário pequeno e comum, diminuindo a distância entre o negócio (cliente ou Product Owner) e a equipe de T.I. (Arquitetos, Desenvolvedores, Analistas de Testes).

    O vocabulário comum em BDD é o Gherkin. Gherkin é uma linguagem que foi criada especialmente para descrições de comportamento, ela tem a capacidade de remover detalhes da lógica de programação e focar no comportamento que uma funcionalidade deve ter.

    Um arquivo Gherkin é semelhante a um Caso de Uso, contém:

    • Título da funcionalidade.
    • Descrição da funcionalidade.
    • Cenários, compostos por uma seqüência de passos, que descrevem uma interação entre um usuário e o sistema.

    Vocês irão notar que a diferença entre um arquivo usando Gherkin e um Caso de uso é que o caso de uso você usará apenas como documentação, enquanto o arquivo em Gherkin – dentro do Framework do Cucumber - será uma etapa da sua automação de testes, além é claro de servir também como documentação.

    Caso de uso: Uma peça (documentação) que servirá apenas para consulta e ainda se a mesma estiver atualizada, caso contrário não terá validade alguma.

    Arquivo usando Gherkin: Uma peça que irá se encaixar perfeitamente na automação dos seus testes e ainda servirá de documentação. Sua documentação nunca estará desatualizada, do contrário, seus testes quebrariam.

    Exemplo

    Para entender melhor, vamos a um exemplo, dividido por etapas:

    **Etapa 1 – “Let’s Plan it” **- Imagine que na reunião onde são discutidos todos os itens da próxima entrega de um projeto X, exista uma feature (funcionalidade), entre outras, que seja : “Buscar uma rota para treinar”.

    **Etapa 2 - ”Let’s make BDD”. **– Neste momento, todos os integrantes da equipe se reúnem para confeccionar os as features usando a linguagem Gherkin.
    Vamos confeccionar a feature “Buscar uma rota para treinar” em Gherkin:

    1 - Você e sua equipe deverão abrir um editor de texto qualquer (no meu exemplo eu usei “Sublime Text“).
    2 - O nosso arquivo sempre começará com a definição do idioma que iremos escrever os detalhes da funcionalidade, no nosso caso será em português, então, ficará assim:

    Observação: O Gherkin tem suporte para mais de 40 idiomas.

    3 - Após a definição do idioma, temos que definir qual funcionalidade iremos detalhar. A palavra reservada em Gherkin para tal definição é “Funcionalidade:”, no nosso exemplo ficaria:

    1369154493Screenshot from 20130521 134031.png

    Observação: Como eu usei o editor Sublime Text, ele tem suporte para o Gherkin. Vocês podem observar que as palavras reservadas ficam na cor vermelha.

    4 – Após o título da funcionalidade, você poderá acrescentar uma definição. Usando o exemplo da rota para treinar, ficaria assim:

    1369154566Screenshot from 20130521 134218.png

    Observação: A maneira que escrevi a descrição da funcionalidade, é da mesma maneira que é utilizado nas “User Story” –> User Stories (Estórias de usuário) são artefatos de desenvolvimento utilizados em sistemas que utilizam metodologias ágeis.

    1369160872card5.png

    (A imagem acima foi retirada do blog myscrumhalf)
    5 - Nesta parte, faremos o coração do arquivo, os cenários. Uma feature poderá ter 1 ou mais cenários, de acordo com a sua necessidade. O cenário é composto por uma sequencia de passos, onde descreverá a interação com o usuário. Por exemplo:

    Observações:
    – O que está em vermelho são as palavras reservadas em Gherkin.
    – O que está entre aspas é a minha massa de teste, que eu poderei alterar a qualquer momento. Posso também criar outros cenários, com massa de teste diferente.

    6 – Após terminar o meu arquivo em Gherkin, devo salvá-lo usando a extensão “feature”. O arquivo do exemplo acima eu salvei da seguinte forma:

    1369155306Screenshot from 20130521 135359.png

    Ficou o nome da funcionalidade + “.” + “feature”.

    Visão completa de como ficou a minha feature:

    1369155442Screenshot from 20130521 135657.png

    **Etapa 3 - ”Let’s build it”. **- Nesta etapa cada integrante da equipe fará uma atividade diferente. Por exemplo:
    Desenvolvedores – Implementarão a funcionalidade.
    Analista de Testes – Implementarão os testes automáticos (em paralelo a implementação do desenvolvedor).

    Bom pessoal, para não ficar muito cansativo, pensei em dividir esse post em 2 ou até 3 partes, neste primeiro focamos mais em BDD, usando Gherkin.

    No próximo post (BDD com Cucumber – Parte 2), faremos a implementação dos testes automáticos usando este mesmo arquivo (buscar_rota_para_treinar.feature) com cucumber, ruby e watir-webdriver.

    Espero que as informações acima sejam úteis para vocês. Comentários, críticas e até elogios são bem vindos. :P

    Obrigada e até mais.



  • Tópico muito bom, pena as imagens não estarem mais disponíveis.



  • Pessoal, alguém pode tentar disponibilizar as imagens novamente? Obrigado e excelente tutorial


  • MVP



  • @Luis-Henrique-Chagas-Leite estou falando com a dani pra ela refatorar esse post e fazer mais alguns :)



  • Opa! Estamos no aguardo :D



  • @thiagompereira Estou acompanhando esse outro post que vc indicou. Valeu obrigado.


 

Publicidade - Adsense

status at

13
Online

2.9k
Usuários

1.7k
Tópicos

5.7k
Posts

});