Сначала договоритесь о результате
Рассмотрим вымышленную задачу: определить количество упаковок для бумажных карточек, если в одну помещается шесть карточек. Последняя упаковка может быть заполнена частично. На вход подаётся целое неотрицательное количество карточек, на выходе ожидается целое количество упаковок. Отдельно зададим случай нуля: для нуля карточек требуется ноль упаковок. Отрицательные числа, дроби и текст считаются недопустимым вводом. Без этих условий модель может сделать собственные предположения. Тогда спор о правильности кода фактически окажется спором о неописанных требованиях.
Один обычный пример скрывает ошибку
Для двенадцати карточек ожидаются две упаковки. Но этот пример пройдёт и ошибочная реализация, которая делит количество на шесть и отбрасывает остаток. На семи карточках такая программа выдаст одну упаковку, хотя последняя карточка в неё не поместится. Поэтому полезно выбирать значения около границы: пять, шесть и семь. Правильные результаты соответственно одна, одна и две упаковки. Добавление нуля проверяет отдельную договорённость. Пример с тринадцатью карточками помогает убедиться, что правило работает и после следующей полной упаковки, а не только на первом переходе.
Ожидаемые ответы должны происходить из условия
Если попросить ИИ одновременно написать реализацию и вывести из неё ожидаемые ответы, одна ошибка может попасть в обе части. Совпадение программы с такими проверками создаст ложное ощущение надёжности. Сначала самостоятельно разложите карточки на бумаге по группам из шести. Полученные количества упаковок станут независимыми ожидаемыми ответами. Затем сравните с ними результат программы. При несовпадении возвращайтесь к конкретному условию: помещается ли весь набор и не добавлена ли лишняя пустая упаковка. Объяснение модели тоже проверяется. Убедительные слова об округлении не исправляют неверный результат. Важно проследить связь между требованием, примером и наблюдаемым выходом, а не оценивать уверенность формулировок.
Исправление должно сохранить прежние случаи
После изменения кода повторяют весь небольшой набор проверок. Поправка для семи карточек может случайно сделать ноль равным одной упаковке или добавить лишнюю упаковку для шести. Поэтому удачный ответ на вчерашний проблемный пример ещё не завершает проверку. Для настоящего приложения дополнительно оценивают безопасность, обработку ошибок и взаимодействие с остальной системой. Эта учебная задача показывает только проверку вычислительного поведения. Она не доказывает готовность большой программы к работе с реальными пользователями или данными.
Попробуйте на практике
Составьте независимый набор проверок для учебного расчёта упаковок на бумаге.
- Запишите правило вместимости, допустимые входные данные и отдельное поведение для нуля. Не оставляйте последнее на усмотрение реализации.
- Для значений 0, 5, 6, 7, 12 и 13 сгруппируйте воображаемые карточки по шесть и запишите ожидаемые ответы.
- Проверьте ошибочное правило деления с отбрасыванием остатка. Найдите примеры, которые обнаруживают его недостаток, и примеры, где ошибка остаётся незаметной.
- Добавьте недопустимые входы: отрицательное число, дробь и текст. Укажите ожидаемый отказ от расчёта, затем сохраните весь набор для повторной проверки после исправлений.
Как проверить результат. Ожидаемая последовательность равна 0, 1, 1, 2, 2, 3. Набор включает границы и недопустимый ввод; ответы получены из условия, а не скопированы из реализации.
Частые вопросы
Достаточно ли попросить ИИ проверить собственный код?
Это может помочь найти проблемы, но не заменяет независимые требования и проверки. Повторный ответ способен сохранить первоначальное неверное предположение.
Нужно ли проверять каждый возможный вход?
В этой задаче полезнее начать с характерных случаев, границ и недопустимых значений. Такой набор не доказывает отсутствие всех ошибок, но выявляет конкретные классы неправильного поведения.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.