Eu estava lendo este blog por Joel Spolsky cerca de 12 etapas para melhorar o código . A ausência de desenvolvimento orientado a testes realmente me surpreendeu. Então, eu quero fazer a pergunta para os Gurus. O TDD realmente não vale o esforço?
23
Respostas:
O desenvolvimento orientado a testes era praticamente desconhecido antes do livro de Kent Beck ser lançado em 2002, dois anos depois que Joel escreveu esse post. A questão então se torna: por que Joel não atualizou seu teste, ou se o TDD fosse mais conhecido em 2000, ele o incluiria entre seus critérios?
Acredito que ele não teria, pela simples razão de que o importante é que você tenha um processo bem definido, não os detalhes específicos desse processo. É a mesma razão pela qual ele recomenda o controle de versão sem especificar um sistema de controle de versão específico ou recomenda ter um banco de dados de erros sem recomendar uma marca específica. As boas equipes aprimoram e se adaptam continuamente e usam ferramentas e processos adequados para sua situação específica naquele momento específico. Para algumas equipes, isso definitivamente significa TDD. Para outras equipes, nem tanto. Se você adotar o TDD, verifique se não está fora de uma mentalidade de culto à carga .
fonte
Joel realmente abordou isso especificamente em alguns lugares.
Ele explicou que os testes de coisas não são capazes de captar muitas questões importantes, principalmente as subjetivas, como "a interface do usuário deste software é péssima?" Segundo ele, a dependência excessiva de testes automatizados na Microsoft é como acabamos com o Windows Vista.
Ele escreveu como, em sua experiência, os tipos de bugs que os usuários realmente encontram tendem a se dividir em duas categorias: 1) os que aparecem em uso comum, que os programadores teriam encontrado se tivessem executado seu próprio código antes de usá-lo ou 2) casos extremos tão obscuros que ninguém teria pensado em escrever testes para cobri-los em primeiro lugar. Ele afirmou que apenas uma porcentagem muito pequena dos erros que ele e sua equipe corrigem no FogBugz são o tipo de coisa que os testes de unidade teriam detectado. (Não consigo encontrar esse artigo agora, mas se alguém souber qual deles eu quero dizer, fique à vontade para editar o link aqui.)
E ele escreveu como isso pode ser mais problemático do que vale a pena, especialmente quando o seu projeto cresce em um projeto muito grande com muitos testes de unidade, e então você muda algo (intencionalmente) e acaba com um número muito grande de testes de unidade quebrados. Ele usa especificamente os problemas que o teste de unidade pode causar como a razão pela qual ele não o adicionou como um 13º ponto ao Teste de Joel, mesmo quando as pessoas sugerem que ele deveria.
fonte
O próprio Joel Spolsky respondeu a essa pergunta em 2009 :
fonte
Ninguém além de Joel poderia responder isso com certeza. Mas podemos tentar algumas razões / observações.
Primeiro de tudo, o teste não está ausente no teste de Joel
Em segundo lugar, toda a idéia do teste Joel (como eu o entendo) é ter perguntas rápidas, sim-não. "Você faz TDD?" não se encaixará exatamente (a resposta pode ser: "alguns de nós", "para essa parte do código" ou "fazemos teste de unidade".
Em terceiro lugar, acho que ninguém disse que (mesmo Joel) que aqueles pontos em que "os únicos que valem tempo" (a propósito, "você programa" não estão nele), apenas que essas são boas perguntas rápidas a serem feitas quando chegar entrar em contato com uma equipe de software, seja como futuro membro da equipe ou até como cliente - esta é uma lista que eu dei a algumas pessoas não técnicas ao meu redor que procuravam pistas sobre o quão bom / ruim era seu próprio departamento de TI. Não é tudo, mas é muito ruim vencer em três minutos.
fonte