BDD em PHP: Como escrever código que até o gerente entende

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Quando o código fala a linguagem do negócio: conhecendo o BDD



Imagine a seguinte situação: você escreveu um módulo de pagamento perfeito, do ponto de vista do código. Todos os métodos funcionam, as exceções são tratadas, a cobertura de testes unitários é de 99%. Você abre o champanhe, mas chega o gerente e pergunta: "Por que estamos debitando o dinheiro antes da confirmação do pedido?". E você percebe — o bug não está no código, mas no entendimento da tarefa.



Familiar? É exatamente para esses casos que existe o BDD (Behaviour-Driven Development) — desenvolvimento orientado a comportamento. Não é apenas mais uma metodologia, mas uma ponte entre "quero que funcione" e "como implementar isso em PHP". Se você está cansado de reescrever a lógica após cada esclarecimento de requisitos, este artigo é para você.



Neste material, vamos abordar como implementar BDD em PHP usando o framework Behat, escrever testes reais e entender por que isso torna o código mais limpo e a comunicação mais transparente.



O que é BDD e como ele difere do TDD?



Muitos confundem Behaviour-Driven Development com o TDD (Test-Driven Development) comum. E de fato, externamente são parecidos: em ambos, os testes são escritos primeiro. Mas a diferença está no foco.



  • TDD — é sobre "como verificar se a função retorna o número correto". Os testes são escritos na linguagem do programador: assert, equals, mock.
  • BDD — é sobre "como o sistema se comporta em uma situação de negócio específica". Os cenários são escritos em linguagem natural, quase humana.


A ideia central do BDD em PHP é usar uma linguagem única para comunicação. Desenvolvedores, testadores e gerentes leem o mesmo cenário. E se nele está escrito "o usuário adiciona um produto ao carrinho sem autenticação", todos entendem isso da mesma forma.



Ferramentas: Behat e Gherkin



No mundo PHP, a principal ferramenta para BDD é o Behat. É um framework que analisa cenários na linguagem Gherkin e os transforma em testes executáveis. Gherkin é uma linguagem simples em português (ou inglês) com palavras-chave: Feature, Scenario, Given, When, Then.



Vamos instalar o Behat no seu projeto PHP:



composer require --dev behat/behat behat/mink-extension behat/mink-goutte-driver


Após a instalação, inicialize o projeto:



vendor/bin/behat --init


A estrutura ficará assim:



features/  bootstrap/    FeatureContext.php  your_feature.featurebehat.yml


Escrevendo o primeiro cenário BDD em PHP



Suponha que temos uma loja online. Requisito de negócio: "Um usuário registrado pode adicionar um produto ao carrinho e ver o valor total". Crie o arquivo features/cart.feature:



Feature: Carrinho do comprador  Como um usuário registrado  Eu quero adicionar produtos ao carrinho  Para ver o valor total

Scenario: Adicionar um único produto Given eu acesso o site como usuário "ivan@example.com" And na página do catálogo existe o produto "Notebook" por 50000 reais When eu clico em "Adicionar ao carrinho" para o produto "Notebook" Then eu vejo a mensagem "Produto adicionado" And o valor total do carrinho é 50000 reais


Observe: este cenário pode ser lido por qualquer gerente sem conhecimento de PHP. Mas para o Behat, ele é um teste executável.



Implementação dos passos (Step Definitions)



Agora precisamos "ensinar" o Behat a entender esses passos. Abra o arquivo features/bootstrap/FeatureContext.php:



<?php

use Behat\\Behat\\Context\\Context;use Behat\\Gherkin\\Node\\PyStringNode;use Behat\\Gherkin\\Node\\TableNode;

class FeatureContext implements Context{ private $currentUser; private $cart = []; private $products = [];

/** * @Given eu acesso o site como

Blogs

Book Recommendations