---
title: "Глава 9. Тест как функция награды"
url: "https://www.mikefluff.com/ru/read/nobody-writes-code/ch09"
locale: "ru"
author: "Mikhail Savchenko (Mike Fluff)"
updated: "2026-10-10T17:48:25.825Z"
book: "https://www.mikefluff.com/ru/books/nobody-writes-code"
access: "lead-in"
purchase: "https://www.mikefluff.com/ru/books/nobody-writes-code"
alternates:
  - locale: "ru"
    url: "https://www.mikefluff.com/ru/read/nobody-writes-code/ch09"
    markdown: "https://www.mikefluff.com/ru/read/nobody-writes-code/ch09.md"
  - locale: "en"
    url: "https://www.mikefluff.com/en/read/nobody-writes-code/ch09"
    markdown: "https://www.mikefluff.com/en/read/nobody-writes-code/ch09.md"
  - locale: "pt"
    url: "https://www.mikefluff.com/pt/read/nobody-writes-code/ch09"
    markdown: "https://www.mikefluff.com/pt/read/nobody-writes-code/ch09.md"
---

# Глава 9. Тест как функция награды

*[Код больше не пишут](https://www.mikefluff.com/ru/books/nobody-writes-code)*

Автоматический тест в программировании устроен очень просто. Это маленькая программа, которая запускает кусочек большой программы с заранее известными данными и проверяет, что получился заранее известный результат. Если маникюр стоит полторы тысячи, а у клиентки скидка десять процентов, программа расчёта должна выдать тысячу триста пятьдесят, и тест проверяет именно это: вызывает расчёт, сравнивает ответ с числом и сообщает «прошёл» или «не прошёл». Хороший проект обрастает тысячами таких проверок, и их прогоняют при каждом изменении.

Для людей тесты десятилетиями были чем-то вроде страховки. Программист писал код, а потом, если хватало времени и совести, писал тесты, которые подтверждали, что он не ошибся, и продолжали это подтверждать при каждой следующей правке. Писать их не любил почти никто, потому что тест не добавляет в программу ничего такого, что можно показать заказчику, и когда сроки поджимали, тесты откладывали на потом, а потом так и не наступало. В 2002 году американский программист Кент Бек выпустил книгу о разработке через тестирование, где предложил делать наоборот: сначала написать тест, который описывает, чего ты хочешь от кода, убедиться, что он не проходит, а потом писать код, пока тест не пройдёт. Метод стал знаменитым, его преподавали на курсах и хвалили на конференциях, и большинство программистов, насколько я могу судить, так им и не пользовались.

С приходом агентов у тестов появился новый смысл, и сейчас, по-моему, он важнее старого.

* * *

Чтобы его объяснить, придётся на минуту заглянуть в то, как вообще учат машины. Один из основных способов называется обучением с подкреплением, и работает он примерно так же, как дрессировка собаки. Собака делает что-нибудь, и если это то, чего хотел дрессировщик, получает лакомство. Со временем она начинает чаще делать то, за что дают лакомство, и реже то, за что не дают. У машин лакомство заменяет число, которое называют наградой, а правило, по которому это число вычисляется, называют функцией награды. Модель пробует, получает число, меняется так, чтобы в следующий раз число было больше, и снова пробует.

---

Остальная часть главы — в полной книге. Купить полную книгу (690 ₽): https://www.mikefluff.com/ru/books/nobody-writes-code
