Услуги и решения

Разработка системы онлайн-тестирования для оценки кандидатов

Отрасль проекта

Корпоративное ПО

Технологии

Java (Spring), React JS

О проекте

Разработали систему тестирования для оценки кандидатов, которая позволяет проверять навыки и компетенции специалистов. Теперь HR и рекрутеры могут быстро создавать разные виды тестов — от классических вопросов до заданий с программированием. Система формирует уникальные тесты для каждого кандидата, фиксирует результаты и собирает полную статистику. Интерфейс адаптирован под любые устройства, данные интегрируются с существующей платформой клиента.

Проблема


В рамках NDA мы не можем раскрывать информацию о компании-заказчике, но расскажем о созданном решении и его возможностях.


У клиента есть платформа онлайн-рекрутинга. Ранее для тестирования кандидатов на работу использовался сторонний сервис. Однако со временем возникли сложности:


  • Любая доработка требовала участия сторонних разработчиков, что затягивало процесс и увеличивало затраты.
  • Система не предусматривала масштабируемость, необходимую для новых задач.

В итоге было принято решение создать собственный сервис, при этом:


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

Одним из ключевых элементов тестирования стало PST-тестирование (заочные тесты, подтверждающие профессиональные навыки соискателей). Кандидаты, успешно их прошедшие, получали зелёный маркер в профиле, что помогало работодателям быстрее находить подходящих специалистов.


Система включала два типа заданий:


  • PST – классические тесты с вопросами (например, выбор правильного ответа).
  • Практические задания, например, написание кода на Python и Java.

Компания обратилась к нам, основываясь на успешном опыте совместных проектов, для разработки именно PST-части системы.


Особые требования


Аналитика и статистика


Методологам, разрабатывающим тесты, требовались инструменты для анализа вопросов:


  • Частота использования – если вопрос используется слишком часто, он может «утечь» в сеть и стать неэффективным.
  • Процент правильных/неправильных ответов – если вопрос слишком сложный или, наоборот, слишком лёгкий, его стоит пересмотреть.
  • Статистика подтверждения навыков – показатели успешных и провальных попыток тестирования.

Интеграция с существующей системой


Компания уже реализовала часть функционала для проверки кода на Python и Java. Нам нужно было учесть эти наработки, наладить взаимодействие с внутренними командами и встроить практическую часть в общую систему.


Бизнес-задачи


1. Разработка интерфейса для создания, редактирования и управления тестами.
2. Поддержка различных типов вопросов: одиночный/множественный выбор, программирование, формулы, мультимедиа.
3. Интеграция с существующей инфраструктурой, чтобы данные передавались бесшовно.
4. Сохранение всей предыдущей статистики пользователей.
5. Адаптация системы для работы в мобильных приложениях и браузерах.
6. Добавление инструментов аналитики для методологов.


Решение: разработка системы pst-тестирования для оценки кандидатов


«Наша цель заключалась в создании единой, хорошо интегрированной системы, которая бы объединяла все эти процессы и была удобной для всех участников: методологов, пользователей и внутренней команды клиента.» Виталий Трясцин, руководитель проекта


Аналитика и планирование


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


  • Создание вопросов и правил их генерации.
  • Отображение тестов для пользователей.
  • Фиксация результатов и передача данных в систему статистики.


Дорожная карта проекта разделена на три больших этапа

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


1. Контент-менеджеры добавляют вопросы в базу, указывая к ним теги и правила.
2. Система автоматически формирует персонализированный тест для каждого пользователя.
3. Пользователь проходит тестирование, а его результаты отправляются в аналитику.


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


  • Как выглядит список заданий.
  • Как создаются тесты и какие есть настройки.
  • Как пользователи будут взаимодействовать с системой.

Этот концепт позволил ещё до начала разработки показать заказчику, что именно он получит, и избежать возможных недопониманий.



Концепт-проект системы для удобного согласования с заказчиком

Правила генерации тестов


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


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


  • синтаксис,
  • переменные,
  • функции,
  • циклы и т. д.


Создание списка с заданиями со стороны администратора (скриншот тестового интерфейса, контент носит иллюстративный характер)

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



Примеры тегов, которые присваиваются вопросам

Для удобства администрирования мы внедрили систему управления статусами:


  • Черновик – новый вопрос сохраняется в этом статусе, пока методологи не проверят его. Это предотвращает случайное использование недоработанных заданий.
  • Активен – после проверки методологами онстановится доступным для тестов.
  • Архив – если вопрос устарел, содержит ошибки или больше не нужен, он перемещается в архив. Там он остаётся доступным для статистики и истории тестов.


