Школа
Веб-разработка

Расскажите, как устроены тесты в Школе бюро

Расскажите, пожалуйста, как технически устроены тесты в Школе бюро «под капотом». Какой интерфейс у добавления тестов для авторов? Как отмечаете правильные ответы? Как собирается страница с тестом и в каком виде видны результаты?

Недавно студенты в Школе редакторов сделали сервис «Буст» (boost‑exam.ru). И я заметил, что там тесты работают очень похожим образом на то, как это выглядит в ваших тестах. Это натолкнуло меня ещё на несколько вопросов: используете ли какие‑то готовые решения, сервисы, скрипты?

В общем, интересно всё про тесты, очень любопытно :‑)

Даниил Соколовский
8 июля 2021
👁 5576   🗩6
Веб-разработка

Расскажите, как устроены тесты в Школе бюро

Расскажите, пожалуйста, как технически устроены тесты в Школе бюро «под капотом». Какой интерфейс у добавления тестов для авторов? Как отмечаете правильные ответы? Как собирается страница с тестом и в каком виде видны результаты?

Недавно студенты в Школе редакторов сделали сервис «Буст» (boost‑exam.ru). И я заметил, что там тесты работают очень похожим образом на то, как это выглядит в ваших тестах. Это натолкнуло меня ещё на несколько вопросов: используете ли какие‑то готовые решения, сервисы, скрипты?

В общем, интересно всё про тесты, очень любопытно :‑)

Даниил Соколовский
8 июля 2021
👁 5576   🗩6
Василий Половнёв
Технический директор бюро
Полезно
 12
12
Непонятно
  
Войдите в Бюросферу, чтобы голосовать

Даниил!

Мы не используем ничего готового, потому что не нашли решений, подходящих к нашей задаче. Во‑первых, школьные тесты не показывают правильные и неправильные ответы, но красят в красный вопросы, в которых студент допустил ошибку. Во‑вторых, тесты обновляются и изменяются, не ломая предыдущие сдачи: если студент сдал предыдущую версию теста, то её и нужно оценивать и показывать. В‑третьих, под капотом тесты используют тот же движок, что и сайт: было бы мучительно использовать для тестов не Джейд (Паг), а XML или JSON.

Школьный тест — это набор вопросов, внутри которых есть текстовые или графические ответы. Каждый вопрос и ответ автоматически получают идентификатор, который зависит от текста вопроса и состава ответов: если вопрос или ответы изменятся, поменяются и их идентификаторы. Под капотом — это тот же Джейд (Паг) и Карандашик:

Авторы помечают правильные ответы модификатором correct

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

  • ревизию теста,

  • текст и идентификаторы вопросов,

  • идентификаторы правильных и неправильных ответов.

Соответственно, сдача — это:

  • набор идентификаторов ответов, которые выбрал студент,

  • тест,

  • студент,

  • поток (например, «1 ступень 13 набора»),

  • дата сдачи,

  • дедлайн,

  • итоговый балл.

Когда студент открывает тест, бэкенд ищет подходящую ревизию: если студент уже сдавал тест, берём эту версию; если ещё нет — последнюю опубликованную. Когда ревизия найдена, бэкенд компилирует тест в ХТМЛ с ограничениями: вырезает комментарии автора, в которых могут быть намёки или пояснения, и информацию о правильных ответах.

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

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

P. S. Говоря о школьных тестах, нельзя не упомянуть читерство — списывание или совместную работу над тестами. С этой проблемой борется отдельная система мониторинга, которая использует как статистический, так и поведенческий анализ для выявления подозрительных сдач. К сожалению, эта система в несколько раз больше, чем весь бэкенд и фронтенд тестов: бороться с читингом сложнее и дороже, чем проверять знания тестами.

P. P. S. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.

Веб‑разработка
Полезно
 12
12
Непонятно
  
Войдите в Бюросферу, чтобы голосовать
Отправить
Поделиться
Поделиться
Запинить
Твитнуть

Комментарии

Сергей Зубков

А как вы избегаете возможности «рассмотреть» ответы в инспекторе браузра?

Александр Пушков

Сергей, модификатор correct вырезается при компиляции из Пага в ХТМЛ :‑)

Александр Пушков

Исходя из текста статьи, рискну предположить, что компиляция в Карандашике происходит для каждого запроса заново. Есть ли какие‑то причины не использовать перекомпиляцию в статический ХТМЛ?

Сергей Зубков

Александр, я глянул интереса ради в ‘Тренировочный тест’ и узрел div, показывающий правильный ответ к каждому вопросу:
...class="answer is__correct js__answer”…

Александр, мы используем прекомпиляцию в статичный ХТМЛ, например, для страниц проектов в портфолио: странички генерируются один раз, затем раздаётся статическая версия. Прекомпиляцию используем везде, где содержимое страницы статично и не меняется от пользователя к пользователю.

Тесты действительно компилируются в ХТМЛ на каждый запрос: страница с тестом меняется от пользователя к пользователю.

Сергей, здесь нет ошибки.

Тренировочные тесты — это тренажеры, на которых можно попробовать себя перед сдачей контрольных тестов. В отличие от контрольных тестов, в тренировочных показываются правильные и неправильные ответы, даются объяснения преподавателей и разрешена пересдача.

Тренировочные тесты целиком живут на клиенте, поэтому информация о правильных ответах хранится там же: в ДОМе.

Цель рубрики — обсуждение вопросов дизайна, веб-разработки, переговоров, редактуры и управления.
Комментарии модерируются. Мы публикуем комментарии, которые добавляют к уже сказанному новые мысли и хорошие примеры.

Рекомендуем другие советы