A equipe de desenvolvimento de sistemas da Câmara Municipal de Mariana recebeu a solicitação de implementação de um projeto de utilização interna, para facilitar a execução de serviços durante as sessões públicas. Ao analisar a demanda, o analista de sistema responsável verificou os fluxos, estimou o tempo e entrou em acordo com o gestor do projeto para a alocação da equipe necessária para todo o fluxo de desenvolvimento. Devido à importância do projeto e à frequente orientação do time para um desenvolvimento escalável de ferramentas nos novos projetos, foi decidido que deverão ser utilizadas técnicas de desenvolvimento dirigido por testes (TDD). Sobre tal prática de programação, assinale a afirmativa INCORRETA.
- A)Favorece a escrita de códigos com alta testabilidade.
Correta: o TDD tende a incentivar código mais modular e testável, porque o teste guia o design da implementação.
- B)Geralmente a primeira etapa é escrever um teste que falha.
Correta: no ciclo do TDD, normalmente você escreve primeiro um teste que falha antes de implementar a solução.
- C)É uma prática de programação obrigatória ao utilizar a metodologia Scrum.
Errada: o TDD não é obrigatório no Scrum, pois Scrum não impõe técnica de programação específica.
- D)Ajuda a evitar que os desenvolvedores esqueçam de escrever testes, pois tem como estratégia a criação do teste antes da própria tarefa de programação.
Correta: como o teste é criado antes do código, o TDD ajuda a não deixar os testes para depois.
Gabarito: C
TDD, ou desenvolvimento dirigido por testes, é uma técnica em que o teste vem antes do código. A lógica é simples: primeiro você escreve um teste que ainda falha, depois implementa o mínimo necessário para fazê-lo passar e, por fim, refatora com mais segurança. Isso ajuda muito a criar software com melhor testabilidade e reduz a chance de esquecer testes no meio do caminho. Na prática, o TDD trabalha com ciclos curtos e disciplina de equipe. Ele não é uma regra do Scrum, nem algo obrigatório de nenhuma metodologia ágil específica. O Scrum fala de entregas incrementais, inspeção e adaptação, mas não impõe uma técnica de programação como o TDD. Ou seja, o TDD pode ser usado com Scrum, Kanban, XP ou até em projetos tradicionais, se a equipe quiser. Por isso, a alternativa C é a incorreta: ela transforma uma boa prática de engenharia em obrigação do Scrum, e isso não existe. O Scrum Guide não determina que o time use TDD; ele apenas orienta a gestão e organização do trabalho, deixando as práticas técnicas para o time escolher. As demais alternativas descrevem bem os benefícios e o funcionamento do TDD. Ele favorece código mais testável, começa geralmente com um teste que falha e ajuda a evitar que os testes fiquem para depois, aquele clássico "depois eu escrevo" que às vezes nunca chega.