Repolode
mbj

mbj/mutant

Testes de mutação para Ruby que alteram seu código e mostram quais mudanças sua suíte de testes não detecta.

Estrelas
2,212
Forks
163
Issues abertas
127
Último commit
ontem

O que é?

Mutant é uma ferramenta de testes de mutação para Ruby. Ela aplica sistematicamente pequenas mudanças ao código, como trocar operadores, remover instruções ou alterar valores de retorno, e então executa seus testes para cada mudança. Mutações que não fazem nenhum teste falhar são sinalizadas como vivas, indicando comportamentos que seus testes não verificam de fato.

Cada mutação viva exige uma decisão: simplificar o código porque os testes já garantem o comportamento correto ou adicionar o teste que está faltando. Isso é útil quando o código ou os testes são gerados por ferramentas de IA, já que testes passando, por si só, não mostram se eles verificam algo significativo.

Mutant integra-se ao RSpec, Minitest e Test::Unit e funciona com aplicações Rails, com isolamento do banco de dados por worker. Oferece execuções incrementais para CI, registra os resultados das sessões para consulta posterior e é gratuito para uso em projetos open source, com licença comercial paga.

Recursos principais

  • 01Aplica mutações em operadores, instruções e valores de retorno ao código Ruby e executa os testes para cada uma delas.
  • 02Sinaliza mutações vivas que apontam comportamentos não testados.
  • 03Integra-se ao RSpec, Minitest e Test::Unit.
  • 04Oferece suporte a Rails com isolamento do banco de dados por worker em paralelo para PostgreSQL e SQLite.
  • 05Oferece modo incremental para execução no CI e armazena o histórico das sessões para consultar resultados anteriores.

Casos de uso

  • Verificar se os testes escritos por assistentes de IA realmente validam o comportamento do código.
  • Encontrar pontos fracos em uma suíte de testes Ruby existente antes de refatorar.
  • Executar testes de mutação incrementais no CI apenas para o código alterado.

Início rápido

  1. 1

    Instale a gem de integração do RSpec

    gem install mutant-rspec
  2. 2

    Execute mutant em um sujeito do seu código

    mutant run --use rspec --usage opensource --require ./lib/person 'Person#adult?'

Antes de usar

  • Compatível apenas com Linux e macOS.
  • Gratuito apenas para projetos de código aberto; o uso comercial exige uma assinatura paga.
  • O README não informa uma licença de código aberto claramente (os metadados mostram NOASSERTION).

Em coleções

Tópicos

#mutation-testing#ruby#testing#rspec#minitest#code-quality#rails#code-quality-analyzer#code-review#coverage

Perguntas frequentes

O que é mutant?
Testes de mutação para Ruby que alteram seu código e mostram quais mudanças sua suíte de testes não detecta. Mutant é uma ferramenta de testes de mutação para Ruby. Ela aplica sistematicamente pequenas mudanças ao código, como trocar operadores, remover instruções ou alterar valores de retorno, e então executa seus testes para cada mudança. Mutações que não fazem nenhum teste falhar são sinalizadas como vivas, indicando comportamentos que seus testes não verificam de fato.
mutant é gratuito? Qual é a licença?
mutant é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
mutant ainda é mantido?
Manutenção ativa. O último commit de mutant foi em 6 de nov. de 2026.
Para que posso usar mutant?
Verificar se os testes escritos por assistentes de IA realmente validam o comportamento do código. Encontrar pontos fracos em uma suíte de testes Ruby existente antes de refatorar. Executar testes de mutação incrementais no CI apenas para o código alterado.
Como instalar mutant?
Instale a gem de integração do RSpec: gem install mutant-rspec Execute mutant em um sujeito do seu código: mutant run --use rspec --usage opensource --require ./lib/person 'Person#adult?'
Onde consigo mutant?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/mbj/mutant

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados