Система тестирования и автоматической оценки результатов
Evalyze — iOS-приложение для создания, прохождения и автоматической оценки тестов с поддержкой групп пользователей и аналитики результатов.
Проект разработан в рамках хакатона на 3 курсе. Основной фокус — построение архитектурно организованной системы тестирования с разделением сущностей, сервисного слоя и persistence-модели.
- Создание тестов.
- Добавление вопросов разных типов.
- Редактирование структуры теста.
- Управление длительностью и параметрами прохождения.
- Сохранение ответов пользователя.
- Поддержка разных типов вопросов.
- Связь ответов с конкретным пользователем.
- Фиксация результатов прохождения.
- Расчёт результатов на основе правильных ответов.
- Формирование итогового результата.
- Сохранение истории тестирования.
- Объект
TestEvaluationServiceдля изоляции логики оценки.
- Создание групп.
- Привязка тестов к группе.
- Управление участниками.
- Разделение доступа.
- Регистрация и авторизация.
- Хранение информации о пользователе.
- Разграничение ролей (при необходимости).
Проект построен с разделением на слои:
Evalyze/
App/
Scenes/
Entity/
Services/
Utilities/
Persistence:
CoreData (Evalyze.xcdatamodeld)
Tests:
EvalyzeTests
EvalyzeUITests
Основные сущности:
- Test
- Question
- User
- Group
- StudentTestAnswer
- TestResult
Модель данных построена с использованием CoreData.
- TestService
- QuestionService
- GroupService
- StudentTestAnswerService
- TestEvaluationService
- NetworkClient
- APIError
Сервисный слой инкапсулирует бизнес-логику и работу с сетью.
- CoreData-модель (
Evalyze.xcdatamodeld). - Связи между тестами, вопросами и результатами.
- Хранение ответов пользователей.
- История результатов.
- Реализация
NetworkClient. - Модель обработки ошибок (
APIError). - Подготовка к взаимодействию с backend.
- Интеграция с Firebase (GoogleService-Info.plist).
- Swift
- UIKit
- CoreData
- Firebase
- Networking
- Unit tests
- UI tests
- Разделение сущностей и сервисов.
- Инкапсуляция логики оценки в отдельном сервисе.
- Изоляция сетевого слоя.
- Чёткая модель данных.
- Разделение UI и бизнес-логики.
- Расширение типов вопросов.
- Добавление аналитики по группам.
- Ролевая модель доступа.
- Онлайн-панель преподавателя.
- Поддержка экспорта результатов.
Проект разработан в команде:
- Матвеенко Эльвира
- Самсонов Артём
- Малова Олеся
- Рычагов Михаил
3 курс направления «Программная инженерия».