status:alpha
version:v0.0.1
devstation engineering

Testes via MCP: rodando a suíte contra um homelab real

A suíte e2e exercita um node Proxmox de verdade pelo MCP — provisiona, instala, desinstala e destrói — para que um agente rode e explore o CLI como um QA. Notas sobre refatorações grandes, a validação cross-OS no Windows e a disciplina de teste com IA.

12 de jul. de 2026 André Spineli
EN

Num projeto que mexe com infraestrutura real, os testes que valem são os que de fato provisionam, instalam e derrubam as coisas. O engine do DevStation expõe um servidor MCP, então a suíte e2e dirige o CLI por ele — a mesma fronteira que um agente, ou qualquer cliente MCP, usaria. São testes de integração comuns; o que o MCP acrescenta é que um agente consegue rodar e explorar o fluxo inteiro sozinho, do jeito que um QA percorreria o CLI na mão.

MCP como superfície de teste

O Model Context Protocol é um padrão aberto para conectar agentes a ferramentas e dados. Na prática, a suíte passa pelas mesmas chamadas que um agente faria: listar clusters, provisionar um node, instalar um serviço por SSH, desinstalar, destruir. Por desenho, o MCP é um inbound adapter que traduz as ferramentas em chamadas JSON-RPC já existentes — não conhece a estrutura interna dos contextos — com uma allowlist explícita e metadados de risco para as operações destrutivas.

Infraestrutura real no lugar de mocks

A suíte conversa com uma máquina real em vez de uma simulação: provisiona um node via OpenTofu, sobe a VM, conecta por SSH, instala, desinstala e destrói. É mais lento que um teste de unidade e, em troca, exercita comportamento real de ponta a ponta, não uma aproximação.

Confiança em refatorações grandes

O ganho aparece nos refactors. Ao renomear deploy → install e destroy → uninstall no stack inteiro, o e2e contra o node real apontou em segundos uma regressão que nenhum mock pegaria: a leitura do estado anterior havia quebrado um endpoint. Encontrar isso na hora, e não em produção, é o que torna mudanças amplas práticas. E como é o agente quem dirige a suíte, o ciclo “provisiona → instala → desinstala → destrói” roda em loop sem supervisão constante, então rechecar uma mudança grande continua barato.

A jornada cross-OS no Windows

A validação no Windows ilustra bem o método. Duas máquinas — uma Linux, uma Windows — compartilhavam um diretório, com o Claude Code rodando nas duas. O agente no Linux compilava o binário e publicava os artefatos; o agente no Windows validava, guiado por instruções em arquivos .md. Os dois rodaram por horas, de forma quase autônoma, até o CLI inteiro passar no Windows — e os testes via MCP eram executados pelos dois lados sempre que necessário. A fronteira de sistema operacional deixou de ser um evento manual e virou parte do loop.

Disciplina de teste e o papel do harness

Nada disso quer dizer que a IA fez a complexidade sumir. O que manteve as coisas honestas foi o harness: cada feature nasce com seu teste, cada correção com sua regressão, e o agente roda a suíte real porque esse é o fluxo. Testar contra o real, em loop, foi principalmente o que mudou o quanto parecia seguro tentar. (Há também pesquisa útil sobre onde o ganho da IA diminui — em bases maduras que o time já domina e em bases muito grandes — nos links abaixo.)

Referências