Skip to content

ПР13. Регрессионный тест и кандидат на выпуск

Работа относится к проектной траектории. Рассчитывайте на одну лабораторную пару и примерно 2,5 часа самостоятельной доработки.

Цель

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

Критерии зачтено

Работа зачтена, когда выполнены все три стадии и прошла автопроверка:

СтадияЧто требуется
1 · Собратьчистая сборка, открытый сценарий, повтор bag-файла/fixture и отчёт модуля оценки
2 · СломатьRC меняет промпт или конфигурацию без сброса кэша либо хранит только агрегат
3 · Доказатьверсии и исходные результаты в provenance.json, регрессионный тест и повтор записи зелёные, секреты не попали в файлы
Автопроверкаcheck_practice.py PR13 проверит evidence/pr13/{clean-build.txt,replay.txt,provenance.json,fault-test.txt} и заявления public_tests_passed, defect_reproduced, defect_fixed, replay_verified

Что получится

Вы соберёте систему с нуля одной командой, зафиксируете один сбой тестом и повторите его по записи. Итоговый отчёт будет связан с версиями кода, модели, рабочего промпта, конфигурации и данных.

Пакеты и понятия

  • RC (release candidate) — конкретный набор commit + образ + конфигурация, который претендует на выпуск.
  • Чистая сборка — сборка в свежей копии (CI или контейнер) без локальных build/install/log: она выявляет зависимость от локальных файлов.
  • Provenance (происхождение) — JSON, связывающий результат с его входами: commit, baseline lock, хэши зависимостей, версии модели, промпта, конфигурации и данных, декларация ИИ.
  • Replay — повтор сохранённой записи/fixture для пересчёта метрик без повторного запуска живого процесса.

Что сделать

  1. Выполните чистую сборку в CI, прогон открытого сценария, повтор bag-файла/fixture и формирование отчёта модуля оценки одной командой.
  2. Создайте provenance.json: commit, baseline lock, хэши зависимостей, версии модели, промпта, конфигурации и данных, декларация ИИ. Рабочий промпт VLM хранится как часть системы, полные AI-чаты — нет.
  3. Неисправный RC меняет промпт или конфигурацию без сброса кэша либо сохраняет только агрегат. Добавьте пропущенную версию и исходные результаты и закройте регрессионным тестом: тот же FAIL/PASS-тест, что для ручной правки, проходит и для AI-предложенного изменения.

Сохраните evidence/pr13/{clean-build.txt,replay.txt,provenance.json, fault-test.txt,report.json}.

Проверка

bash
colcon build --cmake-clean-cache
colcon test --event-handlers console_direct+
python3 /path/to/course/tools/check_practice.py PR13 --submission .

Готово, если чистая копия воспроизводит отчёт, секреты не попали в файлы, а изменение, предложенное ИИ, прошло независимый тест. Дополнительно: SBOM и подпись.

Как работаем на лабораторной

После сравнения политик запустите инструкцию из чистой копии, как новый разработчик. Затем исправьте первую проблему сборки или добавьте недостающее поле в сведения о происхождении.

Общий порядок: runbook · troubleshooting.

Если использовался ИИ, применяются правила курса.

Минимальная проверка исправления

  1. Один и тот же минимальный пример даёт ожидаемый сбой на исходном SHA.
  2. После правки он даёт ожидаемый результат, а не только код завершения 0.
  3. Полный набор регрессионных тестов и повтор записи не находят побочного эффекта.
  4. Чистая копия или контейнер повторяет результат без локальных build/install/log.
  5. Файл происхождения связывает commit, среду, входы, модель, промпт и конфигурацию с исходным выводом.

Полные AI-чаты не сохраняются. Скрытые fixtures, секреты и персональные данные не передаются внешним сервисам.

Справочники

Учебные материалы: CC BY 4.0 · Код: Apache-2.0