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.
ilustraçãoPara 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.