Desenvolvimento Orientado por Comportamento - Pepino

Cucumber é uma ferramenta que oferece suporte a especificações de executáveis, automação de teste e documentação viva.

O Desenvolvimento Orientado a Comportamento expande a Especificação por Exemplo. Também formaliza as melhores práticas de Desenvolvimento Orientado a Testes, em particular, a perspectiva de trabalhar de fora para dentro. O trabalho de desenvolvimento é baseado em especificações executáveis.

o key features de especificações executáveis ​​são as seguintes -

  • As especificações executáveis ​​são -

    • Derivado de exemplos, que representam os comportamentos do sistema.

    • Escrito com a colaboração de todos os envolvidos no desenvolvimento, incluindo negócios e partes interessadas.

    • Com base no critério de aceitação.

  • Os testes de aceitação baseados nas especificações executáveis ​​são automatizados.

  • Uma linguagem compartilhada e onipresente é usada para escrever as especificações executáveis ​​e os testes automatizados de forma que -

    • Terminologia específica de domínio é usada em todo o desenvolvimento.

    • Todos, inclusive os clientes e as partes interessadas, falam sobre o sistema, seus requisitos e sua implementação, da mesma forma.

    • Os mesmos termos são usados ​​para discutir o sistema presente nos requisitos, documentos de design, código, testes, etc.

    • Qualquer pessoa pode ler e entender um requisito e como gerar mais requisitos.

    • As mudanças podem ser facilmente acomodadas.

    • A documentação ao vivo é mantida.

O Cucumber ajuda nesse processo, pois vincula as especificações executáveis ​​ao código real do sistema e aos testes de aceitação automatizados.

A maneira como ele faz isso foi projetada para fazer com que clientes e desenvolvedores trabalhem juntos. Quando um teste de aceitação passa, significa que a especificação do comportamento do sistema que ele representa foi implementada corretamente.

Teste Típico de Aceitação de Pepino

Considere o seguinte exemplo.

Feature − Sign up

  • A inscrição deve ser rápida e amigável.

  • Cenário - inscrição bem-sucedida

    • New os usuários devem receber um e-mail de confirmação e ser recebidos pessoalmente.

    • Given Eu escolhi me inscrever.

    • When Eu me inscrevo com detalhes válidos.

    • Then Devo receber um e-mail de confirmação.

    • And Devo ver uma mensagem de saudação personalizada.

A partir deste exemplo, podemos ver que -

  • Os testes de aceitação referem-se a Features.

  • Os recursos são explicados por Scenarios.

  • Os cenários consistem em Steps.

A especificação é escrita em uma linguagem natural em um arquivo de texto simples, mas é executável.

Trabalho de Pepino

Cucumber é uma ferramenta de linha de comando que processa arquivos de texto contendo os recursos em busca de cenários que podem ser executados em seu sistema. Vamos entender como funciona o pepino.

  • Ele usa várias convenções sobre como os arquivos são nomeados e onde estão localizados (as respectivas pastas) para facilitar o início.

  • O Cucumber permite que você mantenha especificações, testes automatizados e documentação no mesmo lugar.

  • Cada cenário é uma lista de etapas que descrevem as pré-condições, ações e pós-condições do cenário; se cada etapa for executada sem nenhum erro, o cenário será marcado como aprovado.

  • No final de uma corrida, Cucumber relatará quantos cenários passaram.

  • Se algo falhar, ele fornece informações sobre o que falhou para que o desenvolvedor possa progredir.

Em pepino, Features, Scenarios, e as etapas são escritas em um idioma chamado Gherkin.

Gherkin é o inglês em texto simples (ou um dos mais de 60 idiomas) com uma estrutura. O Gherkin é fácil de aprender e sua estrutura permite escrever exemplos de maneira concisa.

  • Cucumber executa seus arquivos que contêm especificações executáveis ​​escritas em Gherkin.

  • O Cucumber precisa de Definições de Etapa para traduzir as Etapas do Gherkin em texto simples em ações que irão interagir com o sistema.

  • Quando Cucumber executa uma etapa em um cenário, ele procura uma definição de etapa correspondente para executar.

  • Uma definição de etapa é um pequeno trecho de código com um padrão anexado a ele.

  • O padrão é usado para vincular a Definição de Etapa a todas as etapas correspondentes, e o código é o que o Cucumber executará ao ver uma etapa do Gherkin.

  • Cada etapa é acompanhada por uma Definição de Etapa.

  • A maioria das etapas reunirá dados e, em seguida, delegará a uma estrutura que é específica para seu domínio de aplicativo para fazer chamadas em sua estrutura.

A Cucumber oferece suporte a mais de uma dúzia de plataformas de software diferentes. Você pode escolher a implementação Cucumber que funciona para você. Cada implementação do Cucumber fornece a mesma funcionalidade geral e também tem seu próprio procedimento de instalação e funcionalidade específica da plataforma.

Mapeamento de etapas e definições de etapas

A chave para Cucumber é o mapeamento entre etapas e definições de etapas.

Implementações de pepino

Abaixo estão as implementações do Cucumber.

Ruby / JRuby
JRuby (usando Cucumber-JVM)
Java
Groovy
.NET (usando SpecFlow)
JavaScript
JavaScript (usando Cucumber-JVM e Rhino)
Clojure
Gosu
Lua
PHP (usando Behat)
Jython
C ++
Tcl

Integração de estrutura

A seguir estão as implementações do Framework.

Ruby on Rails
Selênio
PicoContainer
Spring Framework
Watir