Como decido qual estrutura de teste usar?

8

A situação é essa.

Sou desenvolvedor júnior de um pequeno projeto de TI do governo. Não temos nada de integração contínua ou uma estrutura de teste automatizada. Mas a idéia é desenvolver esse tipo de coisa / melhorar nosso ambiente de desenvolvimento.

O produto é um algoritmo de processamento de dados que exibe informações para o usuário final por meio de um aplicativo da web.

Portanto, é muito trabalhoso modificar o javascript do webapp. Como tal, queremos implementar um teste de unidade para o javascript.

Eu olhei para essa pergunta de estouro de pilha que descreve várias estruturas de teste de unidade diferentes para javascript.

A questão é: como faço para decidir entre qual estrutura começar a usar?

  • O que é uma lista de critérios para escolher uma estrutura de teste?
  • É prático experimentá-los todos?
  • Gaste muito tempo lendo fóruns / etc sobre como eles são usados?
Dwjohnston
fonte

Respostas:

13

O que é uma lista de critérios para escolher uma estrutura de teste?

1) Sintaxe

Ao investigar diferentes estruturas de teste, você notará que a sintaxe é um fator diferenciador em todas elas. Isso realmente vai depender do que faz você se sentir confortável.

Por exemplo, qUnit é mais uma estrutura de teste declarativa. Sua API consiste em funções chamadas teste, iguais, strictEqual, deepEqual, etc.

Outra estrutura de teste, o mocha , é mais parecida com rspec, na medida em que lê em uma frase mais parecida com a estrutura. Sua API consiste em funções chamadas de descrição, assert.equal etc.

Minha preferência pessoal é uma estrutura semelhante a um qunit.

2) Recursos - Stubs, Spies, servidor falso, relógio falso, etc

Ao iniciar o teste em Javascript, você se encontrará rapidamente em situações em que precisa da estrutura de teste para ajudá-lo a testar determinados casos de uso. Por exemplo:

Espiões - Isso ajudará você a detectar se o seu código chamou uma função quando deveria

Stubs - Muito semelhante a um espião, exceto que ele contém um comportamento predefinido (exemplo: quando o stub é chamado, retorne foo)

Servidor falso - Se o seu código emitir chamadas AJAX e você desejar falsificar a resposta da chamada AJAX, um servidor falso o ajudará a testar com mais facilidade.

Relógio falso - Se o seu código reagir de maneira diferente com base na data ou hora, um relógio falso o ajudará a controlar exatamente que horas são enquanto o teste é executado.

Minha recomendação para uma estrutura Javascript que ofereça suporte a todos os recursos acima é Sinon.JS . Como gosto de um qunit como sintaxe e estrutura, uso o qunit AND Sinon.JS. O qunit lida com minhas afirmações e executa meus testes. O Sinon.JS me dá a capacidade de stub, espionar, executar um servidor falso e falsificar o relógio.

3) Suporte da comunidade

Sua estrutura de teste é suportada pela comunidade? Por exemplo, o grunt (uma ferramenta de ambiente de construção) suporta a execução de qunit em um servidor PhantomJS sem cabeça: https://github.com/gruntjs/grunt-contrib-qunit . Isso facilita a gravação de testes e a execução automática deles sempre que eu salvar o arquivo de teste.

É prático experimentá-los todos? Não, não é prático. Em vez disso, investigue o site de cada estrutura e escolha um com o qual você se sinta confortável e outro que também o apoiará durante os testes de gravação.

Gaste muito tempo lendo fóruns / etc sobre como eles são usados? Pegue um livro sobre a estrutura que você escolher e percorra-a conforme necessário.

richardaday
fonte