AI For Test Generation: Where It Helps And Where It Lies

A IA escreve testes rápido. Ela também escreve testes que parecem reais, mas verificam as coisas erradas.

Você cola uma função em uma IA. Trinta segundos depois, você tem doze testes passando. Sua pontuação de cobertura aumenta. Você se sente produtivo.

Então, um bug chega à produção. Você olha para aqueles doze testes e percebe que nenhum deles teria detectado o problema.

A IA testou o que o seu código faz, não o que o seu código deveria fazer.

A IA é útil, mas você deve saber como usá-la.

Onde a IA ganha:

  • Gerar boilerplate, como blocos de setup e teardown.
  • Escrever helpers de factory e objetos de dados repetitivos.
  • Criar muitas variações de um único padrão de teste bom.
  • Lidar com casos de borda óbvios, como null, strings vazias ou zero.

Onde a IA falha:

  • Testes baseados na implementação: Ela escreve testes que seguem a estrutura do código em vez da lógica de negócio. Se você refatorar o código, os testes quebram, mesmo que o resultado ainda esteja correto.
  • Casos de borda superficiais: Ela encontra erros óbvios, mas deixa passar bugs específicos do domínio. Ela não conhece as peculiaridades do seu fuso horário, suas restrições de banco de dados ou suas regras de negócio específicas.
  • Mocks frágeis: Ela faz o mock de serviços internos que deveriam permanecer reais. Isso torna os testes lentos de manter e fáceis de quebrar durante refatorações.

Como usar a IA sem criar "teatro de testes":

  1. Defina o contrato primeiro. Escreva uma frase em linguagem simples sobre o que o teste deve provar. Exemplo: "Um código expirado deve retornar o valor original."
  2. Forneça essa frase para a IA. Deixe a IA escrever o código, mas você deve ser o dono da intenção.
  3. Faça o mock apenas na fronteira. Use instâncias reais para seus módulos internos. Faça o mock apenas de APIs externas ou bancos de dados.
  4. Escreva um caso de borda de domínio manualmente. A IA lida com as bordas "óbvias". Você deve lidar com as bordas das "3 da manhã" que realmente causam incidentes em produção.

Não deixe a IA decidir o que o teste verifica. Use-a para digitar o código, mas você fornece a lógica.

Fonte: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm