O Que É uma Test Matrix?
Uma test matrix executa os mesmos testes através de muitas combinações de ambientes, como sistemas operacionais e versões de linguagem, para capturar bugs específicos de ambiente.
Software muitas vezes precisa funcionar em mais de um ambiente: vários SOs, múltiplas versões de linguagem, conjuntos diferentes de dependências. Uma test matrix executa sua suíte através de cada combinação que importa para você, transformando "funciona na minha máquina" em "funciona em todas as máquinas que suportamos". Cada célula da matrix é uma execução independente.
O que uma matrix cobre
Uma matrix é definida pelas dimensões que importam para você, como SO (Linux, macOS, Windows) cruzado com versão de runtime (18, 20, 22). O número de células é o produto das dimensões, então uma matrix 3 por 3 produz nove execuções, cada uma rodando a suíte completa naquele ambiente específico.
Por que importa
- Captura bugs específicos de SO, como problemas de path ou de fim de linha.
- Verifica o suporte para cada versão de linguagem ou runtime.
- Testa contra múltiplas versões de dependências.
- Prova que o software funciona em todas as configs suportadas.
Um exemplo rápido
Uma matrix de CI expande uma definição de job em uma execução por combinação das dimensões listadas.
strategy:
matrix:
os: [ubuntu, macos]
node: [18, 20]
# expands to 4 jobs: ubuntu/18, ubuntu/20, macos/18, macos/20Cuidado com a explosão da matrix
Cada dimensão multiplica a contagem de células, então uma matrix pode inflar para centenas de jobs e longas filas. Enxugue-a testando apenas combinações significativas, as versões suportadas mais antigas e mais novas em vez de todas, e excluindo combinações que não podem ocorrer.
Uma test matrix no CI
Cada célula da matrix é um job independente, então todas rodam em paralelo, o que significa que o tempo total de relógio é aproximadamente o da célula mais lenta, não a soma. O benefício só é real se houver runners rápidos suficientes para rodar as células ao mesmo tempo. A Latchkey fornece runners rápidos que permitem que uma matrix ampla rode simultaneamente em vez de enfileirar.
Principais conclusões
- Uma test matrix executa a suíte através de muitas combinações de ambiente.
- Ela captura bugs específicos de SO e versão que você de outra forma perderia.
- As células rodam em paralelo, então runners rápidos o bastante mantêm a matrix ágil.