← Все статьи

Как создать SCORM-тест без редактора: нейросеть и готовый пример

Как создать SCORM-тест без редактора: нейросеть и готовый пример

Обновлено 4 ноября 2026 года.

Чтобы создать SCORM-тест, необязательно покупать редактор электронных курсов. Небольшой тест можно собрать из HTML, CSS и JavaScript, упаковать в ZIP и загрузить в LMS. Нейросеть поможет подготовить вопросы, изменить оформление и разобраться с кодом. Но проверять учебную логику и результат в системе обучения всё равно придётся автору.

В этой статье — обновлённый пример: пять вопросов, проходной балл, обратная связь и возобновление прерванной попытки. Его можно скачать, заменить вопросы и использовать как основу своего теста.

Скачать готовый SCORM-тест 1.2 · Скачать исходники с инструкцией и проверками · Скачать запрос к нейросети

Когда имеет смысл делать тест без редактора

Такой подход удобен для короткой проверки знаний, нестандартного интерфейса или небольшого учебного проекта. Все файлы остаются у вас: можно поменять логику, шрифты и вопросы, а затем перенести пакет в другую LMS с поддержкой нужной версии SCORM.

Обратная сторона — сопровождение. Когда тестов много, над ними работает команда и регулярно меняется содержание, готовый редактор может оказаться удобнее. А если перенос между платформами не нужен, сначала посмотрите на встроенный инструмент тестирования вашей LMS.

Нейросеть снижает порог входа в разработку, но не отменяет его. Полезно понимать, где лежат вопросы, как считается результат и что именно курс сообщает LMS. Для замены содержания в нашем примере достаточно отредактировать один файл.

Что находится внутри SCORM-пакета

У теста три основные части: страница с вопросами, код обмена данными с LMS и imsmanifest.xml. Манифест описывает структуру пакета и точку запуска; это не просто файл, который нужно положить рядом «для галочки». В ZIP он должен находиться в корне. Описание упаковки есть в документации Rustici Software.

imsmanifest.xml        ← в корне ZIP
index.html            ← страница теста
style.css             ← оформление
js/
  questions.js        ← вопросы, ответы и проходной порог
  engine.js           ← расчёт результата и состояние попытки
  scorm.js            ← связь с LMS, SCORM 1.2
  app.js              ← интерфейс
*.xsd                 ← схемы XML

Пример работает без сборщика, внешних библиотек, сервера с базой данных и запросов к нейросети. ИИ используется на этапе разработки. Для прохождения готового теста участнику не нужны аккаунт в нейросети и API-ключ.

Какую версию выбрать: SCORM 1.2 или SCORM 2004

Для скачиваемого примера я выбрал SCORM 1.2. Его поддерживает штатный SCORM-модуль Moodle. Полной поддержки SCORM 2004 в этом модуле нет — это прямо указано в документации Moodle. Для другой LMS уточните поддерживаемую версию у её администратора.

Нельзя превратить пакет 1.2 в 2004, просто поменяв цифру в манифесте. Отличаются API, поля данных и сам манифест. В частности, в SCORM 1.2 используется cmi.core.lesson_status, а в 2004 завершение и успешность разделены: cmi.completion_status и cmi.success_status.

В прежней версии статьи была ошибка в формуле для SCORM 2004: нормализованный балл умножался на 100. Для обычного теста cmi.score.scaled передаётся как доля: четыре правильных ответа из пяти — 0.8. Значение 80 сюда не подходит. Сверять названия и диапазоны полей удобно по справочнику SCORM API.

Как работает готовый пример

В тесте пять вопросов с одним правильным ответом. За каждый начисляется один балл. Проходной порог — 80%, то есть четыре ответа из пяти. До завершения участник может возвращаться к вопросам и менять выбор. После завершения видит результат и объяснение к каждому заданию.

  • После выбора ответа тест сохраняет состояние через LMS.
  • При повторном входе в ту же попытку восстанавливает ответы.
  • После завершения передаёт процент и статус passed или failed.
  • Завершённая попытка открывается для просмотра. Новую попытку запускают средствами LMS.
  • Если LMS отклоняет сохранение, тест показывает ошибку и позволяет повторить отправку.

При обычном открытии index.html включается деморежим: можно пройти вопросы, но результат не передаётся в LMS, а после перезагрузки ответы сбрасываются. Если API найден, но подключение завершилось ошибкой, тест сообщает об этом и не маскирует сбой деморежимом.

Это учебный шаблон: до 30 вопросов, один правильный вариант, одинаковый вес заданий, фиксированный порядок. В LMS передаётся общий результат; отчёта по каждому вопросу через cmi.interactions в этом примере нет. Правильные ответы находятся в скачиваемом JavaScript, поэтому такой тест не подходит для защищённого экзамена.

Шаг 1. Подготовьте вопросы с нейросетью

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

Подготовь 5 вопросов для проверки знаний.
Аудитория: [кто проходит обучение].
Учебная цель: [какое действие должен освоить участник].
Источник: [вставьте разрешённый к использованию материал].

Используй только факты из источника. Если информации не хватает,
задай вопрос, а не придумывай правило.
В каждом задании — короткая рабочая ситуация, 3 варианта
и ровно один правильный ответ. Неверные варианты должны быть
правдоподобными, без подсказок по длине или формулировке.
Добавь объяснение и укажи фрагмент источника, который подтверждает ответ.
Сначала выдай вопросы для проверки автором, без программного кода.

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

Шаг 2. Замените содержание в questions.js

Распакуйте исходники и откройте course/js/questions.js в текстовом редакторе. Название теста задаётся в title, короткое описание — в description, порог — в passingPercent. В массиве questions находятся задания:

