O desenvolvimento de software envolve diversas atividades, nas quais há uma grande possibilidade de ocorrerem falhas. Por isso, os testes automatizados de software são indispensáveis para identificar defeitos e avaliar o grau de qualidade de um produto.

Visando diminuir esta lacuna, apresentaremos os fundamentos do Behaviour-Driven Development (BDD), bem como um estudo acerca do Cucumber, ferramenta que implementa BDD.


A aplicação de métodos ágeis tem mostrado a flexibilidade esperada nos processos da organização, tais como, planejamento, eficiência e comunicação entre as equipes.

É neste contexto que cresce a importância da qualidade, assim como o entendimento das novas funcionalidades e da capacidade de despertar na equipe a integração de esforços entre a qualidade e o desenvolvimento.

Desse modo, ao aplicarmos a abordagem de testes orientada por comportamento com métodos ágeis, obteremos melhores resultados evitando o retrabalho e a abertura de defeitos de comportamento no processo de desenvolvimento.

O que é BDD?

Behavior-Drive Development (BDD) é uma abordagem de desenvolvimento de software que propõe especificar as várias camadas de comportamento do software a partir de testes automatizados.

Criado por Dan North por volta de 2003, o termo nasceu para resolver uma dificuldade do TDD. E, de acordo com essa abordagem, deve-se primeiro especificar o comportamento de uma funcionalidade e depois implementá-lo.

Um dos pontos chaves do BDD é facilitar o entendimento dos objetivos para que todos tenham clareza sobre o que pretende entregar, criando comportamentos testáveis e automatizados e agregando valor para o cliente antes da existência do código­ fonte. Entretanto, evitam defeitos baseados em comportamento e geram um conjunto de testes de regressão baseado neles.

Metodologia

Conforme o ciclo de desenvolvimento ágil, o primeiro passo para iniciar a análise das estórias na estrutura Cucumber, é identificar os critérios de aceite e levantar os cenários de testes.

Critérios de Aceite

A especificação escrita em linguagem natural interpretada por Gherkin, servirá como modelo de implementação para as equipes de desenvolvimento e qualidade, na estrutura Cucumber.

Testes Automatizados

Os benefícios do BDD nos permite focar nos esforços que visam evoluir os requisitos para que as mudanças sejam eficientes.

Desenhadas com abordagem de BDD, as adaptações dos objetivos do negócio requerem um alto nível de entendimento.

Cenário de Testes

Ruby

O Ruby é uma linguagem interpretada, open source com foco na simplicidade e na produtividade. Tem uma sintaxe elegante de leitura natural e de fácil escrita, também é altamente portátil e executável em todos os principais sistemas operacionais.

O software Ruby Gems nos permite instalar e usar os pacotes de software de Ruby no sistema, assim como estender ou modificar a funcionalidade em aplicações Ruby.

Para a implementação das classes automatizadas Ruby, usaremos as Gems listadas abaixo:

Lista Básica de GEMS

Cucumber

O Cucumber é uma ferramenta livre que permite a aplicação do BDD com Ruby, unindo a especificação funcional e automatização de testes de aceitação.

A linguagem que entende Cucumber é chamada de Gherkin, que são as regras de negócio legíveis, baseado em Domain Specific Language (DSL). Ela descreve o comportamento do software sem detalhar como esse comportamento é implementado.

O principal uso do Cucumber é cobrir os testes de aceitação da aplicação. Quando usado somente para automatizar ele pode se tornar mais custoso.

Para a melhor utilização da ferramenta, atente-se aos seguintes pontos:

  • estimule a conversa com o Product Owner;
  • una a especificação com os testes automatizados;
  • facilite a leitura das especificações do comportamento.

A estrutura em português está disponível a partir da versão 1.9.3 do Ruby e contém uma lista com mais de 50 idiomas suportados. Para configurar a feature em português basta adicionar a seguinte linha no começo do arquivo: # language: pt

Estrutura Cucumber em Português

Nesse ponto, já podemos perceber as diversas vantagens em trabalhar orientado por comportamento, segmentando os comportamentos em features e descrevendo os cenários.

As palavras chaves têm significado especial nas ferramentas de automação de testes. Para listar as palavras chaves do Cucumber em português, digite a seguinte linha de comando: cucumber ­­i18n pt

As principais palavras chaves utilizadas por Cucumber, com seus respectivos significados são:

Outra dica bastante interessante é o filtro para selecionar os exemplos associados a um objetivo de negócio específico. Esses exemplos são primordiais, pois servirão de parâmetro para validar se a lógica está se comportando como deveria.

Critérios de Aceitação Automatizados

Os critérios de aceite automatizados são executados através das ferramentas externas Ruby e Rspec que controlam a execução de testes.

O teste, depois de exportado na estrutura Cucumber, necessita de preparação e configuração do ambiente e das ferramentas para o reconhecimento das features Cucumber. A instalação e preparação da máquina pode ser feita com qualquer distribuição Linux e Microsoft.

Execução dos Testes

Antes de começar a executar o teste é necessário que o ambiente esteja pronto. Portanto, qualquer erro que ocorra no ambiente em execução pode gerar a instalação de alguma dependência.

Na visão do terminal, rodar o comando cucumber-init dentro do diretório raiz é a primeira coisa a ser feita. Ao rodar esse comando de inicialização, serão criados, automaticamente, os diretórios reconhecidos pela estrutura.

Criação da Estrutura dos diretórios Cucumber

O teste implementado na ferramenta Cucumber será salvo com o nome de Login.Feature na pasta features, até que seja reconhecido pelo Cucumber.

Arquivo login.feature

Depois, dentro do diretório support, realizaremos as configurações no arquivo env.rb, na qual definiremos as bibliotecas utilizadas.

Configurações dos arquivos ENV.RB

Ao rodar o comando Cucumber no terminal, os seguintes resultados serão apresentados:

Passos a serem implementados

Então será necessário criar um arquivo novo, com duas linhas de configuração, chamado login.rb.

Linhas de configuração

A base de execução do Cucumber são Expressões Regulares (regex), sendo muito comum utilizar caracteres como: / ^ $ / .

Portanto, substituiremos a frase “pending # express the regexp above with the code you wish you had” por comandos da gem capybara.

Os comandos básicos Capybara são:

Logo, a PAI Capybara implementada no feature login.rb, estará preparada para ser executada com Ruby.

API Caybara implementada

Para verificar o resultado dos testes, digitaremos o comando Cucumber no terminal:

Resultado dos cenários

Com simplicidade e praticidade, o desenvolvimento de cenários automatizados prioriza a qualidade para retornar melhores resultados e o acompanhamento durante a execução.

Com BDD, a equipe de desenvolvimento pode codificar com mais clareza, enquanto a equipe de qualidade e donos do produto trabalham mais alinhados com os objetivos do negócio.

Desse modo, o uso da BDD proporcionará para as organizações uma nova cultura, demonstrando maior credibilidade e satisfação ao cliente.