A popularidade do Behavior Driven Development (BDD) não pode ser negada. É uma resposta ao Test Driven Development (TDD) e foi introduzido por Dan North em 2003. BDD encoraja a colaboração entre as várias partes envolvidas em um projeto de software: desenvolvedores, QA e analistas não técnicos ou de negócio.
A fácil criação e uso de DSLs em Ruby permitiu o nacimento do muitos frameworks BDD, tais como RSpec. O Cucumber, escrito por Aslak Hellesøy é um outro exemplo, que pode também ser usado para testar código Java, .NET e Flex. Ele pode ser executar documentos de texto puro como testes funcionais automatizados.
Aqui está um típico cenário de exemplo (do Wiki do projeto):
Feature: Search courses In order to ensure better utilization of courses Potential students should be able to search for courses Scenario: Search by topic Given there are 240 courses where neither has the topic "biology" And there are 3 courses A,B,C that each have "biology" as one of the topics When I search for "biology" Then I should see a the following courses: | title | | A | | B | | C |
Então você pode implementar código que esta receita descreve e iterar como falhas do teste até obter sucesso. O Cucumber suporta o destaque de partes que falhas ou de sucesso do cenário (Imagem do website do Cucumber):
O formato usado para escrever receitas Cucumber é a linguagem Gherkin, que pode ser adaptada a diferentes lingauges naturais, como por exemplo, palavras chave como "Given", "And", etc podem também ser escritas em linguagens como Francês, Português, Alemão, etc. O texto da linguagem natural à direita das palavras chaves é interpretado por uma definição programática, por exemplo, executa código para realizar este passo.
Há muitos usos diferentes para o Cucumber tais como testes de integração de aplicações Web para sysadmins ou para integrar sistemas distribuídos e testar messageria ou testes de escrita de PDF.
A versão 0.1.16 do Cucumber está disponível como um Ruby Gem e a 0.1.99.10 está disponível no GitHub.