Pergunta

Sou um desenvolvedor web trabalhando em PHP.Tenho alguma experiência limitada com o uso do Test Driven Development em aplicativos de desktop C#.Nesse caso, usamos nUnit para a estrutura de testes unitários.

Gostaria de começar a usar TDD em novos projetos, mas não sei por onde começar.

Quais recomendações você tem para uma estrutura de teste de unidade baseada em PHP e quais são alguns bons recursos para alguém que é novo no conceito de TDD?

Foi útil?

Solução

Eu usei PHPUnit e Teste Simples e eu encontrei Teste Simples para ser mais fácil de usar.

No que diz respeito ao TDD, não tive muita sorte com ele no sentido mais puro.Acho que é principalmente uma questão de tempo/disciplina da minha parte.

Adicionar testes após o fato foi um tanto útil, mas minhas coisas favoritas a fazer é escrever testes SimpleTest que testam bugs específicos que preciso corrigir.Isso torna muito fácil verificar se as coisas estão realmente consertadas e permanecem consertadas.

Outras dicas

Eu recomendo Desenvolvimento orientado a testes por Kent Beck (ISBN-10:0321146530).Não foi escrito especificamente para PHP, mas os conceitos estão aí e devem ser facilmente traduzíveis para PHP.

PHPUnit é um padrão, mas às vezes também é complicado, então se você achar que é muito complexo, dê uma olhada PHP para você começar.É muito, muito fácil escrever testes nele.Um acéfalo para qualquer programador.

E para responder à sua pergunta sobre TDD - não tenho certeza se o TDD é amplamente usado no espaço PHP.Posso ver que o rápido desenvolvimento de aplicativos e o TDD entram em conflito (estritamente IMHO).O TDD exige que você tenha uma visão completa do que está construindo, escreva seus testes antecipadamente e, em seguida, implemente o código para fazer o teste passar.

Então, por exemplo, o que fazemos é escrever muitos testes quando terminarmos.Essa nem sempre é a melhor abordagem porque às vezes você acaba com testes falsos que passam, mas não são realmente úteis, mas pelo menos é algo que você pode expandir.Internamente continuamos nos testes e basicamente escrevemos um teste para cada bug que encontramos.É assim que fica mais sólido.

Eu pessoalmente prefiro o SimpleTest.Existe um executor de teste de linha de comando e um executor de teste baseado na web, e existe até um Eclipse plugar para permitir que você execute testes de unidade a partir do próprio IDE.Achei a conexão Zend com PHPUnit muito mais difícil de funcionar, especialmente com o depurador.

A forma como usamos o SimpleTest internamente é com um integração contínua roteiro que nós mesmos escrevemos.Cada vez que fazemos check-in de um recurso no SVN, incluímos os testes de unidade.A cada hora, o script CI é executado e chama um script PHP de linha de comando que executa todos os nossos testes de unidade.Se houver alguma quebra, recebo um e-mail.Tem sido uma ótima maneira de reduzir bugs em nossos sistemas.

No entanto, você pode facilmente usar algo como Phing para executar seus testes automaticamente, seja em um cron job ou com um gancho de check-in SVN.

Na verdade, se quiser entrar em contato comigo diretamente para obter mais ajuda, você pode entrar em contato comigo através das informações do meu perfil no SO.Eu adoraria ajudá-lo.

SimpleTest é um ótimo sistema.Comecei com isso há cerca de 5 meses, nunca tendo ouvido falar de TDD, e o SimpleTest é fácil de aprender, mas ainda assim poderoso.Quanto aos recursos, estou lendo atualmente TDD por exemplo por Kent Beck, e é bom.

Você deveria investigar Unidade PHP, parece muito com nUnit.

Outra ferramenta moderna que você deve procurar é Codecepção.É muito mais simples que o PHPUnit e incorpora uma abordagem orientada a cenários, o que é bastante útil para gerar documentação a partir de testes.

O desenvolvimento orientado a testes é uma abordagem em que os testes são sempre escritos antes do código.Você deveria aprender a PHPUNIT primeiro para iniciar o desenvolvimento do TDD.Então, ao fazer sua função, você deve sempre pensar em como a função pode falhar e escrever o caso de teste no phpunit e, no final, você deve escrever o código para passar no teste.Será uma abordagem nova, por isso será um pouco difícil no início, mas quando você se acostumar com ela, você a achará muito útil, especialmente para bugs pós-desenvolvimento e estilo de codificação.Você pode passar por isso Passo a passo guia para entender esse conceito.

Lembre-se sempre de que se os testes forem escritos após o desenvolvimento, eles serão inúteis.Portanto, TDD é obrigatório se você está pensando em escrever testes unitários

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top