Publicado por Rafael Rosa em 17 de August de 2009
Turbine seus testes em Ruby com Parallel Specs
No post Faça seus testes rodarem DESCONFORTAVELMENTE RÁPIDOS! (classificado como "o melhor post já escrito" por uma das pessoas que o comentaram) Jason Morrison da Thoughtbot demonstra o uso do projeto Parallel Specs criado pelo Michael Grosser para aumentar a velocidade dos seus testes em Ruby.
O Parallel Specs cria uma série de tarefas Rake que rodam specs e tests em parallel, o que utiliza plenamente múltiplas CPUs (ou cores) para multiplicar seu poder de testes. Ele ainda não funciona com as features do Cucumber mas o Jason recomenda o uso do testjour para isso - sendo que ele é desenvolvido para funcionar em várias máquinas separadas, o que não é exatamente a mesma coisa.
A Thoughtbot diz que o Parallel Specs normalmente aumenta a velocidade dos testes em 30% a 40% sem esforço, assim, se você estiver escrevendo pilhas de testes (e os melhores desenvolvedores parecem concordar que você deve escreve-los) dê uma olhada nele e divirta-se.

Clique aqui para adicionar ao del.icio.us

17 de August de 2009 às 17:31
Æ!!
Fizemos alguns testes com o Parallel Specs e o retorno não foi muito grande...Infelizmente.
Há braços
18 de March de 2010 às 14:32
Salve,
Acabei de otimizar nossa suite de testes, que tem 355 specs criados usando Rspec e FactoryGirl. Inicialmente eles levavam aproximadamente 90 segundos para ser executados.
Após alguns ajustes nos próprios specs, otimizando o modo como usava as factories, caiu para uns 70s. Fazendo ajustes finos nos testes mais lentos, que descobri utilizando o profiling do rspec, o tempo caiu para 54s.
Por fim, utilizando o Parallel Specs rodando numa máquina dual core, ele foi para 30s. Resumindo, conseguimos baixar o tempo total de execução em 66%
O Parallel foi responsável por um ganho de 24 segundos, o que é bastante dado o pouco esforço necessário para configurá-lo.
Vale lembrar que esses ganhos são específicos da nossa aplicação e estrutura, e nem todo mundo vai conseguir melhoras do mesmo nível.
Abraço