Pergunta

Um problema encontrado com mutação testar é que ele é lento, porque, por padrão você fazer uma completa teste (um arquivo de teste, ou um conjunto de arquivos de teste) para cada mutação gerada.

Uma maneira de tornar mutação testar mais rápido seria para parar o teste para um dado mutante uma vez uma única falha foi encontrado (mas apenas durante o teste de mutação). Ainda melhor seria para o testador mutação para lembrar o que foi o primeiro teste para matar o último mutante, e dar esse primeiro para o próximo mutante. Existe alguma coisa em Ruby que faz qualquer uma dessas coisas, ou é a minha melhor aposta para começar macaco patching?

(Sim, eu sei testes de unidade deve ser rápido. E mostrando todos os testes que falharam é útil fora dos testes de mutação, pois ajuda você não apenas identificar errado Isso é algo, mas identificar onde ele está acontecendo de errado)

Editar : Eu estou usando atualmente heckle com test / unit. Se não for possível para teste / unidade de lembrar que os testes falham entre corridas, talvez importunar ou algo correr heckle poderia se lembrar dela.

Foi útil?

Solução

Seu melhor melhor é o de verificar o heckle fonte de github, corrigi-lo e alegam que patch para os desenvolvedores. Você deveria ser capaz de escrever um corredor de teste personalizado para heckle.

Monkey patch nunca é a resposta para algo como isto. Na verdade, macaco patching quase nunca é a resposta para tudo.

Outras dicas

mutante ferramenta usa a opção rspec2 --fail-fast para parar imediatamente uma vez por exemplo não foi encontrado. Juntamente com a estratégia --rspec-dm2 que apenas executa testes de unidade afetados temos muito rápida mutação teste de cobertura. Veja este asciicast para uma demonstração (velocidade).

Uma abordagem que eu comecei a usar estava escrevendo testes de unidade para cada método, e colocá-los em arquivos separados, organizados como rubyspecs. Eu corro cada especificação de forma isolada, especificando o método exato eu quero importunar. Eu tenho uma tarefa rake que gerencia tudo isso e imprime um relatório no final com mutações de falha, se houver.

No final, eu obter cobertura heckle completa de cada método, sem esperar para sempre para os resultados. Além disso, é ainda melhor do que os normais usos abordagem todos, porque eu não obter qualquer cobertura incidental -. Especificações de cada métodos devem cobrir todas as mutações desse método

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