devterview_$ iniciar simulação

Cenário: um teste que passa e falha sem o código mudar

DifícilSêniorQualidade de teste

Pergunta

Um teste na CI passa numa execução e falha na seguinte, sem nenhuma mudança de código. Como você investiga e quais são as causas mais comuns?

Resposta esperada

Primeiro, torne o flaky reproduzível: rode o teste isolado e em loop, e rode a suíte em ordem aleatória. Causas mais comuns: (1) estado compartilhado entre testes — um teste deixa dados no banco/variável global e outro depende disso; (2) tempo — sleeps fixos, asserção sobre 'agora', timezone; (3) assíncronia — a asserção roda antes da promise/callback resolver, faltando await ou um wait-for adequado; (4) ordem de execução ou paralelismo batendo no mesmo recurso; (5) dependência de rede/serviço externo não mockado. A correção certa é remover a fonte de não-determinismo, não colocar retry — retry esconde flaky que às vezes é bug real de concorrência no produto.

Por que perguntam isso

Pergunta de nível sênior. O sinal de alerta na resposta é 'eu adiciono retry' como primeira opção — bom candidato trata retry como último recurso e desconfia que o flaky expõe um race no produto.

#flaky-test#ci#debugging
publicidade

Relacionadas