Goblin

Project logo

Ferramenta de testes de mutação (Mutation Testing) para a linguagem Go, desenvolvida inicialmente para a disciplina de Verificação e Validação de Software na UNIFESP e posteriormente adaptada para uso como biblioteca real.

O Goblin analisa o código-fonte Go, gera mutações sintáticas (alterando operadores lógicos, aritméticos, relacionais, etc.), executa a suíte de testes contra cada mutante gerado e relata quais mutantes sobreviveram — evidenciando lacunas de cobertura lógica nos testes existentes.

Principais Recursos:

  • Execução Paralela: Suporte a execução concorrente usando múltiplos workers para otimizar o tempo de execução dos testes.
  • Integração de CI: Opção de definir um limite mínimo de pontuação de mutação (--threshold) para falhar builds integrados continuamente.
  • Interface e CLI Flexíveis: Disponível tanto como ferramenta de linha de comando (CLI) quanto como biblioteca Go importável.
  • Relatórios: Geração de relatórios em formato JSON para integração com outras ferramentas de visualização.

Desafios Técnicos e Aprendizados:

  • Manipulação de AST: Uso intensivo dos pacotes internos de Go (go/ast, go/parser, go/printer, go/token) para ler, modificar e reescrever a Árvore de Sintaxe Abstrata (AST) do código Go de forma segura.
  • Concorrência em Go: Orquestração de workers concorrentes para gerenciar múltiplos subprocessos go test executando mutações paralelamente sem interferência mútua.
  • Design de APIs: Refatoração do código de um projeto estritamente acadêmico para uma biblioteca empacotada de forma profissional, limpa e reutilizável pela comunidade.