Executando verificação de segurança...
2

Técnica TDD (Test Driven Development) você já esta aplicando em seu projeto? Puxão de orelha no final.

Em português, Desenvolvimento Orientado a Testes é uma técnica de programação cujo objetivo principal é a verificação e validação, sendo baseado em um ciclo de repetição, fazendo assim uma verificação detalhada do código e melhorando eventualmente a vida útil e prolongada.
O ciclo de repetição é realizado em 3 etapas principais, sendo elas o Red, Green e Refactor, em português Vermelho, Green e Refatoração.

TDD

Passando detalhadamente pela primeira etapa, que seria o Red (Vermelho), notamos que esta parte é extremamente crucial para que tudo se inicie neste ciclo de repetição. O Vermelho é a criação de um código teste, que tem o objetivo de falhar e causar um erro.
Passando pela segunda etapa, que seria o Green (Verde), são realizados os ajustes para que o código anteriormente apresentado, que se encontrava na primeira etapa, agora esteja passando pelos testes, criando assim a possibilidade de avançar para a terceira etapa.
Passando pela terceira etapa Refactor (Refatoração), é realizada a limpeza de duplicidade, renomeação de variáveis para algo mais semântico e melhoria para obter mais qualidade do código, podendo por um acaso quebrar alguma parte do código, fazendo voltar para a primeira etapa que seria o Red, e assim criando um ciclo de repetição até que o código retorne green e por fim já realizado o Refactor, saindo do ciclo de repetição.
Tendo estas 3 etapas como base para qualquer implementação, é de extrema importância, pois, quando criado o hábito de realizar o TDD para qualquer simples ou complexo código que for realizar, irá lhe trazer o senso de senioridade e competência e, ao final, escalando a vida útil e qualidade para o seu código.

Como diz:

Martin Fowler "Qualquer tolo escreve um código que um computador possa entender. Bons programadores escrevem códigos que os seres humanos podem entender."

E o TDD, com a sua técnica baseada em primeiro falhar, arrumar e por fim melhorar, irá lhe auxiliar a se tornar um programador cada vez mais competente primeiramente em sua vida pessoal, ao criar disciplina e foco no que realmente está desenvolvendo e consequentemente se torna melhor em seu trabalho também.

Por fim, deixo uma reflexão a você que está lendo este post.

Hoje, realmente, você está sendo um desenvolvedor capacitado e busca melhorar os seus conhecimentos ou está sendo somente uma impressora 3D que somente copia e cola, e por muitas vezes não sabe o que aquele código realmente faz e o que ele realiza por baixo dos panos?

Carregando publicação patrocinada...
2

Uma coisa q gostaria de adicionar para qm ler, q TDD é um estilo de codificação e não testes de unidade em si.

Um software pode ter testes sem usar TDD. É a melhor forma? Não sei, depende de como a pessoa tem a capacitação de criar testes e não do estilo q ele cria o teste.

Vou explicar com base na minha opinião, pode discordar caso não ache válido, mas diga o pq.

Pelo TDD vc começa pelo teste. Então cria a casca do q quer, coloca os dados de entrada q quer q aconteça, falha, desenvolve o código, dá certo, passa pro próximo teste e assim vai.
Se não usar TDD, ou seja, vc inicia pelo código antes (o q todo mundo normalmente faz), depois cria os testes com base no q já está pronto.

Ai vem 2 pontos de cada um.

Nem sempre no TDD sabemos como deve ficar, muito menos sabemos 100% os dados de entrada. Isso querendo ou não pode mais atrapalhar do q ajudar.

No modo não TDD, a gente cria o código, mas sempre existe o problema de termos criados condições q nunca iremos saber se realmente acontece, pois nossa mente está preparada apenas para enxergar o caso ótimo, então pelo menos isso a gente testa, mas os casos de falhas é o q fica capenga e nem sempre conseguimos ter 100% de precisão nisso.

Mas até qndo usamos TDD pode acontecer problemas de falhas serem esquecidas.

Então eu cheguei numa conclusão q depende mto qndo usar um ou quando usar outro estilo de criação de testes.

O TDD eu crio para aqueles casos onde tenho mais certeza do q quero, como nos algoritmos incluso na caixa preta, por exemplo, validação do CPF, conversão de datas para uma string formatada, algumas regras de negócios bem estabelecidas como boletos, etc. São normalmente coisas mais básicas, q tem um resultado pré definidos q não pode mudar.

Agora lógicas q usamos nas páginas, regras de negócios mais dinamicos, e2e, etc eu faço da forma código antes, testes depois.

Ai vcs podem me dizer, o jeito q utilizo esses 2 estilos é a melhor forma de fazer? Não sei, pois cada um programa de um jeito. Estilo de programar tem mto mais haver com a maneira q a pessoa lida, então não tem como saber se é o melhor jeito, pois a qualidade do teste está mto mais relacionado a como o teste foi codificado e o q ele codificou, e não qual maneira ele fez o teste.

A única certeza q tenho é deixar seu código de produção sem testes só demonstra a incapacidade do dev de pensar a longo prazo, pois ele é algo chato de se criar, mas é uma proteção contra instabilidades e má manutenções futuras. Portanto coloque testes, seja do modo TDD ou seja do modo não TDD.

1

Opa tuboi!

Achei justíssimo o seu comentário sobre a questão do TDD e concordo plenamente que ele é um estilo de codificação. Lendo o seu comentário vi que talvez não expliquei da melhor forma possível o pensamento que quis passar no post. E sobre realizar teste sendo de forma TDD ou de outra forma é essencial para o projeto!

Muito obrigado pela a sua reposta!

2

https://www.google.com/search?q=maniero+tdd

Eu falei bastante a respeito em diversos lugares. Geral eu desglorifico o TDD, então algumas pessoas não gostam. Não digo que ele é um lixo e não deve ser usado, mas que ele não é bala de prata e boa parte das pessoas usam errado e não conseguem benefícios que compensem o custo.

Eu cito muito o exemplo de linguagens de programação que são exemplos perfeitos onde o TDD se encaixaria bem, e você não vê ele sendo aplicado na construção dos compiladores. Em geral são programadores muito bons que sabem avaliar o peso que o TDD tem no projeto, seja na parte positiva quanto negativa.

Infelizmente a maioria adota por modinha e não porque sua enorme experiência indica que será mais positivo que negativo.

TDD, assim como muitas ferramentas, não podem ser endeusadas e só olhadas de um lado (positivo). Por isso minha primeira postagem no Youtube e Substack será uma versão da minha palestra "A Péssima Prática de Seguir Boas Práticas". E ela será importante para todo o resto que eu for públicas, incluindo as boas práticas.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui).

1

Que ótima colocação maniero!

Eu concordo com você!
Que como o TDD, varias outras ferramentas quando não se sabe utilizar, ou não tem um real significado para ela estar presente no seu projeto, pode mais atrapalhar do que ajudar e muitas vezes levar até uma rasteira por conta de utilizar tal ferramenta. O TDD como outras tantas ferramentas precisam ser utilizadas quando há um proposito sólido!

Muito obrigado pela a sua opinião!