antonio leandro

estruturas e algoritmos

How to break software

paper · James A. Whittaker ·

a tese

plano de teste escrito antes de o produto ficar testável já nasce vencido: quem acha bug é o julgamento do testador durante a sessão, com ferramenta coletando dado e nunca decidindo o que olhar

o que fica

  1. O plano de teste é escrito quando o produto ainda não está testável, então ele descreve um software que ninguém executou.
  2. Requisito muda, bug vira feature e prazo força replanejamento — três motivos pelos quais o script de teste envelhece mais rápido que o código.
  3. Teste não é ciência exata: decidir o que testar antes de testar assume um conhecimento do sistema que só a execução produz.
  4. O planejamento não desaparece na abordagem de Whittaker, ele migra para dentro da sessão: testar um pouco, pensar um pouco, replanejar.
  5. Automação entra para tarefa repetitiva e complexa, e a ferramenta coleta dado e amplia exploração — a escolha do que investigar continua humana.
  6. "Faro para onde os bugs se escondem" é tratado como habilidade treinável, não como talento inato.

o problema

O teste de software institucionalizou uma sequência: alguém escreve um documento dizendo o que será testado, o documento é aprovado, e depois o testador executa o documento como quem roda um script. A ordem parece disciplina. Na prática ela inverte a única coisa que importa: o plano precisa ser escrito cedo, para caber no cronograma e passar pela aprovação, e cedo significa antes de o produto estar testável. O autor do plano descreve um software que ninguém ainda executou.

E o alvo se move. Requisito muda no meio do projeto. Comportamento que era bug é redefinido como feature. Pressão de prazo obriga a reavaliar o que ficou de fora. Cada uma dessas coisas desatualiza o documento sem que ninguém perceba, porque o documento continua lá, aprovado, e continua sendo executado. O testador que segue o script ao pé da letra acaba certificando um produto contra uma descrição antiga dele. Whittaker parte de uma afirmação mais dura: teste não é ciência exata o bastante para permitir que se determine com antecedência o que testar, execute-se o plano e considere-se o trabalho feito.

a ideia

A troca é substituir o script pelo julgamento. O que deve guiar o testador é inteligência, discernimento, experiência e o que o livro chama de faro para onde os bugs se escondem. Não é licença para improvisar sem método: o livro ensina planejamento, mas planejamento feito durante o teste, não antes dele. O ciclo é curto e recursivo — testar um pouco, pensar um pouco, testar mais um pouco com o que se aprendeu. O plano vira um artefato vivo, produzido pela própria execução, em vez de um contrato assinado antes de existir informação para assiná-lo.

O ponto sutil é que sair do script não é acidente tolerado, é comportamento encorajado. As técnicas do livro existem para que o testador tenha para onde ir quando abandona o documento — é a diferença entre exploração com repertório e chute. Um testador sem técnica que abandona o plano não descobre nada; ele apenas repete os caminhos felizes que o desenvolvedor já percorreu.

o que isso custou

O primeiro custo é organizacional e o livro não esconde: um processo baseado em julgamento é difícil de auditar, de estimar e de distribuir entre pessoas de experiência desigual. Quem contrata teste como entregável quer um documento e um percentual de execução; sessão exploratória não produz isso naturalmente. O livro responde tentando ensinar o faro, e essa é uma aposta — se a habilidade não for treinável no ritmo em que o time cresce, a abordagem não escala junto.

O segundo custo é a dependência de ferramenta com limite explícito. O livro encoraja automação para tarefas repetitivas e complexas, e acompanha uma dessas ferramentas, mas trava a linha: ferramenta jamais substitui inteligência. Ela coleta dado e ajuda a explorar a aplicação de forma mais eficiente; quem decide o que investigar é o testador. Isso significa que o teto de qualidade do processo é o teto da pessoa que está sentada ali. Não há caminho de automação que remova essa dependência — por desenho.

O que segue é uma nota sobre o material: este verbete se apoia no resumo do livro, que descreve a postura e o método, não o catálogo de técnicas de ataque nem os exemplos que ocupam o volume.

onde isso aparece hoje

A tensão que Whittaker nomeou em 2002 — plano escrito antes contra julgamento exercido durante — não foi resolvida, foi herdada. Ela reaparece inteira na avaliação de sistemas de ia, onde o critério precisa ser definido antes de existir o comportamento que ele vai julgar; é o problema tratado em Define your success criteria e em Demystifying evals for AI agents, com o mesmo desconforto de fixar régua cedo demais.

A outra metade da herança está na automação com limite. Quando a Meta descreve geração automática de testes unitários por llm em Automated Unit Test Improvement using Large Language Models at Meta, a máquina produz volume e um humano decide o que entra — a divisão de trabalho que o livro já defendia, com a ferramenta ficando mais capaz e a fronteira ficando no mesmo lugar. E benchmarks como SWE-bench medem modelos contra bugs reais justamente porque casos sintéticos planejados de antemão não representam o que quebra em produção.

lido pelo resumo por pipeline de llm, revisado por antonio leandro antes de publicar ·