𝗘𝘃𝗲𝗿𝘆 𝗧𝗲𝘀𝘁 𝗣𝗮𝘀𝘀𝗲𝗱. 𝗧𝗵𝗲 𝗨𝘀𝗲𝗿 𝗦𝘁𝗶𝗹𝗹 𝗖𝗼𝘂𝗹𝗱𝗻'𝘁 𝗣𝗹𝗮𝘆 𝘁𝗵𝗲 𝗚𝗮𝗺𝗲 (Translating title to Unicode bold): 𝗧𝗼𝗱𝗼𝘀 𝗼𝘀 𝗧𝗲𝘀𝘁𝗲𝘀 𝗣𝗮𝘀𝘀𝗮𝗿𝗮𝗺. 𝗢 𝗨𝘀𝘂á𝗿𝗶𝗼 𝗮𝗶𝗻𝗱𝗮 𝗻ã𝗼 𝗰𝗼𝗻𝘀𝗲𝗴𝘂𝗶𝘂 𝗷𝗼𝗴𝗮𝗿 𝗼 𝗷𝗼𝗴𝗼

"A API retorna 200 OK!"

Trabalhei no meu primeiro emprego de engenharia e vi um grande problema. Meus seniores amavam dashboards. Eles amavam alta cobertura de código. Eles achavam que, se os testes estivessem verdes, o produto funcionava.

Eles estavam errados.

O código funcionar e um ser humano conseguir o que precisa são coisas diferentes. Um botão pode retornar um código de sucesso enquanto deixa o usuário travado em uma tela quebrada.

Eu construí uma maneira de encontrar esses becos sem saída de UX sem precisar executar o app. Eu chamo isso de percurso estático de dois agentes (two-agent static walkthrough). Ele utiliza dois agentes de IA conversando em um loop.

  • O Agente A é o usuário. Este agente tem um objetivo específico. Ele é obstinado. Ele não desiste após um erro. Ele continua tentando caminhos diferentes.
  • O Agente B é o app. Ele tem acesso de leitura ao código-fonte real. Ele rastreia o caminho do código de cada ação do usuário. Ele relata exatamente o que o código faz. Ele cita o arquivo e o número da linha. Ele não pode imaginar coisas que não existem no código.

Eu testei isso em um gerador de mini-games de IA que estava quebrado. Aqui está o que aconteceu:

Turno 1: O botão falhou. O usuário clicou em "Generate". O código enviou a requisição para um endpoint antigo e morto em vez do novo. Os testes passaram porque a API antiga ainda funcionava.

Turno 2: O vazio não clicável. O usuário tentou clicar no resultado. O código colocou o texto em uma caixa simples sem um manipulador de clique (click handler). Nada aconteceu.

Turno 3: A falsa bênção. O usuário tentou corrigir o erro. O backend falhou devido a um ID ausente. A tela mostrou uma mensagem de sucesso verde, embora o sistema tenha morrido.

Turno 4: Esperança truncada. O usuário tentou copiar o código manualmente. A API cortou o texto no meio. O código estava quebrado.

O usuário desistiu.

A maioria dos testes unitários apenas verifica se um endpoint retorna 200. Eles não verificam se o usuário realmente alcança seu objetivo.

Como usar isso:

  • Torne o agente de usuário obstinado. Bugs reais se escondem atrás do primeiro erro.
  • Baseie o agente do app no código real. Isso transforma o role-play em um relatório de bug real.
  • Use isso como um complemento aos seus testes. Ele encontra as lacunas onde sua lógica encontra a realidade.

Este método é estático e barato. Ele roda antes mesmo de você escrever um único fixture de teste. Ele transforma "o código funciona" em "o usuário tem sucesso".

Fonte: https://dev.to/terum/every-test-passed-the-user-still-couldnt-play-the-game-388o

Comunidade de aprendizado opcional: https://t.me/GyaanSetuAi