Test-Oriented Programming: rethinking coding for the GenAI era
O artigo propõe o paradigma de "Programação Orientada a Testes" (TOP), no qual os desenvolvedores focam apenas na validação de testes gerados por IA a partir de especificações em linguagem natural, delegando a escrita do código de produção aos modelos de linguagem, e demonstra a viabilidade dessa abordagem através de uma prova de conceito.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
Imagine que, durante séculos, programar foi como construir uma casa tijolo por tijolo. O arquiteto (o programador) tinha que desenhar cada detalhe, escolher cada material e colocar cada pedra no lugar certo. Com a chegada da Inteligência Artificial (IA), surgiram ferramentas que ajudavam a colocar os tijolos mais rápido, como um ajudante que sugere onde colocar o próximo. Mas, no final das contas, o arquiteto ainda tinha que olhar para a parede e verificar se estava reta.
O artigo "Programação Orientada a Testes" (Test-Oriented Programming), do autor Jorge Melegati, propõe uma mudança radical nessa forma de pensar. Ele sugere que, na era da IA, o programador não deve mais se preocupar em colocar os tijolos, mas sim em definir o que a casa deve fazer.
Aqui está a explicação simples, usando analogias do dia a dia:
1. A Nova Abordagem: O Chefe e o Cozinheiro
Pense no desenvolvimento de software como cozinhar um jantar para uma festa.
- O Jeito Antigo: O chef (programador) escreve o cardápio e depois vai para a cozinha, corta os legumes, tempera a carne e frita tudo, verificando o sabor a cada passo.
- O Jeito com IA Atual (Copilot, etc.): O chef dá uma dica e a IA sugere o próximo corte de legume. O chef ainda está na cozinha, mexendo na panela.
- O Novo Jeito (Programação Orientada a Testes - TOP): O chef (programador) fica na sala de jantar e escreve um cardápio de expectativas (os "testes"). Ele diz: "Quero uma sopa que seja quente, salgada e que tenha batata".
- A IA (o cozinheiro robô) vai para a cozinha e tenta cozinhar a sopa.
- Se a sopa não estiver salgada, o robô tenta de novo.
- Se não tiver batata, ele joga fora e recomeça.
- O chef nunca entra na cozinha. Ele só verifica se a sopa final atende ao que ele pediu no cardápio. Se a sopa estiver ruim, o chef não conserta a receita; ele apenas ajusta o pedido no cardápio (o "código de teste") e manda o robô tentar de novo.
2. O Problema da Linguagem Natural
A IA é incrível, mas ela é como um funcionário muito criativo que às vezes não entende exatamente o que você quer se você falar de forma ambígua.
- Se você diz: "Faça algo legal", a IA pode fazer um bolo ou um carro de brinquedo.
- Para resolver isso, o autor propõe que o programador escreva regras de verificação (os testes). Em vez de dizer "faça um sistema de bibliografia", o programador diz: "O sistema deve conseguir ler um arquivo, adicionar um livro novo e encontrar um livro pelo autor".
- A IA usa essas regras como um guia. Ela gera o código (a produção) e roda os testes. Se o código passar nos testes, está pronto. Se falhar, a IA sabe que precisa mudar algo.
3. A Ferramenta "Onion" (Cebola)
Para provar que isso funciona, o autor criou uma ferramenta chamada Onion.
- Imagine que a Onion é um gerente de obra. Você entrega a ela um arquivo de configuração (um papel com o que você quer).
- A Onion conversa com a IA, pede para ela criar o código, roda os testes e, se der errado, pede para a IA tentar de novo.
- O humano só intervém se a Onion disser: "Ei, os testes que você escreveu estão confusos, preciso que você os reescreva para a IA entender".
4. O Que Eles Descobriram?
Eles testaram a Onion criando um pequeno programa para organizar referências bibliográficas (como um catálogo de livros). Usaram duas IAs diferentes (uma da OpenAI e uma da Google) e descobriram:
- Funciona! Em nenhum momento tiveram que escrever o código do programa manualmente. A IA fez tudo.
- O Desafio da Quantidade: A IA gera muito código de teste. É como se o cozinheiro escrevesse 50 páginas de instruções de como provar a sopa. O programador precisa ler tudo isso para garantir que as regras estão certas. Isso pode ser cansativo.
- A Personalidade das IAs: As duas IAs agiram de formas diferentes. Uma foi mais direta e curta; a outra foi mais detalhista e falante. Isso significa que o código final muda dependendo de qual "robô" você contrata.
- A Necessidade de Revisão: Às vezes, a IA ficava presa num ciclo de erros. O programador precisava olhar para os testes e dizer: "Ah, você pediu para a IA procurar por 'autor', mas o teste está procurando por 'título'. Corrija o teste".
Conclusão: O Futuro do Programador
A mensagem principal é que a programação está mudando de "como fazer" para "o que fazer".
O programador deixa de ser um pedreiro que coloca tijolos e passa a ser um arquiteto que define as regras da casa. O trabalho não desaparece, mas muda de foco: em vez de escrever código, você escreve e revisa regras de qualidade (testes) para garantir que a IA fez o trabalho certo.
É como se, no futuro, para ter um carro, você não precisasse saber soldar as peças, mas precisasse ser um especialista em definir exatamente como o carro deve se comportar no trânsito para que a fábrica (a IA) o construa perfeitamente.
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.