Você entrou para um projeto novo, já em andamento, no qual a metodologia que a equipe do projeto segue é a de definir e escrever testes de software a partir das regras de negócio antes mesmo de implementar as funcionalidades propostas. Assinale a opção que indica o nome desse processo de desenvolvimento de software.
- A)DDD
DDD não é processo de teste antes do código, mas uma abordagem de modelagem e projeto centrada no domínio do negócio.
- B)TDD
TDD é desenvolvimento guiado por testes, porém com foco mais técnico na unidade de código do que nas regras de negócio e comportamento.
- C)BDD
Correta: BDD escreve cenários e testes a partir das regras de negócio e do comportamento esperado antes da implementação.
- D)XP
XP é uma metodologia ágil mais ampla, que inclui várias práticas, mas não é o nome específico dessa dinâmica de definir testes a partir do negócio.
- E)Scrum
Scrum é um framework de gestão e organização do trabalho ágil, não uma técnica de escrita de testes.
Gabarito: C
A questão descreve uma prática em que a equipe escreve os testes a partir das regras de negócio antes de implementar a funcionalidade. Isso é a cara do Behavior Driven Development, ou BDD, que foca no comportamento esperado do sistema do ponto de vista do negócio e dos cenários de uso. Em vez de começar pelo código, você começa pela conversa sobre o que o sistema deve fazer e transforma isso em exemplos testáveis. No BDD, a linguagem costuma ser mais próxima do negócio, com cenários do tipo "dado, quando, então". Essa abordagem ajuda a alinhar desenvolvimento, testes e regras de negócio, reduzindo aquele clássico problema de o sistema estar tecnicamente pronto, mas não entregar o que o usuário realmente queria. Por isso o gabarito é a letra C. O enunciado fala exatamente em definir e escrever testes de software a partir das regras de negócio antes da implementação das funcionalidades, o que aponta para BDD e não apenas para testes antecipados em geral. Se você lembrar da diferença básica, fica fácil: TDD pensa primeiro no teste técnico da unidade de código, enquanto BDD pensa primeiro no comportamento da funcionalidade sob a ótica do negócio. Em prova, essa distinção costuma ser o pulo do gato.