Пример LINQ-запроса, выполняемого для получения всех групп и тестируемых:
var audiences = db.Audiences
.Where(a => a.AccountId == account.AccountId)
.Include(a => a.TestTakers.Select(tt => tt.ContactInfo))
.ToList()
.Select(a => new JsonAudience
{= a.AudienceId,= a.Name,= a.TestTakers.ToDictionary(tt => tt.TestTakerId.ToString(), tt => new JsonAudienceTestTaker
{= tt.TestTakerId,= tt.EMail,= new JsonAudienceTestTakerContactInfo
{= tt.TestTakerId,= tt.ContactInfo.FirstName,= tt.ContactInfo.LastName,= tt.ContactInfo.Gender,= tt.ContactInfo.DateOfBirth.ToString("dd.MM.yy"),= tt.ContactInfo.CompanyName,= tt.ContactInfo.DepartmentName,= tt.ContactInfo.PositionName,= tt.ContactInfo.Location
}
})
});
В качестве хранилища данных аналитической системы выступает реляционная БД с типом схемы “снежинка”. Ее схема представлена на рис. 10.
Данное хранилище имеет две таблицы фактов - FactAnswer и FactQuestionResult. Первое предназначено для достижения наибольшей гранулярности данных, а именно для хранения самых подробных данных о прохождении теста - об отдельных ответах. Вторая таблица предназначена для записи результатов ответа на определенный вопрос.
Первое измерение DimTestTaker - данные о тестируемом. Второе измерение - цепочка от варианта ответа до
теста (DimOption - DimQuestions - DimTest) хранит данные,
соответственно, о варианте ответа, вопросе и тесте.
Рисунок 10 "Схема РХД"
Потоки данных из БД источника в РХД реализованы с использованием ПО MS SSIS. Порядок загрузки сущностей представлен на схеме
потока управления пакета Integration Services (рис.
11).
Рисунок 11 "Схема потока управления пакета загрузки MS SSIS"
Сначала загружаются тестируемые (TestTakers) в три этапа (рис. 12):
• Выгрузка данных из БД в нужном формате (SQL-запрос к источнику)
• Проверка на уже существующие вхождения (уточняющий запрос к РХД)
• Вставка новых строк (SQL-запрос к РХД)
Рисунок 12 "Схема загрузки данных об участниках теста"
Остальные сущности загружаются аналогичным образом.
В рамках преддипломной практики в компании была разработана система
онлайн-тестирования и аналитическая система. Затем был разработан OLAP куб, который позже был заполнен
данными из источника данных - реляционного хранилища данных. Схема куба
представлена на рис. 13.
Рисунок 13 "Схема OLAP-куба"
Разработанный куб может быть использован для выполнения MDX-запросов. Например, такой запрос выведет результаты конкретного теста по каждому участнику и по каждой секции теста:
WITH[Measures].[Result] AS
* (1 - [Measures].[Is Wrong - Fact Question Result] / [Measures].[Число Fact Question Result])
non empty [Dim Test Taker].[Full Name].[Full Name] on rows,
([Dim Option].[Section Name].[Section Name], [Measures].[Result]) on columns[Test System DW][Dim Option].[Test Id].&[2]
Использовать результаты выполнения аналитических запросов можно программно из «бэкенд» с помощью библиотеки “ADOMD.NET”. Ее использование заключается в установлении соединения с удаленным OLAP-кубом, передачи запроса и получения результатов в виде специального объекта. Драйвер поддерживает только двумерные данные, поэтому в качестве языка запросов используются MDX.
Визуализация результатов аналитических запросов осуществляется с помощью различных клиентских JS-библиотек для отрисовки на веб-странице интерактивных графиков и диаграмм.
Для отладки системы был составлен тест на определение общей эрудиции из 20 вопросов, разделенных на пять различных секции по тематике вопросов:
· Литература
· Математика
· Физика
· География
· Биология
В каждой из секций было по 5 вопросов различных типов - с единственным ответом и несколькими возможными вариантами ответа.
В систему были добавлены четыре группы тестируемых:
· Одногруппники
· Бывшие одноклассники
· Товарищи по военной кафедре
· Друзья
На тест было приглашено более 75 человек, из которых 55 прошли тест. Данные об ответах участников были загружены в хранилище данных. Для анализа результатов были использованы некоторые MDX-запросы.
Результат выполнения MDX-запроса для вывода процента правильных ответов по каждому участнику и по каждой секции теста представлен на рис. 14.
WITH[Measures].[Result] AS
* (1 - [Measures].[Is Wrong - Fact Question Result] / [Measures].[Число Fact Question Result])
non empty [Dim Test Taker].[Full Name].[Full Name] on rows,
([Dim Option].[Section Name].[Section Name], [Measures].[Result]) on columns[Test System DW][Dim Option].[Test Id].&[2]
Рисунок 14 “Результаты выполнения MDX-запроса в среде “MS SQL Server Management Studio”
Этот запрос можно модифицировать и получить статистику результативности в
каждой из секций теста по каждой группе участников.
Рисунок 10 “Средние результаты по группам и предмету вопроса”
Следующий запрос выведет частоту ошибки в вопросах:
select non empty [Dim Option].[Question Text].[Question Text] on rows,
([Dim Test Taker].[Group Name].[All], [Measures].[Is Wrong - Fact Question Result]) on columns[Test System DW][Dim Option].[Test Id].&[2]
По результатам данного запроса можно получить рейтинг самых сложных вопросов. Лидеры этого рейтинга:
. Невесомость - это состояние тела, при котором ... (89% ошибок)
. Какими словами начинается письмо Онегина к Татьяне? (78% ошибок)
. Какие из этих частиц не имеют заряда? (74% ошибок)
Место самого простого вопроса разделили 2 вопроса из разделов География и Биология с менее 11% доли ошибок:
. Столица США - ...
. Что такое цитоплазма?
Следующий MDX-запрос позволит выявить самые сложные секции теста по группам тестируемых:
select non empty [Dim Option].[Section Name].[Section Name] on rows,
([Dim Test Taker].[Group Name].[Group Name], [Measures].[Is Wrong - Fact Question Result]) on columns[Test System DW] where [Dim Option].[Test Id].&[2]
В качестве результата получается таблица с числом ошибок в зависимости от
предмета вопроса (секции теста) и группы тестируемых:
Таблица 2 “Общее число сделанных ошибок в тесте по группам и секции теста”
|
|
11th grade mates |
Friends |
Group BI132 |
Military Department |
|
Физика |
25 |
14 |
43 |
29 |
|
Литература |
20 |
12 |
31 |
22 |
|
География |
15 |
3 |
24 |
11 |
|
Математика |
19 |
4 |
16 |
10 |
|
Биология |
12 |
3 |
17 |
15 |
Как видно, абсолютными лидерами по числу ошибок являются разделы “Физика” и “Литература”.
Спроектированная аналитическая система позволяет гибко использовать полученные в ходе тестирования данные для решения различных аналитических задач. При этом не играет роли выбор названий Секций теста, самого теста или групп участников - MDX-запросы с минимальными модификациями могут быть использованы для оценки других тестов - необходимо только заменить в запросе ID теста на необходимый.
В ходе данной выпускной работы была проанализирована проблема тестирования в корпоративной среде и образовании. Анализ показал, что тесты используется для проведения различных экзаменов и олимпиад и для оценки результативности сотрудников в ассессмент-центрах.
На основании проблем, связанных с проведением тестирования с использованием бумажных бланков, были выделены требования к разрабатываемой системе онлайн-тестирования. Во-первых, было принято решение о максимизации скорости работы пользовательского интерфейса для достижения преимущества перед существующими онлайн-системами. Во-вторых, для достижения цели работы (а именно для реализации аналитических возможностей) было решено использовать OLAP-подход для анализа результатов теста.
В работе был дан обоснованный выбор набора технологий, используемых для разработки веб-сайта и аналитической системы. Анализ двух фреймворков React и Angular позволил сделать выводы о том, что первый из них куда более удобен для разработки системы онлайн-тестирования. Он отличается скоростью за счет использования умного механизма по манипуляции DOM, а также широкими возможностями по работе с данными и расширению сторонними библиотеками. В роли аналитической системы выступил Microsoft SQL Server вместе с набором инструментов для аналитики BI Tools. Серверным языком программирования стал C#, так как он может быть интегрирован с аналитической системой. Доказано, что обе части программного обеспечения могут быть использованы в качестве технологической основы для проектируемой онлайновой системы тестирования.
Инновацией разрабатываемой системы является выбор быстрого JS-фреймворка для разработки пользовательского интерфейса и BI-подход для анализа результатов теста. Фронтенд системы представляет из себя одностраничное приложение, при навигации по которому веб-браузер не перезагружает страницу полностью.
Конечный продукт позволит руководителям, учителям и другим людям, участвующим в тестировании, повышать свою эффективность, сводя к минимуму время, затрачиваемое на создание и реализацию тестов. Он также должен улучшить качество тестирования, предоставляя аналитические инструменты для своих пользователей.
В результате этого проекта создано онлайн-приложение, которое позволит его пользователям создавать тесты, подписываться на аудиторию и просматривать результаты тестов.
В ходе тестирования функционала системы был проведен экзамен нескольких групп людей с использованием специально созданного в системе теста для проверки общей эрудиции. Тестирование показало, что система опубликования результатов теста, выгрузки их в хранилище данных и выполнения MDX-запросов работает как ожидалось. С точки зрения аналитической системы, все задачи, поставленные в ходе инициации проекта системы онлайн-тестирования, выполнены.
Проект, направленный на создание онлайн-системы тестирования знаний с
аналитическими инструментами, реализован с использованием фреймворка React.JS и MS SQL Server на локальной машине под управлением Windows. Исходный код программы опубликован
в репозитории GitHub по ссылке:
https://github.com/NogaMan/testSystem
Список использованных источников
онлайн тестирование фреймворк
1. Гектор Гарсиа-Молина, Джеффри Ульман, Дженнифер Уидом. Системы Баз данных. Полный курс. Издательство Вильямс, 2004г.
2. Advanced Users FAQ. Pentaho Data Integration Documentation. Электронный ресурс. Дата посещения 24 февраля 2017г. http://wiki.pentaho.com/display/EAI/Advanced+Users+FAQ
3. American Psychological Association, Assessment Centers Help Companies Identify Future Managers. Электронный ресурс. Дата посещения 27 апреля 2017г. http://www.apa.org/research/action/managers.aspx
4. Architecture. Angular core documentation. Электронный ресурс. Дата посещения 27 апреля 2017г. https://angular.io/docs/ts/latest/guide/architecture.html
5. Chua Yan Piaw. Replacing Paper-based Testing with Computer-based Testing in Assessment: Are we Doing Wrong? Электронный ресурс. Дата посещения 27 апреля 2017г. http://www.sciencedirect.com/science/article/pii/S1877042812050549
6. Kyle Simpson. You Don’t Know JS. Серия книг. 2013-2017гг
. Microsoft TechNet. SQL Server and ADO.NET. Электронный ресурс. Дата посещения 10 мая 2017г. https://msdn.microsoft.com/en-us/library/kb9s9ks0(v=vs.110).aspx
8. Microsoft TechNet. Developing with ADOMD.NET. Электронный ресурс. Дата посещения 10 мая 2017г. https://technet.microsoft.com/en-us/library/ms123483(v=sql.110).aspx
9. Mike Wasson. Enabling Cross-Origin Requests in ASP.NET Web API 2. Электронный ресурс. Дата посещения 7 мая 2017г. https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api
10. Mondrian FAQ. Pentaho Mondrian Documentation. Электронный ресурс. Дата посещения 27 апреля 2017г. http://mondrian.pentaho.com/documentation/faq.php
11. Optimizing Performance. React advanced guides. Электронный ресурс. Дата посещения 27 апреля 2017г. https://facebook.github.io/react/docs/optimizing-performance.html
12. Paulraj Ponniah. Data warehousing fundamentals for IT professionals. Издательство John Wiley & Sons, Inc, 2011.
. SQL Server 2012 Books Online. SQL Server 2012 Tutorials: Analysis Services - Multidimensional Modeling. 2012.
. SQL Server 2016 Technical Documentation // MSDN. Электронный ресурс. Дата посещения 27 апреля 2017г. https://msdn.microsoft.com/en-us/library/ms141026.aspx