Estou começando a estudar sobre TDD e venho fazendo alguns projetinhos pessoais para praticar e uma dúvida recorrente que tenho é sobre as validações(Validação de formulário no front-end, Validação de request das API’s no back-end). Vendo palestras sobre TDD eu vi as 3 regras que devemos aplicar ao TDD:
- Escreva o código apenas para passar em um teste falhando.
- Não escreva mais em um teste do que o suficiente para falhar.
- Não escreva mais código do que o necessário para passar no teste que esteja
Bem, se eu quiser seguir TDD seguindo essas 3 regras a risca, isso me obriga a fazer os testes de validação do tipo, testes para verificar se um único campo é obrigatório, verificar se o tamanho do valor é maior ou menor que o permitido, entre outros tipos de testes de validação.
Tenho amigos que trabalham com programação e me aconselharam a fazer apenas os testes da lógica de negócio, porque os testes de validação são testes frágeis e tornam o código mais engessado e dificulta alterações no código, porque mecher no código de produção implica em alteração no código dos testes.
Por outro lado tenho amigos que dizem que devemos sim escrever os testes de validação e que o fato de você alterar o código e ter que fazer a manutenção não deveria ser considerado como lado negativo, pois essa é a função dos testes, mostrar que a lógica foi alterada.
Minha dúvida é que abordagem vocês usam? Testes de validação são realmente testes frágeis e desnecessários?