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 |