Пример кнопок для управления статусами вопроса

Методологи могут настраивать правила выбора вопросов. Например, тем по Python должен включать в себя:


  • 5 вопросов – по переменным,
  • 3 вопроса – по объектам,
  • 2 вопроса – по циклам.

Когда пользователь запускает тест, система на основании правил создаёт уникальный набор вопросов, называемый контекстом:


  • Контекст сохраняется в профиле пользователя.
  • Вопросы скрыты от пользователя, но доступны методологу для анализа прогресса.

«Эти правила важны по нескольким причинам. Во-первых, контекст позволяет получить уникальный набор заданий. Это важно чтобы разные пользователи получали разные тесты и не могли друг другу подсказать верные ответы. Во-вторых, благодаря случайной выборке вопросов из базы, система всегда обновляет задания, что снижает риск утечек или повторений. И наконец, контроль качества, который включает управление статусами и их архивацию, помогает поддерживать актуальность, а также сохраняет данные о пользователях для анализа и улучшения тестирования. Сохранение контекста также важно для обработки рекламаций. Например, если пользователь не согласен с результатами своего теста - то методолог легко может понять какие именно вопросы были у, как он на них отвечали. Это позволит определить, оправдана ли жалоба пользователя или нет.» Виталий Трясцин, руководитель проекта


Время прохождения


Каждому тесту устанавливается ограничение по времени. Например, 10 вопросов – 10 минут. Однако система учитывает возможные сбои и непредвиденные ситуации:


  • Если кандидат случайно закрыл вкладку или возникли проблемы с интернетом, прогресс сохраняется.
  • Если пользователь успел ответить правильно на достаточное количество вопросов (например, 8 из 10), но не уложился в лимит, тест всё равно может быть засчитан как пройденный.

Дополнительный функционал


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



Поддержка видео и аудио вопросов (скриншот тестового интерфейса, контент носит иллюстративный характер)

Ранее система не поддерживала математические выражения, что усложняло создание технических тестов. Мы внедрили поддержку LaTeX — мощного инструмента разметки, который позволяет чётко и аккуратно отображать формулы. Чтобы методологам не приходилось разбираться в технических тонкостях, мы разработали удобный редактор, позволяющий добавлять математические выражения без знания кода LaTeX. Это значительно упростило процесс создания вопросов и сделало систему более гибкой.



Сверху — математические выражения в виде кода LaTeX, внизу — привычная нам запись

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



Так выглядит правильно оформленный код в вопросе (скриншот тестового интерфейса, контент носит иллюстративный характер)

Адаптивность


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



Мобильная версия (скриншот тестового интерфейса, контент носит иллюстративный характер)

Результат


Мы создали сервис, который легко интегрируется в текущую инфраструктуру клиента. Добавили новые функции, сделав систему удобнее.


Что улучшилось


  • Больше нет ограничений старого сервиса. Система легко адаптируется: можно добавлять новые типы заданий и интегрировать другие сервисы.
  • Удобство управления. Методологи могут сами создавать тесты, добавлять вопросы с кодом, изображениями, видео и формулами, а также следить за статистикой.
  • Бесшовная интеграция. Сервис встроен в экосистему компании, что позволяет сохранять данные, накапливать статистику и добавлять новые функции.
  • Сохранность данных. При переходе на новую систему все тесты и результаты пользователей были сохранены.
  • Адаптивность. Тестирование удобно проходить как на компьютере, так и на смартфоне.

Система гибкая и поддерживает различные типы заданий:


Классические:


  • Одиночный выбор (Single Choice).
  • Множественный выбор (Multiple Choice).
  • Сопоставление (Matching).
  • Заполнение пропусков (Fill in the Blanks).
  • Свободное поле ввода (Line Input/Answer).
  • Установление порядка/последовательности.

Задачи по программированию:


  • Написание кода с проверкой результатов выполнения.
  • Работа с предварительно подготовленным кодом (прекод).
  • Решение задач с пустого поля (без прекода).

Стек


Java, React, GitHubFlow




Этот кейс — пример современного, удобного и масштабируемого онлайн-решения для тестирования сотрудников, позволяющего проводить оценку навыков и компетенций.

Расскажите нам о своей задаче
Мы немедленно возьмём её в работу
Алексей Кузнецов
hello@nordclan.com