𝗘𝘃𝗲𝗿𝘆 𝗧𝗲𝘀𝘁 𝗣𝗮𝘀𝘀𝗲𝗱. 𝗧𝗵𝗲 𝗨𝘀𝗲𝗿 𝗦𝘁𝗶𝗹𝗹 𝗖𝗼𝘂𝗹𝗱𝗻'𝘁 𝗣𝗹𝗮𝘆 𝘁𝗵𝗲 𝗚𝗮𝗺𝗲 (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
