Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Behavior Driven Development

Fala mestre,

Finalmente terminei os treinamentos sobre testes e muito contente por estrear o fórum sobre BDD.

Ficaram algumas dúvidas sobre esse treinamento relativo ao BDD:

Todos aqueles tipos de testes que aprendemos em outros treinamentos estarão incluídos agora no BDD?

Por exemplo: Eu posso refazer todo treinamento de testes de unidade utilizando as tecnicas do BDD + Behat?

Para criar as asserções na classe "FormacaoEmMemoria" usamos o "assert" do próprio PHP, porém nos cenários complexos que precisaremos de dependências nos objetos vou usar as mesmas técnicas de mocks, data providers, etc e nesse caso usar o phpunit junto com o behat?

Minhas dúvidas ficaram mais focadas relativo aos testes de unidades por que em certo ponto do treinamento você diz que com o behat não tem muita vantagem em termo de legibilidade criar os testes de unidades e então partiu para os testes de ponta a ponta. Fiquei com dúvida se realmente devo criar testes de unidades com o behat.

6 respostas
solução!

Opa, Diego... Ótimas perguntas.

De baixo pra cima:

Fiquei com dúvida se realmente devo criar testes de unidades com o behat.

Eu honestamente não vejo vantagem em realizar dessa forma, mas é possível. Se sua equipe escreve as definições de pronto num formato como Gherkin e com detalhes técnicos, talvez faça sentido usar Behat nesse cenário. Fora isso, eu me manteria na abordagem xUnit mesmo.

Para criar as asserções na classe "FormacaoEmMemoria" usamos o "assert" do próprio PHP, porém nos cenários complexos que precisaremos de dependências nos objetos vou usar as mesmas técnicas de mocks, data providers, etc e nesse caso usar o phpunit junto com o behat?

Sim. É bastante comum usar ambos em conjunto. Mas há outros frameworks específicos pra asserções (nunca usei) e frameworks específicos para mock (como Mockery).

Todos aqueles tipos de testes que aprendemos em outros treinamentos estarão incluídos agora no BDD? Por exemplo: Eu posso refazer todo treinamento de testes de unidade utilizando as tecnicas do BDD + Behat?

É perfeitamente possível implementar todos os conceitos dos treinamentos anteriores na sintaxe Gherkin e seguindo a metodologia BDD. Eu particularmente só vejo vantagem da sintaxe Gherkin em cenários de alto nível como testes E2E, mas podem existir casos onde faça sentido testes de integração ou unidade serem escritos também. O ponto é que é possível.

Espero ter conseguido responder tudo. :-D

Abração e bons estudos!

Obrigado mestre,

Um último detalhe para todas as coisas se encaixarem na minha cabeça:

Eu vou escrever os testes de unidade para uma aplicação e durante o processo uso TDD como abordagem e xUnit como estrutura, até aí nada de BDD. Caso antes de começar a implementar os testes eu decida usar o Gherkin para descrever as funcionalidades, cenários, etc a partir daí estou usando BDD? Mesmo sem o behat...

BDD não é a sintaxe de testes. É a ideia de descrever a funcionalidade da aplicação com a certeza do que vai ser implementado, antes de implementar.

Gherkin é usado pra automatizar o teste dessa funcionalidade, mas o foco é na ideia de encurtar a comunicação e garantir que tudo esteja bem especificado. :-)

Entendi mestre,

Foi isso mesmo que eu quis descrever só que de uma maneira prática (e mais leiga) do ponto de vista do desenvolvedor. Então, se no curso de TDD tivessemos dado uma incrementada descrevendo as funcionalidades primeiro teriamos usado a idéia do BDD.

Exatamente!! Se do ponto de vista do negócios está tendo a descrição junto à equipe de desenvolvimento do que vai ser desenvolvido, já estamos praticando BDD.

Mas claro, testes são grande parte desse processo, tanto que é muito comum pessoas confundirem achando que BDD é um tipo de teste. :-)

BDD anda de mãos dadas com conceitos de Agile, DDD, etc.

Muito bacana!