{
  id: 'manifest',
  text: 'Где должен находиться imsmanifest.xml в SCORM ZIP?',
  options: [
    'В корне архива',
    'В папке с изображениями',
    'Только на сервере LMS'
  ],
  correct: 0,
  feedback: 'Манифест кладут в корень ZIP, без внешней папки.'
}

correct — индекс правильного варианта, начиная с нуля: первый вариант — 0, второй — 1, третий — 2. id должен быть уникальным; используйте латинские буквы, цифры, дефис и подчёркивание. Вопросы и пояснения можно писать по-русски.

Если не хочется редактировать JavaScript вручную, передайте нейросети файл-шаблон и утверждённые вопросы:

Замени только содержание course/js/questions.js моими вопросами.
Сохрани window.QUIZ, структуру объектов и названия полей.
correct — индекс с нуля. Сохрани один правильный ответ на вопрос.
Задай passingPercent: 80 и обнови version.
Не меняй engine.js, scorm.js, app.js и imsmanifest.xml.
Проверь уникальность id и соответствие correct вариантам ответа.
Верни целый файл questions.js, без сокращений и заглушек.

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

Шаг 3. При необходимости измените оформление

Попросите нейросеть работать с конкретным файлом и ограничьте задачу. Например: «Измени только style.css: примени эти цвета, увеличь шрифт и сохрани видимый фокус клавиатуры. Не меняй логику и связь с LMS». После правок проверьте длинные вопросы, варианты в несколько строк и узкое окно телефона.

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

Как тест передаёт результат в LMS

Файл scorm.js — небольшой адаптер именно для этого примера и SCORM 1.2. Он находит API, открывает сессию, сохраняет данные и завершает обмен. Для более широкого проекта можно рассмотреть готовую обёртку, например pipwerks SCORM API Wrapper; она поддерживает обе версии стандарта. Но обёртка сама по себе не исправляет неверные поля данных.

Для завершённой попытки наш адаптер передаёт такие значения:

// Фрагмент логики SCORM 1.2, не самостоятельная программа.
api.LMSSetValue('cmi.core.score.min', '0');
api.LMSSetValue('cmi.core.score.max', '100');
api.LMSSetValue('cmi.core.score.raw', String(percent));
api.LMSSetValue('cmi.core.lesson_status', passed ? 'passed' : 'failed');
api.LMSCommit('');

Ответы хранятся компактно в cmi.suspend_data. При выходе используется suspend, чтобы можно было вернуться к той же попытке, в том числе посмотреть итог. Кнопка завершения закрывает сессию через LMSFinish. Полный код также проверяет ответы API и передаёт время сессии.

Надпись «тест сдан» на экране — это ещё не подтверждение записи в журнале оценок. Поэтому в примере отдельно показывается, подтвердила ли LMS сохранение. Даже успешный ответ API затем нужно сопоставить с отчётом самой платформы.

Шаг 4. Соберите ZIP и загрузите его в LMS

  1. Для знакомства загрузите готовый демопакет SCORM 1.2. Его не нужно распаковывать перед импортом.
  2. Для своей версии распакуйте исходники, измените вопросы и проверьте course/index.html в браузере.
  3. При изменении названия обновите оба элемента title в course/imsmanifest.xml. Для самостоятельного нового теста задайте свой manifest identifier.
  4. Выделите содержимое папки course и создайте ZIP. Внутри сразу должны быть видны imsmanifest.xml, index.html и остальные файлы; внешней папки course быть не должно.
  5. В LMS создайте SCORM-активность и загрузите архив. В Moodle это элемент «Пакет SCORM»; название пункта зависит от языка интерфейса.
  6. Проверьте правила оценки, количество попыток и условия завершения в настройках LMS. Условия курса и условия активности должны согласовываться.

В архиве исходников есть также build.py. Если установлен Python 3, команда python3 build.py соберёт пакет из папки course без лишней внешней директории. Это удобно после повторных правок.

Шаг 5. Проверьте тест в своей системе обучения

Перед выдачей участникам пройдите несколько сценариев. Проверять нужно не только экран теста, но и сохранённые данные в LMS.

СценарийЧто ожидается
4 верных ответа из 580%, статус passed
3 верных ответа из 560%, статус failed
Есть пропущенные вопросыТест предлагает ответить на них, итог не отправляется
Выбрать ответы, выйти и вернуться в ту же попыткуВыбор восстановлен; попытка ещё incomplete
Снова открыть завершённую попыткуПоказывается итог, результат не сбрасывается
Запустить новую попытку через LMSНовый тест начинается без старых ответов

Что проверено в приложенном примере: расчёт результата, сохранение и восстановление состояния, ошибки API и завершение сессии — автоматическими проверками; манифест — по XSD; интерфейс, возврат к ответам и повторная отправка после отказа — в Chrome на локальном имитаторе SCORM API. Проверка в конкретной LMS и официальная сертификация SCORM не проводились. Локальный стенд и проверки включены в исходники.

Что делать, если пакет не работает

  • LMS не принимает ZIP. Проверьте наличие манифеста в корне и соответствие версии стандарта возможностям платформы.
  • В LMS виден деморежим. Убедитесь, что пакет запущен именно как SCORM-активность, а не обычная ссылка на HTML. Проверьте журнал SCORM API и ошибки браузера.
  • Балл виден в тесте, но отсутствует в отчёте. Посмотрите ошибки сохранения, журнал API и настройки оценивания активности.
  • Ответы не восстанавливаются. Убедитесь, что LMS открывает ту же попытку и после её начала не менялся банк вопросов.

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

Начните со скачиваемого примера, замените содержание и проверьте его в своей LMS. Так вы получите небольшой тест, устройство которого понимаете и можете менять под свою учебную задачу.