К содержанию

Практика 3 из 8 · 18 мин

Лабораторная 3: новая функция через тесты вместе с ИИ-агентом

Опубликовано 01/10/2026 · Обновлено 01/10/2026

Шаг 1 из 8 · пройдено 0

Кратко

В практике вы попросите ИИ-помощника сначала написать тест, потом саму функцию, и проверите результат запуском. Так вы увидите, как заранее известный критерий делает работу с нейросетью надёжнее. Опыт программирования не нужен, все команды даны.

На какие вопросы отвечает эта страница 5

Шаг 1 из 8

Что вы поймёте

Схема: сначала тест падает, потому что функции ещё нет, потом проходит, когда функция готова
Сначала тест красный, потом зелёный

Что вы поймёте Вы получите работающую функцию и увидите, как тест подтверждает, что она правильная. Понадобятся: установленный ИИ-помощник, Python и git, 18 минут.

Слова, которые встретятся

Тест
маленькая программа, которая проверяет, что код делает ожидаемое
Функция
кусочек кода с именем, который по входным данным выдаёт результат
Красный тест
тест, который падает: это нормально, пока функции нет
Зелёный тест
тест, который проходит: функция работает как задумано

Шаг 2 из 8

Что такое тесты и зачем они нужны при работе с ИИ?

Тест это небольшая программа, которая проверяет, что код делает ожидаемое. Для работы с ИИ тесты особенно полезны: они без споров показывают, выполнена ли задача, и ловят случаи, когда агент написал красивый, но неверный код. Вам не нужно разбирать каждую строку, достаточно увидеть зелёный результат.

Тест сначала падает, потом проходит
Схема: порядок «сначала тест, потом функция» называют разработкой через тесты

Сравните с приёмкой работы. Если вы заранее записали, что значит «готово», спорить не придётся: либо результат совпал, либо нет.

Агент здесь на вашей стороне, но проверка остаётся за вами. Тест это ваш независимый глаз на его работу.

Вы увидите: вам понятно, что красный тест сначала это не поломка, а часть плана.

Шаг 3 из 8

Подготовьте учебный проект: опыт не нужен

Учебная функция очень простая, а все команды даны в шагах. Цель не в написании кода, а в том, чтобы увидеть, как проверяемый критерий делает работу с ИИ надёжнее. Знать язык заранее не нужно: код напишет агент, а вы запустите проверку.

Функция называется to_mm_ss и переводит секунды в вид «минуты:секунды». Ожидания записаны заранее:

ВходОжидаемый результат
651:05
00:00
360060:00
-1ошибка

Создайте папку и сохраните её в git. Проверьте, что Python стоит:

ТерминалWindows (PowerShell)
mkdir demo-tdd
cd demo-tdd
git init
py -3 --version
ТерминалmacOS и Linux
mkdir demo-tdd
cd demo-tdd
git init
python3 --version

Вы увидите: пустая папка demo-tdd и номер версии Python в ответ на последнюю команду.

Шаг 4 из 8

Попросите агента сначала написать только тест

Сформулируйте задачу в два захода: сначала «напиши тест для функции, которая делает X, и убедись, что он падает», затем «теперь напиши функцию, чтобы тест прошёл». Тест фиксирует ожидание до кода, и вы проверяете работу по понятному критерию, а не на глаз.

ПромптЗаход первый: только тест
Создай файл test_timefmt.py со встроенным модулем unittest.
Он проверяет функцию to_mm_ss из файла timefmt.py:
65 даёт «1:05», 0 даёт «0:00», 3600 даёт «60:00», -1 вызывает ValueError.
Саму функцию НЕ пиши. Запусти тесты и покажи, что они падают.

unittest встроен в Python, ничего ставить не нужно. Агент создаст файл с тестами и запустит их, возможно, чуть другой командой, суть та же. Не пугайтесь, если текст ошибки непонятен: вам нужно только слово FAILED внизу. В конце вы увидите примерно такое:

Вывод командыТесты красные: функции ещё нет
ModuleNotFoundError: No module named 'timefmt'

Ran 1 test in 0.000s

FAILED (errors=1)

Сохраните тесты отдельным шагом: git add -A, затем git commit -m "tests".

Скриншот: Терминал: запуск тестов до написания функции, внизу слово FAILED
Терминал: запуск тестов до написания функции, внизу слово FAILED

Вы увидите: слово FAILED. Это правильный результат на этом шаге.

Шаг 5 из 8

Теперь попросите функцию, чтобы тест прошёл

Второй заход: пусть агент напишет саму функцию и не трогает тесты.

ПромптЗаход второй: функция
Теперь создай timefmt.py с функцией to_mm_ss так, чтобы тесты прошли.
Файл test_timefmt.py не меняй. Запусти тесты и покажи результат.

Правило «тесты не меняй» важно. Иначе агент может подогнать тест под свой код, и проверка потеряет смысл. Если он вдруг предложил поправить тест, откажитесь и напомните правило. Саму функцию он может написать не так, как вы себе представляли: это нормально, пока тесты зелёные. Проверить, что тесты остались нетронутыми, легко: раз вы их сохранили, команда git diff test_timefmt.py должна ничего не показать. Если вывод не пустой, агент всё-таки полез в тест, и правку лучше отменить.

