BTUF

Não precisa ler o título de novo. Seus olhos não estão enganados: realmente é um T no lugar do D (ou R, dependendo de onde você esteja vindo). BTUF é o acrônimo para Big Testing Up-Front. BTUF é o que acontece quando você tenta desenvolver todos os testes possíveis e imagináveis para seu código antes de começar a escrevê-lo. Com a popularização de Test-Driven Development esta é uma modalidade para cascateamento do desenvolvimento em óbvia ascensão.

Testar também é projetar. Quando se escreve os testes antes do código de produção o que se faz essencialmente é projetar como o código vai parecer olhando do lado de fora. Às vezes é difícil resistir à tentação de projetar tudo antes para depois partir para a implementação. Para quem não consegue evitar, aqui vai uma bela notícia do jornal de ontem: isso não funciona. Apesar de todo mundo minimamente informado já ter lido o jornal, nunca é demais repetir.

Não funciona porque projetar qualquer coisa é infinitamente melhor quando é possível obter retorno. Desenvolver software é uma das atividades que dispõem de maior capacidade de retorno em tempo de projeto. Arquitetos precisam esperar que a equipe de construção termine a obra, roteiristas de cinema podem esperar anos pelo término das filmagens e músicos precisam esperar por um longo processo de mixagem para saber como seus projetos serão apreciados pelo público. Mas programadores podem simplesmente compilar seus programas. Desistir propositalmente deste retorno não é algo muito sábio a se fazer. Escrever todos os testes para um trecho de código antes de escrever é como desenhar vários retângulos e setas descrevendo-o detalhadamente antes de tentar fazê-lo funcionar. O risco de hiper-engenharia é o mesmo porque o código não está lá para gritar de agonia.

Então se você leu o artigo do José Oliveira, considere com muito carinho os conselhos dele. Mas leia o esclarecedor artigo do Ivan Sanchez também. Escreva os testes que conseguir imaginar antes de começar a escrever o código para fazê-los passar, mas por favor não fique muito tempo pensando. Você pode esperar para começar a escrever o código depois que todos os testes estiverem prontos, mas você não precisa e nem quer fazer isso.

Design não se faz somente com diagramas e TDD é só uma técnica de design que usa testes. Pode ser uma abordagem bem mais eficaz que setas e retângulos em alguns casos, já que força o programador a utilizar o código ao mesmo tempo que o projeta. Mas ainda assim é somente uma abordagem para design. BTUF, do mesmo modo, é somente um caso especial de BDUF no qual se usa testes para explicitar completamente o design antes de se escrever qualquer linha de código.

3 Responses to “BTUF”


  1. 1 Marcos Silva Pereira 29/nov/2006 às 05\0504

    Uops, novo endereço e nem avisa!

    Acho que a uma das grandes vantagens de TDD é forçar o trabalho baseado em “faltam tantos testes para esse treco ficar verde”, o que é uma representação bastante coerente tanto para mensurar progresso quanto para evitar desvios do tipo “vejam que super funcionalidade eu inventei mas que o cliente não precisa”. Toneladas de especificações e analises não demonstram o progresso real porque especificação não roda! Ninguém as envia para o cliente esperando que ele instale. BDUF falha por pensar em tratar TUDO o que for possível a priori, mesma falha, bem demonstrada por ti, no BTUF: ninguém instala uma bateria de testes.


  1. 1 Test-Driven Development at José Oliveira Trackback em 29/nov/2006 às 14\0207
  2. 2 TDD - Os testes devem ser feitos antes ou durante a implementação? « Think about Tests Trackback em 09/mar/2008 às 17\0550
Comments are currently closed.




%d blogueiros gostam disto: