Ninguém Mais Escreve Código

Capítulo 9. O teste como função de recompensa

Parte III. Antivibe8 min

09

O teste como função de recompensa

Um teste automatizado, em programação, é uma coisa muito simples. É um programinha que roda um pedaço de um programa maior com dados conhecidos de antemão e verifica se sai o resultado conhecido de antemão. Se a manicure custa mil e quinhentos e a cliente tem dez por cento de desconto, o programa de cálculo tem de devolver mil trezentos e cinquenta, e o teste verifica isso: chama o cálculo, compara a resposta com o número e informa “passou” ou “não passou”. Um bom projeto vai acumulando milhares de verificações assim, e elas rodam a cada mudança.

Para as pessoas, os testes foram durante décadas uma espécie de seguro. O programador escrevia o código e depois, se tivesse tempo e consciência, escrevia testes que confirmavam que ele não tinha errado e continuavam confirmando isso a cada edição seguinte. Quase ninguém gostava de escrevê-los, porque o teste não acrescenta ao programa nada que se possa mostrar ao cliente, e quando os prazos apertavam, os testes eram deixados para depois, e o depois nunca chegava. Em 2002 o programador americano Kent Beck lançou um livro sobre desenvolvimento guiado por testes em que propunha fazer o contrário: primeiro escrever um teste que descreve o que você quer do código, confirmar que ele falha, e depois escrever o código até o teste passar. O método ficou famoso, foi ensinado em cursos e elogiado em conferências, e a maioria dos programadores, pelo que sei, nunca chegou a usá-lo.

Com a chegada dos agentes, os testes ganharam um novo sentido, e hoje, na minha opinião, ele é mais importante que o antigo.


Um treinador, de costas, ajoelhado na relva, estende um petisco a um cão jovem que acabou de se sentar.ilustração
A aprendizagem por reforço funciona como o treino de um cão. Para as máquinas o petisco é um número, e no código quem o dá é o teste.

Para explicá-lo, vamos ter de dar uma olhada rápida em como se treinam as máquinas. Um dos métodos principais se chama aprendizado por reforço, e funciona mais ou menos como o adestramento de um cachorro. O cachorro faz alguma coisa e, se é o que o adestrador queria, ganha um petisco. Com o tempo ele passa a fazer mais o que rende petisco e menos o que não rende. Nas máquinas, o petisco é substituído por um número chamado recompensa, e a regra pela qual esse número é calculado se chama função de recompensa. O modelo tenta, recebe um número, muda de modo que na próxima vez o número seja maior, e tenta de novo.

Após entrar

O resto do livro é para quem entrou

Entre com INITE ou crie uma conta. Leva um minuto, e o livro abre aqui mesmo.