Каждая строка со словом ok это один пройденный тест, а слово OK в конце значит, что прошли все. Агент может пересказать результат своими словами, например «Все 4 теста прошли (Ran 4 tests ... OK)», и это тоже верно. Вот результат, который вы ожидаете:

Вывод командыТесты зелёные
test_negative ... ok
test_over_hour ... ok
test_simple ... ok
test_zero ... ok

Ran 4 tests in 0.000s

OK
Скриншот: Терминал: после написания функции агент сообщает, что все 4 теста прошли, слово OK
Терминал: после написания функции агент сообщает, что все 4 теста прошли, слово OK

Вы увидите: слово OK и сообщение, что прошли все четыре теста (в виде четырёх строк ok или пересказом агента).

Шаг 6 из 8

Как проверить функцию, которую написала нейросеть?

Запустите тесты командой проекта и убедитесь, что они проходят. Затем проверьте пару крайних случаев руками, например пустой ввод. Попросите агента объяснить логику простыми словами. Если объяснение вас не убеждает, упростите задачу и повторите. Понимание результата важнее скорости: лучше потратить лишние пять минут, чем принять непонятный код.

Запустите тесты сами, без агента:

ТерминалЗапуск тестов (macOS и Linux)
python3 -m unittest -v
ТерминалЗапуск тестов (Windows)
py -3 -m unittest -v

Проверьте два значения руками, которых нет в тестах:

ТерминалПроверка вручную
python3 -c "from timefmt import to_mm_ss; print(to_mm_ss(59), to_mm_ss(61))"

Ожидаемый ответ: 0:59 1:01. Затем попросите объяснение: «Объясни простыми словами, как работает to_mm_ss».

Типичных сбоев здесь два. На Windows команда python3 может не находиться: используйте вариант с py -3 из блока выше. А если вместо 0:59 вы увидели 0:9 или 1:1, функция не дописывает ноль к секундам. Тесты этого не поймали, потому что такого значения в них нет. Скажите об этом агенту, попросите добавить тест для 59 секунд и только потом поправить функцию.

Вы увидите: тесты зелёные, ручная проверка совпала, а объяснение агента вам понятно.

Шаг 7 из 8

Что делать, если тест не проходит после правки агента?

Покажите агенту текст ошибки теста целиком и попросите объяснить причину до правки. Затем разрешите исправить один фрагмент и снова запустите тест. Не меняйте сам тест, чтобы он прошёл, если не уверены, что ожидание было записано неверно. Частая ловушка: тест подгоняют под код, а не наоборот.

ПромптКогда тест красный
Тест упал, вот полный текст ошибки: [вставьте сюда].
Сначала объясни причину простыми словами и ничего не меняй.
Потом предложи исправление одного фрагмента в timefmt.py.

Если после двух кругов не получилось, вернитесь к последнему сохранению командой git restore . и попросите агента переписать функцию с нуля. Подробнее про откат в модуле про рабочий цикл.

Вы увидите: вы умеете разобрать красный тест, не подгоняя его под код.

Шаг 8 из 8

Готово, если

Частые вопросы

Что такое тесты и зачем они нужны при работе с ИИ?

Тест это небольшая программа, которая проверяет, что код делает ожидаемое. Для работы с ИИ тесты особенно полезны: они объективно показывают, выполнена ли задача, и ловят случаи, когда агент написал красивый, но неверный код. Вам не нужно разбирать каждую строку, достаточно увидеть зелёный результат.

Как попросить ИИ-агента сначала написать тест, а потом функцию?

Сформулируйте задачу в два захода: сначала «напиши тест для функции, которая делает X, и убедись, что он падает», затем «теперь напиши функцию, чтобы тест прошёл». Тест фиксирует ожидание до кода, и вы проверяете работу по понятному критерию, а не на глаз.

Как проверить функцию, которую написала нейросеть?

Запустите тесты командой проекта и убедитесь, что они проходят. Затем проверьте пару крайних случаев руками, например пустой ввод. Попросите агента объяснить логику простыми словами. Если объяснение вас не убеждает, упростите задачу и повторите. Понимание результата важнее скорости: лучше потратить лишние пять минут, чем принять непонятный код.

Нужен ли для этой практики опыт в программировании?

Нет. Учебная функция очень простая, а все команды даны в шагах. Цель не в написании кода, а в том, чтобы увидеть, как проверяемый критерий делает работу с ИИ надёжнее. Если не знаете языка, используйте тот, что предложен в практике. Знать язык заранее не нужно.

Что делать, если тест не проходит после правки агента?

Покажите агенту текст ошибки теста целиком и попросите объяснить причину до правки. Затем разрешите исправить один фрагмент и снова запустите тест. Не меняйте сам тест, чтобы он прошёл, если не уверены, что ожидание было записано неверно. Частая ловушка: тест подгоняют под код, а не наоборот.

Если нужно глубже

Разобрать, где ИИ-помощник сэкономит время именно вам: бесплатный аудит, 30 минут.

Записаться →

Если хочется пройти путь вместе, есть менторство 1-на-1: 72 000 ₽ в месяц.

Подробнее →

Дальше

Связаться по делу

Заявка прилетит мне и в Telegram, и на почту. Отвечу в течение рабочего дня.

Куда удобнее ответить?
или сразу написать в Telegram →

Нажимая кнопку, даёте согласие на обработку персональных данных (оператор № 23-25-044738).