Alguns idiomas ou recursos de idioma são melhores para teste?

5

Eu sou e gosto de ser um codificador do VB.net. Eu tenho um par de programas largish em c # que devo manter e eu realmente não gosto de escrever código c # durante o desenvolvimento. Não é horrível, mas prefiro muito mais o ambiente VB.net para o desenvolvimento.

No entanto, recentemente comecei a escrever todos os meus testes em C #. Comecei a fazer isso para poder usar todas as ótimas ferramentas, como as bibliotecas simuladas, disponíveis em C #.

Mas mesmo depois que eu encontrei o Teleriks extremamente capaz de montar uma edição grátis para o VB.net eu descobri que ainda escrevo quase todos os meus testes em C # (agora usando a versão C # do JustMock BTW). Mesmo quando não preciso dessas ferramentas de teste, acho que apenas gosto de C # melhor para escrever testes.

Acho que gosto do VB.net para codificação geral enquanto resolvo problemas enquanto escrevo porque: 1. Como a doçura açucarada de coisas como XML Literais. Além disso, o LINQ parece mais fácil e mais expressivo no VB. 2. Não precisa se preocupar com a sintaxe quase tanto (invólucro, terminadores de linha etc.) Eu posso me concentrar em minhas idéias. (A verbosidade extra é tratada pelo # 3 abaixo e coderush e outras ferramentas IDE) 3. Pense que a estreita integração com o IDE do Visual Studio e o VB.net (compilação em segundo plano, por exemplo) é apenas o joelho das abelhas. (Embora o C # esteja ficando muito melhor.)

Mas, para os testes, não estou pensando sobre o quadro geral ou realmente resolvendo problemas. Cada método de teste é independente e a sucessão do C # apenas reforça e auxilia este fato.

Inicialmente, achei isso surpreendente porque sempre achei que uma linguagem de tipo de script seria melhor para escrever testes. Mas depois de escrever muitos milhares deles, não vejo nenhum benefício em usar uma linguagem de script. Na verdade, acho Option Strict e Explicit sendo verdade (o que torna a natureza do script de vb) ainda mais útil nos projetos de teste.

Mas talvez eu esteja errado e há idiomas ainda mais adequados para escrever testes? Alguma coisa como o IronPython seria bom para escrever testes? Talvez BOO com suas macros? Eu não pensaria assim, mas uma linguagem funcional poderia trazer alguma coisa à mesa?

Mais simplesmente, existem recursos de linguagem que ajudam a escrever bons testes? E, em caso afirmativo, que idioma possui o maior número dessas características desejáveis?

    
por ElGringoGrande 11.11.2011 / 05:10
fonte

2 respostas

3

Eu diria que é mais importante escrever seus programas de maneira testável do que buscar recursos de linguagem específicos que auxiliem nesse teste. Você pode escrever testes em python ou clojure com a mesma facilidade que você pode em c # ou Java, se você escrever seus programas de uma maneira que facilite o teste.

Como um desenvolvedor c # comprometido, posso dizer a você que existem vantagens definitivas em ter uma maneira estruturada e strongmente tipificada de escrever programas e testes de unidade. Mas há algo a ser dito para trabalhar em uma linguagem que tem mais "imediatismo" como o python. Ao utilizar um REPL, você pode destilar suas ideias mais rapidamente em pedaços de código testáveis e, no longo prazo, pode precisar de menos testes de unidade, pois você está constantemente testando seu código à medida que o escreve.

    
por 11.11.2011 / 05:24
fonte
0

Acho que depende muito de você estar falando sobre testes integrados com seu próprio código ou testando como uma atividade separada. Depende do que você está fazendo, como sua equipe é formada e assim por diante - mas muitas vezes uma combinação dos dois é a mais poderosa.

Para testes integrados (testes unitários, testes de integração, especificações executáveis escritas por desenvolvedores, etc.), você simplesmente precisa ter certeza de que está codificando de uma forma que facilite o teste - IMHO o que isso significa pode variar de linguagem para linguagem, embora existam alguns princípios gerais (baixo acoplamento, minimizar dependências dependências externas para coisas como sistemas de arquivos ou bancos de dados). Em qualquer caso, o problema que você está tentando resolver deve determinar qual deles escolher não os requisitos de teste.

Para testes externos (por exemplo, especificações executáveis escritas por testadores ou analistas), é possível usar o mesmo idioma que você está usando para escrever o código, mas muitas vezes você precisará de algo um pouco mais interativo. Evitar uma etapa de compilação e ter um REPL pode ser uma grande vitória aqui (por exemplo, python).

    
por 11.11.2011 / 10:03
fonte