Como um framework executa milhares de testes, mede cobertura e conversa com a CI?
Workers, instrumentação e relatórios no Prova 1.0.
Como acelerar uma suíte sem misturar estado, saída, ordem e significado dos resultados?
jobs 1 · 500 casos · 12,4 s · 40,3 casos/sDescoberta, compilação, execução e relatório têm custos distintos. O baseline impede atribuir à concorrência um ganho vindo de outra mudança.
catálogo ─► plano numerado ─► fila ─► workers
↓ eventos
agregador ─► relatório[01][02][03][04][05] │ │ │ W1 W2 W3 ─► eventos
jobs limita workers. Cada caso conserva stdout. Casos exclusivos aguardam o pool ficar ocioso.
eventos: 03, 01, 04, 02
relatório: 01, 02, 03, 04Fail-fast deixa de agendar itens novos, mas preserva resultados já concluídos.
A Cadência consulta um token entre instruções e operações controladas. Uma chamada nativa que não coopera exige processo por worker para isolamento mais forte, pagando startup, IPC e memória.
Uma falha seguida de passes continua instável. O relatório guarda tentativas e seed; retry nunca apaga a primeira falha.
O compilador já preserva posições. A VM marca o ID antes da instrução. Bitmaps por worker reduzem contenção e o agregador une os bits.
linha 8 ─► bytecode 17,18,19
branch 4 ─► verdadeiro ✓
└► falso ·| Métrica | Observa | Não prova |
|---|---|---|
| Linha | linha alcançada | todos os resultados |
| Função | entrada na função | qualidade da assertion |
| Branch | braços tomados | correção |
Linhas vazias e comentários ficam fora do denominador; código gerado aparece separado.
calcular_desconto(cliente_vip)
assert(true)Todas as linhas podem executar sem que o preço seja verificado. Cobertura encontra ausência de execução; não certifica intenção.
prova test --format human
prova test --format json
prova test --format junit
prova test --coverageJUnit é um subconjunto documentado. CI recebe exit code, artefatos, versão, seed e jobs. Seleção por alterações só é segura com grafo correto; sem ele, é heurística declarada.
Crivo ─► diagnóstico Oficina ─► listar e executar sob cursor Vigia ─► depurar um caso Pulso + Cadência ─► fonte, bytecode, execução CI ─► exit code + artefatos
jobs tempo casos/s
1 12,4 s 40,3
2 6,8 s 73,5
4 4,1 s 121,9
8 4,0 s 125,0Os números são da fixture e devem ser regenerados; não são promessa universal. Cobertura também mede seu próprio overhead.
Descoberta → plano → workers → ambientes isolados → execução → eventos → cobertura → relatório → exit code.
cargo test, JUnit, pytest, Jest e Vitest possuem ecossistemas maiores. O Prova é funcional no recorte didático e não reivindica equivalência industrial.
PROJETO COMPLETO · ESTADO EXATO DESTE CAPÍTULO
Baixe o Prova 1.0.
Pacote exclusivo com código Rust e fixtures Pulso. Nenhum download anterior é substituído.