|
@@ -0,0 +1,1784 @@
|
|
|
+Министерство образования, науки и молодежной политики Нижегородской области
|
|
|
+Государственное бюджетное профессиональное образовательное учреждение "Нижегородский Губернский колледж"
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ ОТЧЕТ ПО УЧЕБНОЙ ПРАКТИКЕ
|
|
|
+
|
|
|
+ПМ.02. Осуществление интеграции программных модулей
|
|
|
+Специальность 09.02.07 Информационные системы и программирование
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+Выполнил
|
|
|
+
|
|
|
+Студент ____________
|
|
|
+А. Р. Чернощекова
|
|
|
+ [подпись]
|
|
|
+
|
|
|
+Студент ____________
|
|
|
+А. С. Шапкин
|
|
|
+ [подпись]
|
|
|
+
|
|
|
+Студент ____________
|
|
|
+А. Н. Щекалева
|
|
|
+ [подпись]
|
|
|
+
|
|
|
+Руководители ________
|
|
|
+Л. В. Мухина
|
|
|
+ [подпись]
|
|
|
+
|
|
|
+ _________
|
|
|
+Ю. С. Мамшева
|
|
|
+ [подпись]
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Нижний Новгород
|
|
|
+ 2024
|
|
|
+ СОДЕРЖАНИЕ
|
|
|
+ВВЕДЕНИЕ 3
|
|
|
+РАЗРАБОТКА И ОФОРМЛЕНИЕ ТЕХНИЧЕСКОГО ЗАДАНИЯ 5
|
|
|
+РАЗРАБОТКА ПЛАНОВОЙ ДОКУМЕНТАЦИИ 11
|
|
|
+РАЗРАБОТКА UML-ДИАГРАММ 13
|
|
|
+1. Диаграмма вариантов использования (use case diagram) 13
|
|
|
+2. Диаграмма последовательности (sequence diagram) 14
|
|
|
+3. Диаграмма классов (class diagram) 16
|
|
|
+4. Диаграмма коммуникации (communication diagram) или диаграмма кооперации (collaboration diagram) 18
|
|
|
+5. Диаграмма деятельности (activity diagram) 19
|
|
|
+6. Диаграмма состояния (state chart diagram) 21
|
|
|
+7. Диаграмма развертывания (deployment diagram) 22
|
|
|
+8. Диаграмма компонентов (component diagram) 23
|
|
|
+9. Диаграмма потоков данных (data flow diagram) 25
|
|
|
+РАЗРАБОТКА ТЕСТОВОЙ ДОКУМЕНТАЦИИ 27
|
|
|
+1. Тестовый план для ИС <<Учебная часть>> 27
|
|
|
+2. Тестовая стратегия для ИС <<Учебная часть>> 31
|
|
|
+3. Тестовый сценарий для ИС <<Учебная часть>> 32
|
|
|
+4. Тестовый набор для ИС <<Учебная часть>> 34
|
|
|
+РАЗРАБОТКА БАЗЫ ДАННЫХ 36
|
|
|
+1. Описание предметной области 36
|
|
|
+2. Описание основных сущностей предметной области 36
|
|
|
+РАЗРАБОТКА ПРОГРАММНЫХ МОДУЛЕЙ 40
|
|
|
+ТЕСТИРОВАНИЕ ИНТЕРФЕЙСА СИСТЕМЫ 41
|
|
|
+1. Планирование тестирования UI/UX 44
|
|
|
+2. Функциональное тестирование UI/UX 46
|
|
|
+3. Адаптивное тестирование UI/UX 53
|
|
|
+4. Тестирование пользовательского опыта (UX) 56
|
|
|
+5. Тестирование производительности интерфейса 57
|
|
|
+6. Тестирование безопасности интерфейса 57
|
|
|
+ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 59
|
|
|
+ЗАКЛЮЧЕНИЕ 67
|
|
|
+ПРИЛОЖЕНИЕ А 69
|
|
|
+ПРИЛОЖЕНИЕ Б 71
|
|
|
+
|
|
|
+
|
|
|
+ ВВЕДЕНИЕ
|
|
|
+ Учебная практика является разделом рабочей программы профессионального модуля ПМ 02. Осуществление интеграции программных модулей.
|
|
|
+ Учебная практика направлена на формирование умений, приобретение практического опыта для последующего освоения общих и профессиональных компетенций и реализуется в форме практической подготовки.
|
|
|
+ Цель учебной практики - закрепление и углубление знаний, приобретенных в процессе изучения профессиональных дисциплин данного модуля, формирование необходимых профессиональных навыков и качеств будущего специалиста.
|
|
|
+ Задачи учебной практики:
|
|
|
+ Приобретение практических навыков работы с современными информационными системами и программным обеспечением и реализация на практике теоретических знаний;
|
|
|
+ Ознакомление студентов с методами и технологиями разработки программного обеспечения;
|
|
|
+ Практическое применение знаний, полученных в теоретическом обучении, на практике;
|
|
|
+ Овладение навыками тестирования, отладки и оптимизации программного кода;
|
|
|
+ Изучение процесса управления проектами в области информационных технологий;
|
|
|
+ Повышение профессиональной компетенции и уверенности в своих знаниях и навыках;
|
|
|
+ Формирование детального представления о будущей профессии;
|
|
|
+ Приобретение навыков в работе с документами, регламентирующими будущую профессиональную деятельность;
|
|
|
+ Получение представления об этике профессиональной коммуникации;
|
|
|
+ Сбор и обработка материалов, необходимых для составления отчета по практике.
|
|
|
+Этапы проходимой учебной практики:
|
|
|
+ Подготовительный этап - ознакомление с программой учебной практики и графиком ее прохождения.
|
|
|
+ Основной этап - выполнение заданий в соответствии с графиком.
|
|
|
+ Заключительный этап - формирование итогового отчета и презентации для защиты результатов и итогов учебной практики.
|
|
|
+
|
|
|
+РАЗРАБОТКА И ОФОРМЛЕНИЕ ТЕХНИЧЕСКОГО ЗАДАНИЯ
|
|
|
+ Информационная система <<Учебная часть>> предоставляет доступ к личному кабинету студента/преподавателя и хранит информацию о всех дисциплинах, занятиях, семестрах и студентах с возможность удаления/изменения/обновления данных. Разрабатывается на основе языка C# с использованием фреймворка Avalonia.
|
|
|
+ Актуальность:
|
|
|
+ Удобный доступ к информации: Система обеспечивает удобный и быстрый доступ к актуальной информации о дисциплинах, расписании занятий, семестрах и контактным данным преподавателей. Это позволяет студентам и преподавателям эффективно планировать учебный процесс и своё время.
|
|
|
+ Централизованное хранение данных: Вся информация о студентах, преподавателях, дисциплинах, занятиях и семестрах хранится в одной системе. Это обеспечивает централизованное и структурированное хранение данных, исключает возможность их потери или дублирования.
|
|
|
+ Управление данными: Система позволяет администраторам управлять данными, включая возможность удаления, изменения и обновления информации о студентах, преподавателях и других сущностях. Таким образом, обеспечивается актуальность и достоверность данных в системе.
|
|
|
+ Улучшение процесса обновления информации: благодаря возможности удаления, изменения и обновления данных, система "Учебная часть" способствует более оперативному обновлению информации о студентах, преподавателях и других сущностях. Это особенно важно в случае изменения контактных данных или перевода студента на другую специальность.
|
|
|
+ Цель проекта:
|
|
|
+ Создать удобный и функциональный инструмент для студентов и преподавателей, обеспечивающий доступ к актуальным учебным материалам, оценкам, расписанию занятий и другой информации о учебном процессе. Система также целью имеет централизованное хранение и управление данными о студентах, преподавателях, дисциплинах и семестрах, обеспечивая возможность удаления, изменения и обновления информации. В итоге, разработка системы "Учебная часть" позволяет сократить временные затраты на поиск и обновление информации, повысить качество коммуникации между студентами и преподавателями, а также обеспечить централизованное и безопасное хранение данных об учебном процессе.
|
|
|
+ Задачи проекта:
|
|
|
+ Реализовать функционал авторизации и аутентификации пользователей (студентов, преподавателей) для обеспечения безопасного доступа к системе.
|
|
|
+ Создать механизм просмотра расписания занятий с возможностью настройки отображения по датам, группам и преподавателям, обеспечивая актуальность данных и удобство использования.
|
|
|
+ Разработать модуль для предоставления информации о преподавателях и контактных данных, который будет интегрирован с другими функциональными блоками системы.
|
|
|
+ Создать механизм просмотра оценок студентами за выполненные задания, тесты, контрольные работы и экзамены, обеспечивая конфиденциальность и целостность данных.
|
|
|
+ Создать модуль для предоставления статистики о посещаемости занятий студентами и их активности в системе, что позволит преподавателям более детально оценивать учебный прогресс студентов.
|
|
|
+ Обеспечить возможность изменения личных данных о пользователей.
|
|
|
+ Построить масштабируемую и надежную архитектуру системы, выбрав подходящие технологии и инструменты разработки. Также следует обеспечить хорошую документацию и настройку процесса непрерывной интеграции и доставки для удобной разработки и сопровождения системы.
|
|
|
+ Стадии реализации проекта:
|
|
|
+ Таблица 1
|
|
|
+ Стадии реализации проекта
|
|
|
+ №
|
|
|
+Стадия реализации
|
|
|
+Срок
|
|
|
+Временные рамки
|
|
|
+
|
|
|
+Анализ предметной области и оформление ТЗ
|
|
|
+1 день
|
|
|
+16.05
|
|
|
+
|
|
|
+Разработка плановой документации
|
|
|
+1 день
|
|
|
+17.05
|
|
|
+
|
|
|
+Проектирование системы
|
|
|
+1 день
|
|
|
+18.05
|
|
|
+
|
|
|
+Построение UML-диаграмм
|
|
|
+3 дня
|
|
|
+18.05-21.05
|
|
|
+
|
|
|
+Проектирование базы данных
|
|
|
+(1/2) дня
|
|
|
+18.05
|
|
|
+
|
|
|
+Реализация базы данных
|
|
|
+(1/2) дня
|
|
|
+18.05
|
|
|
+
|
|
|
+Проектирование интерфейсов
|
|
|
+1 день
|
|
|
+18.05
|
|
|
+
|
|
|
+Реализация интерфейсов
|
|
|
+3 дня
|
|
|
+20.05-23.05
|
|
|
+
|
|
|
+Проектирование модулей
|
|
|
+2 дня
|
|
|
+20.05-22.05
|
|
|
+
|
|
|
+Реализация модулей
|
|
|
+5 дней
|
|
|
+23.05-28.05
|
|
|
+
|
|
|
+Интеграция системы
|
|
|
+3 дня
|
|
|
+29.05-31.05
|
|
|
+
|
|
|
+Разработка тестовой документации
|
|
|
+3 дня
|
|
|
+01.06-04.06
|
|
|
+
|
|
|
+Тестирование
|
|
|
+1 день
|
|
|
+04.06
|
|
|
+
|
|
|
+Защита проекта
|
|
|
+1 день
|
|
|
+05.06
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+Рисунок 1 - Сетевой график распределения работ
|
|
|
+
|
|
|
+
|
|
|
+ Рисунок 2 - Критический путь работ - 18 дней
|
|
|
+
|
|
|
+ Участники:
|
|
|
+ За реализацию информационной системы <<Учебная часть>> для образовательного учреждения ответственны студенты ГБПОУ <<Нижегородский Губернский колледж>> группы 31П специальности 09.02.07 Информационные системы и программирование:
|
|
|
+ Щекалева Александра Николаевна
|
|
|
+ Чернощекова Анастасия Романовна
|
|
|
+ Шапкин Алексей Сергеевич
|
|
|
+ Распределение ролей:
|
|
|
+ Таблица 2
|
|
|
+ Распределение ролей
|
|
|
+ №
|
|
|
+Участник
|
|
|
+Ответственный за
|
|
|
+ 1
|
|
|
+Чернощекова А. Р.
|
|
|
+Тестирование
|
|
|
+1/3 разработка программных модулей
|
|
|
+1/3 интеграция модулей
|
|
|
+1/3 проектирование UML-диаграмм
|
|
|
+ 2
|
|
|
+Шапкин А. С.
|
|
|
+Проектирование и реализация интерфейсов
|
|
|
+1/3 разработка программных модулей
|
|
|
+1/3 интеграция программных модулей
|
|
|
+1/3 проектирование UML-диаграмм
|
|
|
+ 3
|
|
|
+Щекалева А. Н.
|
|
|
+Разработка базы данных
|
|
|
+1/3 разработка программных модулей
|
|
|
+1/3 интеграция программных модулей
|
|
|
+1/3 проектирование UML-диаграмм
|
|
|
+
|
|
|
+
|
|
|
+ Ресурсы:
|
|
|
+ 3 компьютера, минимальные требования к которым: 8 ГБ оперативной памяти, процессор с 4 ядрами, диск не менее 256 Гб;
|
|
|
+ Операционная система Windows/Linux;
|
|
|
+ На всех устройствах должен быть обеспечен доступ к интернету;
|
|
|
+ Удаленный сервер для хранения БД;
|
|
|
+ СУБД PostgreSQL;
|
|
|
+ На рабочих компьютерах должны быть следующие программы:
|
|
|
+ Браузер;
|
|
|
+ MS Word;
|
|
|
+ MS Excel;
|
|
|
+ MS PowerPoint;
|
|
|
+ Клиент PostgreSQL;
|
|
|
+ .NET;
|
|
|
+ IDE для работы с C#;
|
|
|
+ Шаблоны Avalonia;
|
|
|
+ Редактор диаграмм drawio.
|
|
|
+ Система контроля версий - Git;
|
|
|
+ Удаленный репозиторий на сервере Gogs;
|
|
|
+ 18 рабочих дней.
|
|
|
+
|
|
|
+ РАЗРАБОТКА ПЛАНОВОЙ ДОКУМЕНТАЦИИ
|
|
|
+ Информационная система "Учебная часть" предоставляет доступ к личному кабинету студента/преподавателя, где они могут удобно просматривать информацию о своих дисциплинах, занятиях, семестрах и др. Система хранит данные о студентах, их оценках, посещаемости и академической производительности, обеспечивая возможность удаления, изменения и обновления информации для актуальности и точности данных. Это позволяет учебному учреждению эффективно управлять учебным процессом, обеспечивая студентам и преподавателям доступ к необходимой информации для успешного обучения и преподавания.
|
|
|
+ Варианты использования информационной системы <<Учебная часть>> преподавателем:
|
|
|
+ Регистрация/авторизация пользователя;
|
|
|
+ Добавление/изменение информации о преподавателе;
|
|
|
+ Получение информации о группах специальности;
|
|
|
+ Получение информации о рабочих часах по дисциплинам;
|
|
|
+ Добавление оценок за работы, тесты, контрольные работы, экзамены, выполненные студентом;
|
|
|
+ Добавление информации о посещаемости студентов;
|
|
|
+ Получение отчетов о посещаемости студентов;
|
|
|
+ Получение отчетов об успеваемости студентов по дисциплинам.
|
|
|
+ Варианты использования информационной системы <<Учебная часть>> студентом:
|
|
|
+ Регистрация/авторизация пользователя;
|
|
|
+ Добавление/изменение информации о студенте;
|
|
|
+ Получение информации о расписании занятий;
|
|
|
+ Получение информации об оценках за выполненные работы, тесты, контрольные работы, экзамены;
|
|
|
+ Получение информации об экзаменах/зачетах по дисциплинам;
|
|
|
+ Получение информации о преподавателях, их контактных данных;
|
|
|
+ Получение списка дисциплин за текущий семестр группы.
|
|
|
+
|
|
|
+ РАЗРАБОТКА UML-ДИАГРАММ
|
|
|
+ Диаграмма вариантов использования (use case diagram)
|
|
|
+ Диаграмма использования (use case diagram) - это наиболее общее представление функционального назначения системы.
|
|
|
+ Разработка диаграммы вариантов использования преследует цели:
|
|
|
+ Определить общие границы и контекст моделируемой предметной области на начальных этапах проектирования системы;
|
|
|
+ Сформулировать общие требования к функциональному поведению проектируемой системы;
|
|
|
+ Разработать исходную концептуальную модель системы для ее последующей детализации в форме логических и физических моделей;
|
|
|
+ Подготовить исходную документацию для взаимодействия разработчиков системы с ее заказчиками и пользователями.
|
|
|
+ Суть данной диаграммы состоит в следующем: проектируемая система представляется в виде множества сущностей или актеров, взаимодействующих с системой с помощью так называемых вариантов использования. При этом актером или действующим лицом называется любая сущность, взаимодействующая с системой извне. Это может быть человек, техническое устройство, программа или любая другая система, которая может служить источником воздействия на моделируемую систему так, как определит сам разработчик. В свою очередь, вариант использования (use case) служит для описания сервисов, которые система предоставляет актеру.
|
|
|
+ Другими словами, каждый вариант использования определяет некоторый набор действий, совершаемый системой при диалоге с актером. При этом ничего не говорится о том, каким образом будет реализовано взаимодействие актеров с системой.
|
|
|
+ Диаграмма вариантов использования, разработанная для информационной системы <<Учебная часть>>, представлена на рис. 3.
|
|
|
+
|
|
|
+Рисунок 3 - Диаграмма вариантов использования (use case diagram)
|
|
|
+
|
|
|
+ Диаграмма последовательности (sequence diagram)
|
|
|
+ Диаграмма последовательности (sequence diagram) - это способ описания поведения системы <<на примерах>>. Можно сказать, что диаграмма последовательности - это запись протокола конкретного сеанса работы системы (или фрагмента такого протокола).
|
|
|
+ Диаграмма последовательности относится к диаграммам взаимодействия UML, описывающим поведенческие аспекты системы, но рассматривает взаимодействие объектов во времени. Другими словами, диаграмма последовательности отображает временные особенности передачи и приема сообщений объектами.
|
|
|
+ На диаграмме последовательности изображаются исключительно те объекты, которые непосредственно участвуют во взаимодействии и не показываются возможные статические ассоциации с другими объектами. Для диаграммы последовательности ключевым моментом является именно динамика взаимодействия объектов во времени.
|
|
|
+ Для информационной системы <<Учебная часть>> были разработаны диаграммы последовательности для студента и преподавателя (рис. 4, рис. 5).
|
|
|
+
|
|
|
+Рисунок 4 - Диаграмма последовательности для студента
|
|
|
+
|
|
|
+
|
|
|
+Рисунок 5 - Диаграмма последовательности для преподавателя
|
|
|
+
|
|
|
+ Диаграмма классов (class diagram)
|
|
|
+ Диаграмма классов (class diagram) - основной способ описания структуры системы.
|
|
|
+ Диаграмма классов служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов может отражать, в частности, различные связи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывает их внутреннюю структуру (поля, методы и т.д.) и типы отношений. На данной диаграмме не указывается информация о временных аспектах функционирования системы.
|
|
|
+ На диаграмме классов применяется один основной тип сущностей: классы, включая многочисленные частные случаи классов: интерфейсы, примитивные типы, классы-ассоциации и др., между которыми устанавливаются следующие основные типы отношений:
|
|
|
+ Ассоциация между классами;
|
|
|
+ Обобщение между классами;
|
|
|
+ Зависимости между классами и между классами и интерфейсами.
|
|
|
+ Для разрабатываемой информационной системы <<Учебная часть>> была спроектирована диаграмма классов, представленная на рис. 6.
|
|
|
+
|
|
|
+ Рисунок 6 - Диаграмма классов (class diagram)
|
|
|
+
|
|
|
+ Диаграмма коммуникации (communication diagram) или диаграмма кооперации (collaboration diagram)
|
|
|
+ Диаграмма коммуникации (communication diagram) или диаграмма кооперации (collaboration diagram) - способ описания поведения, семантически эквивалентный диаграмме последовательности.
|
|
|
+ Диаграмма коммуникации отображает ту же информацию, что и диаграмма последовательности, но на диаграмме коммуникации зависимость от времени указывается посредством нумерации сообщений.
|
|
|
+ На диаграмме коммуникации отражается распределение процессов между объектами и их зависимости друг от друга, что очень полезно при разработке различных проектов. Основной целью построения данной диаграммы является понимание структурной организации занятых в системе объектов, принимающих и передающих сообщения.
|
|
|
+ Диаграмма коммуникации, разработанная для информационной системы <<Учебная часть>>, представлена на рис. 7.
|
|
|
+
|
|
|
+Рисунок 7 - Диаграмма коммуникации (кооперации)
|
|
|
+
|
|
|
+ Диаграмма деятельности (activity diagram)
|
|
|
+ Диаграмма деятельности (activity diagram) - еще один способ описания поведения, который визуально напоминает блок-схему алгоритма.
|
|
|
+ На диаграмме деятельности применяют основной тип сущностей - действие и один тип отношений - переходы. Также используются такие конструкции как развилки, слияния, соединения, ветвления, которые похожи на сущности, но таковыми на самом деле не являются.
|
|
|
+ Каждая диаграмма деятельности должна иметь единственное начальное и единственное конечное состояния. При этом каждая деятельность начинается в начальном состоянии и заканчивается в конечном состоянии. Саму диаграмму деятельности принято располагать таким образом, чтобы действия следовали сверху вниз. В этом случае начальное состояние будет изображаться в верхней части диаграммы, а конечное - в ее нижней части.
|
|
|
+ Для разрабатываемой информационной системы <<Учебная часть>> была разработана диаграмма деятельности, представленная на рис. 8.
|
|
|
+
|
|
|
+Рисунок 8 - Диаграмма деятельности (activity diagram)
|
|
|
+ Диаграмма состояния (state chart diagram)
|
|
|
+ Диаграмма состояния (state chart diagram) - это один из способов детального описания поведения в UML.
|
|
|
+ Главное предназначение данной диаграммы - описать возможные последовательности состояний и переходов, которые в совокупности характеризуют поведение элемента модели в течение его жизненного цикла. Диаграмма состояний представляет динамическое поведение сущностей, на основе спецификаций их реакции на восприятие некоторых конкретных событий.
|
|
|
+ На диаграмме состояния применяют один основной тип сущностей -- состояния, и один тип отношений -- переходы, но и для тех, и для других определено множество разновидностей, специальных случаев и дополнительных обозначений.
|
|
|
+ Диаграмма состояния, разработанная для информационной системы <<Учебная часть>>, представлена на рис. 9.
|
|
|
+
|
|
|
+Рисунок 9 - Диаграмма состояния (state chart diagram)
|
|
|
+ Диаграмма развертывания (deployment diagram)
|
|
|
+ Диаграмма развертывания (deployment diagram) - предназначена для представления общей конфигурации или топологии распределенной программной системы и содержит изображение размещения различных артефактов по отдельным узлам системы.
|
|
|
+ Диаграмма развертывания предназначена для визуализации элементов и компонентов программы, существующих лишь на этапе ее выполнения (runtime). При этом представляются только компоненты-экземпляры программы, являющиеся исполнимыми файлами или динамическими библиотеками. Те компоненты, которые не используются на этапе исполнения, на диаграмме развертывания не отражаются.
|
|
|
+ Диаграмма развертывания содержит графические изображения процессоров, устройств, процессов и связей между ними. В отличие от диаграмм логического представления, диаграмма развертывания является единой для системы в целом, поскольку должна всецело отражать особенности ее реализации. Эта диаграмма, по сути, завершает процесс ООАП (объектно-ориентированный анализ и проектирование) для конкретной программной системы и ее разработка, как правило, является последним этапом спецификации модели.
|
|
|
+ Для разрабатываемой информационной системы <<Учебная часть>> была разработана диаграмма развертывания, представленная на рис. 10.
|
|
|
+
|
|
|
+Рисунок 10 - Диаграмма развертывания (deployment diagram)
|
|
|
+
|
|
|
+ Диаграмма компонентов (component diagram)
|
|
|
+ Диаграмма компонентов описывает особенности физического представления системы. Диаграмма компонентов позволяет определить архитектуру разрабатываемой системы, установив зависимости между программными компонентами, в роли которых может выступать исходный, бинарный и исполняемый код. Основными графическими элементами диаграммы компонентов являются компоненты, интерфейсы и зависимости между ними.
|
|
|
+ Диаграмма компонентов разрабатывается для следующих целей:
|
|
|
+ визуализации общей структуры исходного кода программной системы;
|
|
|
+ спецификации исполнимого варианта программной системы;
|
|
|
+ обеспечения многократного использования отдельных фрагментов программного кода;
|
|
|
+ представления концептуальной и физической схем баз данных.
|
|
|
+ Диаграмма компонентов обеспечивает согласованный переход от логического представления к конкретной реализации проекта в форме программного кода. Одни компоненты могут существовать только на этапе компиляции программного кода, другие - на этапе его исполнения. Диаграмма компонентов отражает общие зависимости между компонентами, рассматривая последние в качестве классификаторов.
|
|
|
+ Диаграмма компонентов, разработанная для информационной системы <<Учебная часть>>, представлена на рис. 11.
|
|
|
+
|
|
|
+Рисунок 11 - Диаграмма компонентов (component diagram)
|
|
|
+
|
|
|
+ Диаграмма потоков данных (data flow diagram)
|
|
|
+ Диаграмма потоков данных (data flow diagram) - это метод, с помощью которого проводится графический структурный анализ, в котором описаны внешние для системы источники данных, функции, потоки и хранилища данных, к которым имеется доступ. С помощью этой диаграммы проводится структурный анализ и проектируются информационные системы.
|
|
|
+ Модель системы в контексте DFD представляется в виде некоторой информационной модели, основными компонентами которой являются различные потоки данных, которые переносят информацию от одной подсистемы к другой. Каждая из подсистем выполняет определенные преобразования входного потока данных и передает результаты обработки информации в виде потоков данных для других подсистем.
|
|
|
+ Основными компонентами диаграмм потоков данных являются:
|
|
|
+ внешние сущности;
|
|
|
+ накопители данных или хранилища;
|
|
|
+ процессы;
|
|
|
+ потоки данных;
|
|
|
+ системы/подсистемы.
|
|
|
+ Для разрабатываемой информационной системы <<Учебная часть>> была разработана диаграмма потоков данных, представленная на рис. 12.
|
|
|
+
|
|
|
+Рисунок 12 - Диаграмма потоков данных (data flow diagram)
|
|
|
+
|
|
|
+ РАЗРАБОТКА ТЕСТОВОЙ ДОКУМЕНТАЦИИ
|
|
|
+ Тестовый план для ИС <<Учебная часть>>
|
|
|
+ Цель документа:
|
|
|
+ Цель данного тестового плана - описать план тестирования информационной системы "Учебная часть" и определить стратегию тестирования, состав тестовой команды, необходимое тестовое окружение и другие аспекты тестирования.
|
|
|
+ Область применения:
|
|
|
+ Тестирование ИС "Учебная часть", которая предоставляет удобный и функциональный интерфейс для студентов и преподавателей, обеспечивает доступ к актуальным учебным материалам, оценкам, расписанию занятий и другой информации о учебном процессе.
|
|
|
+ Перечень работ:
|
|
|
+ Внешний вид и дизайн:
|
|
|
+ Визуальное тестирование / тестированием пользовательского интерфейса
|
|
|
+ Функциональные возможности:
|
|
|
+ Тестирование функционала регистрации и авторизации пользователей.
|
|
|
+ Тестирование функционала просмотра расписания занятий.
|
|
|
+ Тестирование функционала учета посещения занятий студентами.
|
|
|
+ Тестирование функционала представления информации о преподавателях и контактных данных.
|
|
|
+ Тестирование функционала просмотра оценок студентами и преподавателями.
|
|
|
+ Тестирование функционала управления данными в системе.
|
|
|
+ Критерии качества:
|
|
|
+ Адекватность:
|
|
|
+ Функционал ИС должен соответствовать требованиям и ожиданиям пользователей.
|
|
|
+ Информация, предоставляемая в ИС, должна быть точной, полной и актуальной.
|
|
|
+ Доступность:
|
|
|
+ ИС должна быть доступна пользователям в любое время, при условии наличия интернет-соединения.
|
|
|
+ Интерфейс ИС должен быть удобным, понятным и легко навигируемым для всех категорий пользователей.
|
|
|
+ Преемственность:
|
|
|
+ При обновлении ИС и внедрении новых версий необходимо обеспечить сохранение и перенос данных из предыдущих версий.
|
|
|
+ ИС должна корректно интегрироваться с другими системами учебной части образовательного учреждения.
|
|
|
+ Безопасность:
|
|
|
+ ИС должна обеспечивать конфиденциальность пользовательских данных и защиту от несанкционированного доступа.
|
|
|
+ При взаимодействии с другими системами ИС должна корректно обрабатывать и передавать данные, а также предотвращать возможные угрозы безопасности (например, инъекции или межсайтовые атаки).
|
|
|
+ Своевременность:
|
|
|
+ ИС должна оперативно предоставлять информацию о расписании занятий, оценках и других данных, связанных с учебным процессом.
|
|
|
+ Функционал ИС, связанный с учетом посещения занятий и оценками, должен работать в режиме реального времени и обеспечивать быструю обработку данных.
|
|
|
+ Эффективность:
|
|
|
+ ИС должна иметь оптимальную производительность и быстродействие, чтобы обеспечивать комфортное использование пользователями даже при большом объеме данных или одновременной нагрузке на систему.
|
|
|
+ Оценка рисков:
|
|
|
+ Риск неправильной работы функционала регистрации и авторизации пользователей может привести к нарушению конфиденциальности данных.
|
|
|
+ Риск неправильного отображения расписания занятий может привести к проблемам в организации учебного процесса.
|
|
|
+ Риск неправильного учета посещения занятий студентами может привести к ошибкам в оценках и некорректной статистике по успеваемости.
|
|
|
+ Риск неправильного представления информации о преподавателях и контактных данных может затруднить коммуникацию между студентами и преподавателями.
|
|
|
+ Риск неправильного отображения оценок студентами и преподавателями может привести к недоверию к системе и спорам по оценкам.
|
|
|
+ Документация:
|
|
|
+ Техническое задание на разработку ИС "Учебная часть".
|
|
|
+ Тест-план, тестовая стратегия, тестовый сценарий, тестовый набор.
|
|
|
+ Стратегия тестирования:
|
|
|
+ Для тестирования функционала ИС будут применены ручное тестирование и тестирование через автоматизированные тестовые сценарии.
|
|
|
+ Тестирование будет проводиться на каждом этапе разработки и внедрения ИС.
|
|
|
+ Для обеспечения качества тестирования будет использована требуемая тестовая инфраструктура и надлежащие тестовые данные.
|
|
|
+ Результаты тестирования будут документироваться и отчетливо представлены в виде тест-результатов.
|
|
|
+ Ресурсы:
|
|
|
+ Программные ресурсы: компьютеры для проведения тестирования, необходимое программное обеспечение (браузеры, инструменты для автоматизированного тестирования и др.).
|
|
|
+ Аппаратные ресурсы: серверы для развертывания ИС, компьютеры для разработчиков и тестировщиков.
|
|
|
+ Человеческие ресурсы: специалисты по тестированию, разработчики, системные администраторы.
|
|
|
+ Временные ресурсы: время для проведения тестирования, настройки тестовой среды, подготовки тестовых данных.
|
|
|
+ Метрики:
|
|
|
+ Количество выполненных тестовых случаев.
|
|
|
+ Количество обнаруженных и успешно исправленных ошибок.
|
|
|
+ Время, затраченное на тестирование каждой функциональной области ИС.
|
|
|
+ Процент покрытия тестами каждой функциональной области ИС.
|
|
|
+ Расписание и ключевые точки:
|
|
|
+ Начало тестирования: после завершения разработки каждой функциональной области ИС.
|
|
|
+ Таблица 3
|
|
|
+ Расписание тестирования
|
|
|
+ 1
|
|
|
+Разработка тестовой документации
|
|
|
+3 дня
|
|
|
+01.06-04.06
|
|
|
+ 2
|
|
|
+Тестирование
|
|
|
+1 день
|
|
|
+04.06
|
|
|
+
|
|
|
+
|
|
|
+ Окончание тестирования: за день до защиты учебной практики.
|
|
|
+ Ключевые точки:
|
|
|
+ Проведение совместного тестирования ИС.
|
|
|
+ Предоставление отчета о результатах тестирования и исправлении всех обнаруженных ошибок.
|
|
|
+ Участие в обсуждении и решении вопросов, связанных с тестированием ИС.
|
|
|
+
|
|
|
+ Тестовая стратегия для ИС <<Учебная часть>>
|
|
|
+ Цель документа:
|
|
|
+ Цель стратегии тестирования - стратегия помогает понять, сколько человек, какими инструментами и в какие сроки будет решать задачу по тестированию продукта.
|
|
|
+ Область применения:
|
|
|
+ ИС "Учебная часть" является частью общей информационной системы учебного учреждения и взаимодействует с другими компонентами системы.
|
|
|
+ Функциональность ИС "Учебная часть" включает в себя: учет студентов и преподавателей, формирование расписания занятий, управление учебным процессом, доступ к электронным образовательным ресурсам, предоставление информации о преподавателях и контактных данных, просмотр оценок студентами и преподавателями, возможность управления данными в системе.
|
|
|
+Методология:
|
|
|
+ Для тестирования ИС "Учебная часть" будет использоваться комбинированный подход, включающий функциональное тестирование, тестирование пользовательского интерфейса, регрессионное тестирование, тестирование производительности и нагрузочное тестирование.
|
|
|
+ Тестирование будет проводиться как вручную, так и с использованием автоматизированных тестовых инструментов.
|
|
|
+ Тестовые окружения:
|
|
|
+ Для тестирования ИС "Учебная часть" будет создано рабочее окружение, идентичное производственному окружению.
|
|
|
+ В тестовом окружении будут настроены все необходимые компоненты и настройки для полноценного тестирования системы.
|
|
|
+ Инструменты:
|
|
|
+ Для функционального тестирования будет использоваться среда Visual Studio.
|
|
|
+ Для модульного тестирования будет применяться фреймворк MSTest.
|
|
|
+ Для создания автотестов и генерации тестовых данных будет использоваться инструмент Microsoft Fakes.
|
|
|
+ Для нагрузочного и стресс-тестирования будет применяться инструментарий Visual Studio Load Testing Tools.
|
|
|
+ Управление релизами:
|
|
|
+ В каждом релизе ИС "Учебная часть" будет выделяться отдельная часть функциональности для тестирования.
|
|
|
+ Планирование и управление тестированием будет осуществляться с использованием документа тест плана и сохранение изменений и обновлений внутри репозитория gogs.
|
|
|
+ Результаты тестов:
|
|
|
+ По результатам тестирования будет составлен отчет, в котором будет указано количество и типы проведенных тестов, а также информация о найденных ошибках и их статусе.
|
|
|
+ Согласование и утверждение:
|
|
|
+ Стратегия тестирования будет согласована с командой разработки перед началом работ по тестированию ИС "Учебная часть".
|
|
|
+
|
|
|
+ Тестовый сценарий для ИС <<Учебная часть>>
|
|
|
+ Сценарий по учету студентов:
|
|
|
+ Шаг 1: Создание новой записи студента с заполнением всех обязательных полей.
|
|
|
+ Шаг 2: Проверка, что запись студента успешно создана и отображается в списке студентов.
|
|
|
+ Шаг 3: Редактирование информации о студенте, например, изменение контактных данных.
|
|
|
+ Шаг 4: Проверка, что информация о студенте успешно обновлена.
|
|
|
+ Шаг 5: Удаление записи о студенте.
|
|
|
+ Шаг 6: Проверка, что запись о студенте успешно удалена из системы.
|
|
|
+ Сценарий по формированию расписания занятий:
|
|
|
+ Шаг 1: Создание нового занятия в расписании с указанием всех необходимых данных (дата, время, преподаватель, аудитория, предмет и т.д.).
|
|
|
+ Шаг 2: Проверка, что занятие успешно добавлено в расписание и отображается корректно.
|
|
|
+ Шаг 3: Редактирование информации о занятии, например, изменение времени или аудитории.
|
|
|
+ Шаг 4: Проверка, что информация о занятии успешно обновлена в расписании.
|
|
|
+ Шаг 5: Удаление занятия из расписания.
|
|
|
+ Шаг 6: Проверка, что занятие успешно удалено и больше не отображается в расписании.
|
|
|
+ Сценарий по управлению учебным процессом:
|
|
|
+ Шаг 1: Выбор конкретного студента из списка для проверки его успеваемости.
|
|
|
+ Шаг 2: Проверка, что отображается актуальная информация об успеваемости выбранного студента.
|
|
|
+ Шаг 3: Добавление новой оценки студенту.
|
|
|
+ Шаг 4: Проверка, что оценка успешно добавлена и отображается в журнале успеваемости студента.
|
|
|
+ Шаг 5: Удаление оценки из журнала успеваемости.
|
|
|
+ Шаг 6: Проверка, что оценка успешно удалена и больше не отображается в журнале успеваемости студента.
|
|
|
+ Сценарий по сокращению временных затрат и повышению эффективности:
|
|
|
+ Шаг 1: Проверка возможности быстрого поиска конкретного студента в списке при большом количестве записей.
|
|
|
+ Шаг 2: Проверка возможности быстрого фильтрации списка студентов по определенным критериям, например, по группе или курсу.
|
|
|
+ Шаг 3: Проверка возможности массового импорта данных о студентах из внешнего источника, например, из CSV файла.
|
|
|
+ Шаг 4: Проверка, что данные о студентах успешно импортированы и отображаются в системе.
|
|
|
+ Шаг 5: Проверка возможности быстрого создания отчета о списке студентов с определенными фильтрами и сортировкой, например, отчета о студентах определенной группы или курса.
|
|
|
+ Шаг 6: Проверка возможности экспорта данных о студентах в CSV или Excel формате для дальнейшей обработки или использования в других системах.
|
|
|
+ 4. Тестовый набор для ИС <<Учебная часть>>
|
|
|
+ Ниже приведен пример тестового набора для ИС "Учебная часть":
|
|
|
+ Тестовый случай для функции учета студентов:
|
|
|
+ Входные данные: ID студента = 123, ФИО = "Иванов Иван Иванович", группа = "Группа 1"
|
|
|
+ Ожидаемый результат: Студент с ID 123 успешно зарегистрирован. В базе данных появилась запись с информацией о студенте (ФИО, группа).
|
|
|
+ Тестовый случай для функции формирования расписания занятий:
|
|
|
+ Входные данные: ID преподавателя = 456, день недели = "Понедельник", время начала занятия = "10:00", продолжительность занятия = 2 часа, предмет = "Математика", аудитория = "Аудитория 101"
|
|
|
+ Ожидаемый результат: Расписание занятий успешно обновлено. В базе данных появилась запись с информацией о занятии (ID преподавателя, день недели, время начала и продолжительность занятия, предмет, аудитория).
|
|
|
+ Тестовый случай для функции ведения электронного журнала успеваемости:
|
|
|
+ Входные данные: ID студента = 123, предмет = "Математика", оценка = 5
|
|
|
+ Ожидаемый результат: в журнале успеваемости студента с ID 123 по предмету "Математика" появилась оценка 5.
|
|
|
+ Тестовый случай для функции обмена информацией между преподавателями и студентами:
|
|
|
+ Входные данные: ID студента = 123, ID преподавателя = 456, сообщение = "Вопрос по заданию"
|
|
|
+ Ожидаемый результат: Преподавателю с ID 456 пришло сообщение от студента с ID 123 с текстом "Вопрос по заданию". Сообщение отображается в интерфейсе преподавателя в разделе общения с студентами.
|
|
|
+ Каждый тестовый случай включает входные данные (аргументы функции) и ожидаемый результат. При проведении тестирования ИС "Учебная часть" будет использоваться подобный тестовый набор для проверки различных функций системы.
|
|
|
+
|
|
|
+ РАЗРАБОТКА БАЗЫ ДАННЫХ
|
|
|
+ Описание предметной области
|
|
|
+ Информационная система <<Учебная часть>> предназначена для управления учебным процессом, обеспечивая доступ к актуальным учебным материалам, оценкам, расписанию занятий и другой информации.
|
|
|
+ Информационная система предоставляет доступ к личному кабинету студента/преподавателя, где они могут удобно просматривать информацию о своих дисциплинах, занятиях, семестрах и др. Система хранит данные о студентах, их оценках, посещаемости и академической производительности, обеспечивая возможность удаления, изменения и обновления информации для актуальности и точности данных. Это позволяет учебному учреждению эффективно управлять учебным процессом, обеспечивая студентам и преподавателям доступ к необходимой информации для успешного обучения и преподавания.
|
|
|
+ Функциональные требования к базе данных:
|
|
|
+ База данных должна поддерживать операции по учету студентов и преподавателей, формированию расписания занятий, управлению учебным процессом и доступу к электронным образовательным ресурсам.
|
|
|
+ Нефункциональные требования к базе данных:
|
|
|
+ База данных должна обеспечивать высокую производительность, надежность, безопасность и масштабируемость.
|
|
|
+
|
|
|
+ Описание основных сущностей предметной области
|
|
|
+ В результате проведенного анализа предметной области базы данных для информационной системы <<Учебная часть>> можно перечислить основные сущности данной базы данных. Так как на физическом уровне сущности соответствует таблица, то перечислим основные таблицы базы данных.
|
|
|
+ Реляционная модель проектированной базы данных будет содержать следующие таблицы (сущности): Роли, Пользователи, Кафедры, Специальности, Группы, Студенты, Корпусы (филиалы), Преподаватели, Дисциплины преподавателей, Дисциплины групп, Расписание, Оценки, Посещаемость.
|
|
|
+ Атрибут на физическом уровне - это колонки таблицы и отражает определенное свойство объекта.
|
|
|
+ Атрибуты: данные о студентах (ФИО, группа, контактные данные), данные о преподавателях (ФИО, предметы), данные о занятиях (дата, время, аудитория), данные об успеваемости (оценки).
|
|
|
+ Таблица 4
|
|
|
+ Таблицы базы данных
|
|
|
+ №
|
|
|
+ Название
|
|
|
+ Атрибуты
|
|
|
+ 1
|
|
|
+Роли
|
|
|
+ ID (первичный ключ)
|
|
|
+ Название (varying (30))
|
|
|
+ 2
|
|
|
+Пользователи
|
|
|
+ ID (первичный ключ)
|
|
|
+ Фамилия (varying (30))
|
|
|
+ Имя (varying (30))
|
|
|
+ Отчество (varying (30))
|
|
|
+ Почта (varying (30))
|
|
|
+ Номер телефона (varying (30))
|
|
|
+ Год рождения (date)
|
|
|
+ ID роли (вторичный ключ)
|
|
|
+ 3
|
|
|
+Кафедры
|
|
|
+ ID (первичный ключ)
|
|
|
+ Название (varying (30))
|
|
|
+ 4
|
|
|
+Специальности
|
|
|
+ ID (первичный ключ)
|
|
|
+ Название (varying (30))
|
|
|
+ ID кафедры (вторичный ключ)
|
|
|
+ 5
|
|
|
+Группы
|
|
|
+ ID (первичный ключ)
|
|
|
+ ID специальности (вторичный ключ)
|
|
|
+ Дата поступления (date)
|
|
|
+ Название (varying (5))
|
|
|
+ 6
|
|
|
+Студенты
|
|
|
+ ID пользователя (вторичный ключ)
|
|
|
+ ID группы (вторичный ключ)
|
|
|
+ 7
|
|
|
+Корпусы (филиалы)
|
|
|
+ ID (первичный ключ)
|
|
|
+ Заведующий (вторичный ключ)
|
|
|
+ Адрес (varying (70))
|
|
|
+ 8
|
|
|
+Преподаватели
|
|
|
+ ID пользователя (вторичный ключ)
|
|
|
+ ID кафедры (вторичный ключ)
|
|
|
+ 9
|
|
|
+Дисциплины
|
|
|
+ ID (первичный ключ)
|
|
|
+ Название (varying (30))
|
|
|
+ ID кафедры (вторичный ключ)
|
|
|
+ 10
|
|
|
+Дисциплины преподавателей
|
|
|
+ ID (первичный ключ)
|
|
|
+ ID преподавателя (вторичный ключ)
|
|
|
+ ID кафедры (вторичный ключ)
|
|
|
+ 11
|
|
|
+Дисциплины групп
|
|
|
+ ID (первичный ключ)
|
|
|
+ Семестр
|
|
|
+ ID дисциплины преподавателя (вторичный ключ)
|
|
|
+ ID группы (вторичный ключ)
|
|
|
+ 12
|
|
|
+Расписание
|
|
|
+ ID (первичный ключ)
|
|
|
+ Дата (date)
|
|
|
+ Номер (smallint)
|
|
|
+ ID дисциплины (вторичный ключ)
|
|
|
+ ID корпуса (вторичный ключ)
|
|
|
+ 13
|
|
|
+Оценки
|
|
|
+ ID (первичный ключ)
|
|
|
+ ID студента (вторичный ключ)
|
|
|
+ ID группы (вторичный ключ)
|
|
|
+ Дата (date)
|
|
|
+ Оценка (int)
|
|
|
+ 14
|
|
|
+Посещаемость
|
|
|
+ ID (первичный ключ)
|
|
|
+ ID расписания (вторичный ключ)
|
|
|
+ ID студента (вторичный ключ)
|
|
|
+ Посещение (bool)
|
|
|
+
|
|
|
+
|
|
|
+ Листинг создания таблиц базы данных представлен в Приложении А.
|
|
|
+
|
|
|
+ Таблица 5
|
|
|
+ Список связей между таблицами
|
|
|
+ №
|
|
|
+ Название связи
|
|
|
+ Сущности, участвующие в связи
|
|
|
+ 1
|
|
|
+ 1:М
|
|
|
+ Timetables - Attendance
|
|
|
+ 2
|
|
|
+ 1:М
|
|
|
+ Students - Attendance
|
|
|
+ 3
|
|
|
+ 1:М
|
|
|
+ Students - StudentGrades
|
|
|
+ 4
|
|
|
+ 1:М
|
|
|
+ GroupDiscipline - StudentGrades
|
|
|
+ 5
|
|
|
+ 1:М
|
|
|
+ GroupDiscipline - Timetables
|
|
|
+ 6
|
|
|
+ 1:М
|
|
|
+ Buildings - Timetables
|
|
|
+ 7
|
|
|
+ 1:М
|
|
|
+ Groups - GroupDiscipline
|
|
|
+ 8
|
|
|
+ 1:М
|
|
|
+ TeachersDisciplines - GroupDiscipline
|
|
|
+ 9
|
|
|
+ 1:М
|
|
|
+ Disciplines - TeachersDisciplines
|
|
|
+ 10
|
|
|
+ 1:М
|
|
|
+ Teachers - TeachersDisciplines
|
|
|
+ 11
|
|
|
+ 1:М
|
|
|
+ Departments - Disciplines
|
|
|
+ 12
|
|
|
+ 1:М
|
|
|
+ Departments - Teachers
|
|
|
+ 13
|
|
|
+ 1:М
|
|
|
+ Users - Teachers
|
|
|
+ 14
|
|
|
+ 1:М
|
|
|
+ Users - Buildings
|
|
|
+ 15
|
|
|
+ 1:М
|
|
|
+ Users - Students
|
|
|
+ 16
|
|
|
+ 1:М
|
|
|
+ Groups - Students
|
|
|
+ 17
|
|
|
+ 1:М
|
|
|
+ Specialties - Groups
|
|
|
+ 18
|
|
|
+ 1:М
|
|
|
+ Departments - Specialties
|
|
|
+ 19
|
|
|
+ 1:М
|
|
|
+ Roles - Users
|
|
|
+
|
|
|
+
|
|
|
+ Спроектированная ER-диаграмма базы данных для информационной системы <<Учебная часть>> представлена на рис.13.
|
|
|
+
|
|
|
+
|
|
|
+ Рисунок 13 - Диаграмма базы данных
|
|
|
+
|
|
|
+ Скрипт заполнения таблиц базы данных представлен в Приложении Б к данному отчету.
|
|
|
+ РАЗРАБОТКА ПРОГРАММНЫХ МОДУЛЕЙ
|
|
|
+
|
|
|
+ ТЕСТИРОВАНИЕ ИНТЕРФЕЙСА СИСТЕМЫ
|
|
|
+ Таблица 6
|
|
|
+ Представление страниц ИС <<Учебная часть>>
|
|
|
+ Название страницы
|
|
|
+ Описание
|
|
|
+ Представление
|
|
|
+Начальная страница
|
|
|
+Появляется при заходе в приложение содержит логотип приложения и название приложения
|
|
|
+
|
|
|
+Авторизация
|
|
|
+Содержит окно авторизации пользователя под своим логином и паролем
|
|
|
+
|
|
|
+Меню
|
|
|
+Содержит информативные блоки и переходом на другие страницы приложения, служит навигацией приложения
|
|
|
+
|
|
|
+Профиль преподавателя
|
|
|
+Содержит информацию о преподавателе, а также интерфейс с нужными окнами для него при работе в среде <<Учебная часть>>
|
|
|
+
|
|
|
+Профиль студента
|
|
|
+Содержит информацию о студенте, а также интерфейс с нужными окнами для него при работе в среде <<Учебная часть>>
|
|
|
+
|
|
|
+Расписание
|
|
|
+Содержит актуальное расписание предметов в определенную дату, а также фильтрацию по группам или по преподавателю
|
|
|
+
|
|
|
+Преподаватели
|
|
|
+Содержит информацию по всем преподавателям с фильтрацией по корпусам
|
|
|
+
|
|
|
+Студенты
|
|
|
+Содержит информацию по всем студентам с фильтрацией по группам
|
|
|
+
|
|
|
+Оценки для просмотра преподавателем
|
|
|
+Содержит все оценки студентов и может отфильтровать данные по группам
|
|
|
+
|
|
|
+Оценки для просмотра студента
|
|
|
+Содержит все оценки студента и может отфильтровать данные по дисциплинам
|
|
|
+
|
|
|
+Итоговые оценки для просмотра преподавателем
|
|
|
+Содержит итоговые оценки студентов и может отфильтровать данные по группам
|
|
|
+
|
|
|
+Итоговые оценки для просмотра студента
|
|
|
+Содержит итоговые оценки студента по всем дисциплинам
|
|
|
+
|
|
|
+Дисциплины (предметы)
|
|
|
+Содержит данные по всем дисциплинам и может фильтровать и сортировать данную информацию по преподавателю или группе
|
|
|
+
|
|
|
+Посещаемость
|
|
|
+Содержит процент посещаемости, как и студента так и группы по разным дисциплинам
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Планирование тестирования UI/UX
|
|
|
+ Определение целей и задач тестирования
|
|
|
+ Проверить соответствие интерфейса требованиям и ожиданиям пользователей.
|
|
|
+ Проверить удобство использования интерфейса и пользовательский опыт.
|
|
|
+ Выбор тестируемых платформ и устройств
|
|
|
+ Отладочное окно в среде Microsoft Visual Studio.
|
|
|
+ Устройство тестирования персональный компьютер, в частности, его монитор разрешением 1920 x 1080.
|
|
|
+ Составление плана тестирования UI/UX
|
|
|
+ Функциональное тестирование интерфейса:
|
|
|
+ Проверка корректного отображения информации о дисциплинах и оценках;
|
|
|
+ Проверка работы фильтров и сортировки в списках студентов, преподавателей и расписании.
|
|
|
+ Проверка возможности добавления, изменения и удаления данных о студентах и преподавателях.
|
|
|
+ Адаптивное тестирование интерфейса:
|
|
|
+ Проверка корректного отображения интерфейса на различных разрешениях экрана.
|
|
|
+ Проверка удобства взаимодействия с интерфейсом на различных устройствах.
|
|
|
+ Тестирование пользовательского опыта:
|
|
|
+ Выполнение типичных сценариев использования системы студентами и преподавателями.
|
|
|
+ Выявление потенциальных проблем и неудобств для пользователей.
|
|
|
+ Тестирование безопасности интерфейса:
|
|
|
+ Проверка защиты от уязвимостей (например, XSS или CSRF).
|
|
|
+ Проверка безопасного хранения и передачи пользовательских данных.
|
|
|
+Тестирование производительности интерфейса:
|
|
|
+ Проверка скорости загрузки страниц и отзывчивости интерфейса.
|
|
|
+ Оптимизация производительности интерфейса при необходимости.
|
|
|
+
|
|
|
+ Функциональное тестирование UI/UX
|
|
|
+ Проверка входа пользователя с его авторизацией по логину и паролю:
|
|
|
+ Поле ввода логина и пароля видимо и доступно для ввода.
|
|
|
+ Кнопка <<Войти>> активна при заполненных полях ввода.
|
|
|
+ При неверно введенных данных в полях программа не пропускает пользователя дальше.
|
|
|
+
|
|
|
+ Рисунок 14 - Видимость полей
|
|
|
+
|
|
|
+ Рисунок 15 - Возможность верного входа
|
|
|
+
|
|
|
+Рисунок 16 - Ошибка авторизации при неверных данных для входа
|
|
|
+
|
|
|
+ Проверка корректного отображения информации в окнах вывода информации:
|
|
|
+ Информация в окнах, визуально воспринимаемая пользователем.
|
|
|
+ Во всех окнах информация выводится корректно.
|
|
|
+
|
|
|
+Рисунок 17 - Отображение информации на странице <<Профиль>>
|
|
|
+
|
|
|
+Рисунок 18 - Отображение информации на странице <<Дисциплины>>
|
|
|
+
|
|
|
+Рисунок 19 - Отображение информации на странице <<Расписание>>
|
|
|
+
|
|
|
+Рисунок 20 - Отображение информации на странице <<Посещаемость>>
|
|
|
+
|
|
|
+Рисунок 21 - Отображение информации на странице <<Оценки>>
|
|
|
+
|
|
|
+ Проверка работы фильтров и сортировки в списках студентов, преподавателей, расписании и др.:
|
|
|
+ Фильтрация и сортировка работает корректно для каждого окна.
|
|
|
+
|
|
|
+Рисунок 22 - Фильтрация по преподавателям (1)
|
|
|
+
|
|
|
+Рисунок 23 - Фильтрация по преподавателями (2)
|
|
|
+
|
|
|
+ Рисунок 24 - Фильтрация по группам (1)
|
|
|
+
|
|
|
+ Рисунок 25 - Фильтрация по группам (2)
|
|
|
+
|
|
|
+ Проверка переходов между окнами, соответствующими ожиданиям:
|
|
|
+ Переходы между окнами быстрые.
|
|
|
+ Переходы соответствуют ожиданиям куда должен попасть пользователь.
|
|
|
+
|
|
|
+Рисунок 26 - Наведение курсора на кнопку <<Профиль>>
|
|
|
+
|
|
|
+ Рисунок 27 - Переход на страницу <<Профиль>>
|
|
|
+
|
|
|
+ Адаптивное тестирование UI/UX
|
|
|
+ Проверка корректного отображения интерфейса на различных разрешениях экранов:
|
|
|
+ Интерфейс адаптируется к маленькому экрану и элементы не перекрываются.
|
|
|
+
|
|
|
+Рисунок 28 - Использование приложения на маленьком экране
|
|
|
+
|
|
|
+ Меню и другие элементы интерфейса удобно доступны на экране.
|
|
|
+ Интерфейс адаптируется к большому экрану и элементы корректно отображаются в отношении сторон.
|
|
|
+
|
|
|
+Рисунок 29 - Использование приложения на большом экране
|
|
|
+
|
|
|
+ При открытии окон, заголовок и элементы управления отображаются по центру и с боков экрана.
|
|
|
+
|
|
|
+ Рисунок 30 - Открытие другого окна
|
|
|
+
|
|
|
+ Интерфейс занимает всю доступную ширину экрана и элементы на слишком сжаты.
|
|
|
+ При изменении размера окна интерфейс корректно адаптируется к новому размеру.
|
|
|
+ Кнопки и ссылки имеют достаточный размер и кликабельны для любого размера используемых экранов.
|
|
|
+ Скролл-бары присутствуют при необходимости и позволяют прокручивать содержимое страницы.
|
|
|
+ Ввод данных (например, заполнение формы) удобен на всех экранах и валидация полей работает корректно.
|
|
|
+
|
|
|
+ Тестирование пользовательского опыта (UX)
|
|
|
+ Оценка удобства использования интерфейса:
|
|
|
+ Навигация по системе интуитивно понятна и логична для пользователей.
|
|
|
+ Основные функции системы (просмотр информации о дисциплинах, оценок, расписания занятий и т.д.) доступны пользователю в несколько кликов.
|
|
|
+ Элементы интерфейса имеют понятные и информативные подсказки, которые помогают пользователям понять, как использовать функционал системы.
|
|
|
+ Интерфейс системы имеет приятный и современный дизайн, который способствует комфортному использованию системы.
|
|
|
+ Важная информация (например, контактная информация преподавателей или срочные уведомления) выделяется в интерфейсе и привлекает внимание пользователей.
|
|
|
+ Выявление потенциальных проблем и неудобств для пользователей:
|
|
|
+ При выполнении длительных операций (например, загрузка большого количества данных) пользователю не отображается индикатор прогресса или другая информация о процессе выполнения операции.
|
|
|
+ При возникновении ошибок пользователю выводятся понятные и информативные сообщения об ошибке, которые помогают пользователю понять, что пошло не так и как исправить ситуацию.
|
|
|
+ Система поддерживает использование системных горячих клавиш Tab и Enter, что упрощает и ускоряет работу пользователей.
|
|
|
+
|
|
|
+ Тестирование производительности интерфейса
|
|
|
+ Проверка скорости открытия страниц:
|
|
|
+ Открытие страниц происходит с быстрой скоростью менее 1 секунды.
|
|
|
+ Отсутствует подгрузка информации уже при открытии страницы, вся информация предоставляется сразу в полном объёме.
|
|
|
+ Проверка отклика интерфейса на действия пользователя:
|
|
|
+ Нажатие кнопки или на выбор значения в выпадающем списке происходит быстро, менее 1 секунды.
|
|
|
+ Проверка загрузки базы данных с требуемой информацией:
|
|
|
+ Запросы к базе данных для вывода информации происходит быстро, менее 5 секунд.
|
|
|
+ Сортировка информации происходит быстро, менее 5 секунд.
|
|
|
+ Фильтрация информации происходит быстро, менее 5 секунд.
|
|
|
+
|
|
|
+ Тестирование безопасности интерфейса
|
|
|
+ Проверка наличия уязвимостей в интерфейсе:
|
|
|
+ Анализ кода консольного приложения на наличие уязвимостей, таких как неправильная обработка пользовательского ввода или отсутствие проверок безопасности.
|
|
|
+ Система корректно защищена от таких атак.
|
|
|
+ Защита от возможных атак:
|
|
|
+ Консольное приложение правильно обрабатывает и экранирует пользовательский ввод, чтобы предотвратить возможность внедрения вредоносного кода.
|
|
|
+ Система использует механизмы защиты от уязвимостей внутри PostgreSQL, таких как SQL-инъекции или командные инъекции, при работе с базой данных или выполнении внешних команд.
|
|
|
+ Обеспечение безопасного хранения и передачи пользовательских данных:
|
|
|
+ Консольное приложение хранит пользовательские данные на частном сервере, такие как пароли или личную информацию, чтобы предотвратить возможность их компрометации в случае несанкционированного доступа к данным.
|
|
|
+
|
|
|
+ ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
|
|
|
+ Тестирование программного обеспечения является важным этапом в процессе разработки, обеспечивающим качество и надежность конечного продукта. Одним из методов тестирования является тестирование методом белого ящика (White Box Testing), который позволяет разработчикам проверять внутреннюю структуру и логику кода. В этом документе представлены тесты для нескольких классов ViewModel из проекта, связанного с образовательным учреждением. Эти тесты написаны с использованием MSTest в Visual Studio и покрывают различные аспекты логики внутри ViewModel классов.
|
|
|
+ Тестирование методом белого ящика позволяет разработчикам:
|
|
|
+ Проверять внутреннюю логику и структуру кода. Это помогает убедиться, что все ветви и условия в коде работают правильно.
|
|
|
+ Находить и устранять ошибки на ранних этапах разработки: Тесты могут выявить баги и логические ошибки, которые могут быть незаметны при поверхностном тестировании.
|
|
|
+ Обеспечивать высокое покрытие кода: Тесты белого ящика позволяют проверить максимальное количество строк кода и логических ветвей, что повышает надежность и стабильность приложения.
|
|
|
+ Документировать поведение кода: Тесты служат дополнительной документацией, показывая, как должны работать различные компоненты системы.
|
|
|
+ ОПИСАНИЕ ТЕСТОВ
|
|
|
+ В данном документе представлены тесты для следующих классов ViewModel:
|
|
|
+ AttendanceViewModel
|
|
|
+ AuthorizationViewModel
|
|
|
+ TimetableViewModel
|
|
|
+ DisciplineViewModel
|
|
|
+ UserProfileViewModel
|
|
|
+ Каждый тест проверяет различные аспекты функциональности этих классов, включая вызов событий, корректность изменения свойств и правильность выполнения методов.
|
|
|
+
|
|
|
+ Таблица 7
|
|
|
+ Тесты
|
|
|
+ Название
|
|
|
+ Что тестирует
|
|
|
+ Алгоритм работы
|
|
|
+ Код
|
|
|
+ TestOnPropertyChanged_UpdatesValues
|
|
|
+Этот тест проверяет, что при изменении свойства SecondSelectedOption в AttendanceViewModel вызывается событие PropertyChanged для свойства Values.
|
|
|
+ Arrange: Создается mock-объект для Schekaleva31pContext и экземпляр AttendanceViewModel. Также создается флаг eventRaised, который отслеживает, было ли вызвано событие PropertyChanged.
|
|
|
+ Подписка: Подписываемся на событие PropertyChanged и проверяем, вызывается ли оно для свойства Values.
|
|
|
+ Act: Изменяем свойство SecondSelectedOption.
|
|
|
+ Assert: Проверяем, что событие PropertyChanged было вызвано для свойства Values.
|
|
|
+[TestMethod]
|
|
|
+public void TestOnPropertyChanged_UpdatesValues()
|
|
|
+{
|
|
|
+ // Arrange
|
|
|
+ var dbContextMock = new Mock<Schekaleva31pContext>(); // Creating a mock of the database context
|
|
|
+ var viewModel = new AttendanceViewModel(dbContextMock.Object); // Creating an instance of the AttendanceViewModel
|
|
|
+ bool eventRaised = false; // Flag to track if the PropertyChanged event was raised
|
|
|
+
|
|
|
+ // Subscribing to the PropertyChanged event to check for changes in the 'Values' property
|
|
|
+ viewModel.PropertyChanged += (sender, e) =>
|
|
|
+ {
|
|
|
+ if (e.PropertyName == nameof(viewModel.Values))
|
|
|
+ {
|
|
|
+ eventRaised = true;
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ // Act
|
|
|
+ viewModel.SecondSelectedOption = "SomeGroup"; // Triggering a property change
|
|
|
+
|
|
|
+ // Assert
|
|
|
+ Assert.IsTrue(eventRaised); // Verifying that the PropertyChanged event was raised for the 'Values' property
|
|
|
+}
|
|
|
+ TestAuthorizationViewModel_LoginPropertyChange
|
|
|
+Этот тест проверяет, что при изменении свойства Login в AuthorizationViewModel вызывается событие PropertyChanged.
|
|
|
+ Arrange: Создается экземпляр AuthorizationViewModel и флаг eventRaised, который отслеживает вызов события PropertyChanged.
|
|
|
+ Подписка: Подписываемся на событие PropertyChanged и проверяем, вызывается ли оно для свойства Login.
|
|
|
+ Act: Изменяем свойство Login.
|
|
|
+ Assert: Проверяем, что событие PropertyChanged было вызвано для свойства Login.
|
|
|
+[TestMethod]
|
|
|
+ public void TestAuthorizationViewModel_LoginPropertyChange()
|
|
|
+ {
|
|
|
+ // Arrange
|
|
|
+ var viewModel = new AuthorizationViewModel(); // Creating an instance of the AuthorizationViewModel
|
|
|
+ bool eventRaised = false; // Flag to track if the PropertyChanged event was raised
|
|
|
+
|
|
|
+ // Subscribing to the PropertyChanged event to check for changes in the 'Login' property
|
|
|
+ viewModel.PropertyChanged += (sender, e) =>
|
|
|
+ {
|
|
|
+ if (e.PropertyName == nameof(viewModel.Login))
|
|
|
+ {
|
|
|
+ eventRaised = true;
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ // Act
|
|
|
+ viewModel.Login = "newlogin@example.com"; // Triggering a property change
|
|
|
+
|
|
|
+ // Assert
|
|
|
+ Assert.IsTrue(eventRaised); // Verifying that the PropertyChanged event was raised for the 'Login' property
|
|
|
+ }
|
|
|
+ AttendanceViewModel_GetNewAttendance_SetsCorrectParameterForDisciplineFilter
|
|
|
+Этот тест проверяет, что метод GetNewAttendance в AttendanceViewModel корректно устанавливает значение свойства ParameterName при выбранной дисциплине.
|
|
|
+ Arrange создается mock-объект для Schekaleva31pContext и экземпляр AttendanceViewModel. Устанавливаются начальные значения для свойств SelectedOption и OptionValue.
|
|
|
+ Act: Вызывается метод GetNewAttendance.
|
|
|
+ Assert: Проверяется, что свойство ParameterName было установлено корректно.
|
|
|
+[TestMethod]
|
|
|
+public void AttendanceViewModel_GetNewAttendance_SetsCorrectParameterForDisciplineFilter()
|
|
|
+{
|
|
|
+ // Arrange
|
|
|
+ var dbContextMock = new Mock<Schekaleva31pContext>(); // Creating a mock of the database context
|
|
|
+ var attendanceViewModel = new AttendanceViewModel(dbContextMock.Object); // Creating an instance of the AttendanceViewModel
|
|
|
+ attendanceViewModel.SelectedOption = "Äèñöèïëèíà"; // Setting the SelectedOption
|
|
|
+ attendanceViewModel.OptionValue = "Âñå ãðóïïû"; // Setting the OptionValue
|
|
|
+
|
|
|
+ // Act
|
|
|
+ attendanceViewModel.GetNewAttendance(); // Invoking the GetNewAttendance method
|
|
|
+
|
|
|
+ // Assert
|
|
|
+ Assert.AreEqual("Ãðóïïû íà äèñöèïëèíå ", attendanceViewModel.ParameterName); // Verifying that the ParameterName is set correctly
|
|
|
+}
|
|
|
+ AttendanceViewModel_NewOption_ReturnsCorrectOptionsForGroupFilter
|
|
|
+Этот тест проверяет, что метод NewOption в AttendanceViewModel возвращает корректный список опций для выбранной группы.
|
|
|
+1. Arrange Создается mock-объект для Schekaleva31pContext и экземпляр AttendanceViewModel. Устанавливается значение для свойства SelectedOption.
|
|
|
+2. Act: Вызывается метод NewOption.
|
|
|
+3. Assert Проверяется, что метод возвращает непустой список опций.
|
|
|
+[TestMethod]
|
|
|
+public void AttendanceViewModel_NewOption_ReturnsCorrectOptionsForGroupFilter()
|
|
|
+{
|
|
|
+ // Arrange
|
|
|
+ var dbContextMock = new Mock<Schekaleva31pContext>(); // Creating a mock of the database context
|
|
|
+ var attendanceViewModel = new AttendanceViewModel(dbContextMock.Object); // Creating an instance of the AttendanceViewModel
|
|
|
+ attendanceViewModel.SelectedOption = "Ãðóïïà"; // Setting the SelectedOption
|
|
|
+
|
|
|
+ // Act
|
|
|
+ var options = attendanceViewModel.NewOption(); // Invoking the NewOption method
|
|
|
+
|
|
|
+ // Assert
|
|
|
+ Assert.IsNotNull(options); // Verifying that the options are not null
|
|
|
+ Assert.IsTrue(options.Count > 0); // Verifying that the options list has at least one item
|
|
|
+}
|
|
|
+ TimetableViewModel_NewValues_ForGroup_ReturnsExpectedValues
|
|
|
+Этот тест проверяет, что метод NewValues в TimetableViewModel возвращает ожидаемое количество значений для выбранной группы.
|
|
|
+1. Arrange: Создается mock-объект для Schekaleva31pContext и экземпляр TimetableViewModel. Устанавливается значение для свойства SelectedOption и ожидаемое количество значений.
|
|
|
+2. Act: Вызывается метод NewValues с параметром "Группа".
|
|
|
+3.Assert: Проверяется, что метод возвращает ожидаемое количество значений.
|
|
|
+[TestMethod]
|
|
|
+public void TimetableViewModel_NewValues_ForGroup_ReturnsExpectedValues()
|
|
|
+{
|
|
|
+ // Arrange
|
|
|
+ var dbContextMock = new Mock<Schekaleva31pContext>(); // Creating a mock of the database context
|
|
|
+ var timetableViewModel = new TimetableViewModel(dbContextMock.Object); // Creating an instance of the TimetableViewModel
|
|
|
+ timetableViewModel.SelectedOption = "Ãðóïïà"; // Setting the SelectedOption
|
|
|
+ var expectedValuesCount = 40; // Defining the expected number of values
|
|
|
+
|
|
|
+ // Act
|
|
|
+ var values = timetableViewModel.NewValues("Ãðóïïà"); // Invoking the NewValues method with a specific group
|
|
|
+
|
|
|
+ // Assert
|
|
|
+ Assert.AreEqual(expectedValuesCount, values.Count); // Verifying that the count of values matches the expected count
|
|
|
+}
|
|
|
+ TimetableViewModel_NewTimetable_ForTeacher_ReturnsExpectedTimetable
|
|
|
+Этот тест проверяет, что метод NewTimetable в TimetableViewModel возвращает ожидаемое количество расписаний для выбранного преподавателя.
|
|
|
+1. Arrange: Создается mock-объект для Scheкaleва31pContext и экземпляр TimetableViewModel. Устанавливаются значения для свойств SelectedOption и OptionValue.
|
|
|
+2. Act: Вызывается метод NewTimetable.
|
|
|
+3.Assert: Проверяется, что метод возвращает ожидаемое количество расписаний.
|
|
|
+[TestMethod]
|
|
|
+public void TimetableViewModel_NewTimetable_ForTeacher_ReturnsExpectedTimetable()
|
|
|
+{
|
|
|
+ // Arrange
|
|
|
+ var dbContextMock = new Mock<Schekaleva31pContext>();
|
|
|
+ var timetableViewModel = new TimetableViewModel(dbContextMock.Object);
|
|
|
+ timetableViewModel.SelectedOption = "Ïðåïîäàâàòåëü";
|
|
|
+ var expectedTimetableCount = 0;
|
|
|
+ timetableViewModel.OptionValue = "John Doe";
|
|
|
+
|
|
|
+ // Act
|
|
|
+ timetableViewModel.NewTimetable();
|
|
|
+
|
|
|
+ // Assert
|
|
|
+ Assert.AreEqual(expectedTimetableCount, timetableViewModel.Timetable?.Count);
|
|
|
+}
|
|
|
+ DisciplineViewModel_NewValues_ForGroup_ReturnsExpectedValues
|
|
|
+Этот тест проверяет, что метод NewValues в DisciplineViewModel возвращает ожидаемое количество значений для выбранной группы.
|
|
|
+1. Arrange: Создается mock-объект для Scheкaleва31pContext и экземпляр DisciplineViewModel. Устанавливается значение для свойства SelectedOption и ожидаемое количество значений.
|
|
|
+2. Act: Вызывается метод NewValues с параметром "Группа".
|
|
|
+3. Assert: Проверяется, что метод возвращает ожидаемое количество значений.
|
|
|
+[TestMethod]
|
|
|
+public void DisciplineViewModel_NewValues_ForGroup_ReturnsExpectedValues()
|
|
|
+{
|
|
|
+ // Arrange
|
|
|
+ var dbContextMock = new Mock<Schekaleva31pContext>();
|
|
|
+ var disciplineViewModel = new DisciplineViewModel(dbContextMock.Object);
|
|
|
+ disciplineViewModel.SelectedOption = "Ãðóïïà";
|
|
|
+ var expectedValuesCount = 40;
|
|
|
+
|
|
|
+ // Act
|
|
|
+ disciplineViewModel.Values = disciplineViewModel.NewValues("Ãðóïïà");
|
|
|
+
|
|
|
+ // Assert
|
|
|
+ Assert.AreEqual(expectedValuesCount, disciplineViewModel.Values.Count);
|
|
|
+}
|
|
|
+ DisciplineViewModel_NewDisciplines_ForTeacher_ReturnsExpectedDisciplines
|
|
|
+Этот тест проверяет, что метод NewDisciplines в DisciplineViewModel возвращает ожидаемое количество дисциплин для выбранного преподавателя.
|
|
|
+1. Arrange: Создается mock-объект для Scheкaleва31pContext и экземпляр DisciplineViewModel. Устанавливаются значения для свойств SelectedOption и OptionValue.
|
|
|
+2. Act: Вызывается метод NewDisciplines.
|
|
|
+3. Assert: Проверяется, что метод возвращает ожидаемое количество дисциплин.
|
|
|
+[TestMethod]
|
|
|
+public void DisciplineViewModel_NewDisciplines_ForTeacher_ReturnsExpectedDisciplines()
|
|
|
+{
|
|
|
+ // Arrange
|
|
|
+ var dbContextMock = new Mock<Schekaleva31pContext>();
|
|
|
+ var disciplineViewModel = new DisciplineViewModel(dbContextMock.Object);
|
|
|
+ disciplineViewModel.SelectedOption = "Ïðåïîäàâàòåëü";
|
|
|
+ var expectedDisciplinesCount = 0;
|
|
|
+ disciplineViewModel.OptionValue = "John Doe";
|
|
|
+
|
|
|
+ // Act
|
|
|
+ disciplineViewModel.NewDisciplines();
|
|
|
+
|
|
|
+ // Assert
|
|
|
+ Assert.AreEqual(expectedDisciplinesCount, disciplineViewModel.Disciplines?.Count);
|
|
|
+}
|
|
|
+ UserProfileViewModel_GetDisciplines_ReturnsExpectedDisciplines
|
|
|
+Этот тест проверяет, что свойство Disciplines в UserProfileViewModel возвращает ожидаемое количество дисциплин для пользователя с заданным email.
|
|
|
+1. Arrange: Создается mock-объект для Scheкaleва31pContext и задается email пользователя. Определяется ожидаемое количество дисциплин.
|
|
|
+2. Act: Создается экземпляр UserProfileViewModel и вызывается свойство Disciplines.
|
|
|
+3. Assert: Проверяется, что количество дисциплин соответствует ожидаемому.
|
|
|
+[TestMethod]
|
|
|
+public void UserProfileViewModel_GetDisciplines_ReturnsExpectedDisciplines()
|
|
|
+{
|
|
|
+ // Arrange
|
|
|
+ var dbContextMock = new Mock<Schekaleva31pContext>();
|
|
|
+ var userEmail = "alex.ivanov@example.com";
|
|
|
+ var expectedDisciplinesCount = 4;
|
|
|
+
|
|
|
+ // Act
|
|
|
+ var userProfileViewModel = new UserProfileViewModel(dbContextMock.Object, userEmail);
|
|
|
+ var disciplines = userProfileViewModel.Disciplines;
|
|
|
+
|
|
|
+ // Assert
|
|
|
+ Assert.AreEqual(expectedDisciplinesCount, disciplines.Count);
|
|
|
+}
|
|
|
+ UserProfileViewModel_Initialization_UserIsNotNull
|
|
|
+Этот тест проверяет, что при инициализации UserProfileViewModel свойство User не равно null для пользователя с заданным email.
|
|
|
+1. Arrange: Создается mock-объект для Scheкалева31pContext и задается email пользователя.
|
|
|
+2. Act: Создается экземпляр UserProfileViewModel.
|
|
|
+3. Assert: Проверяется, что свойство User не равно null.
|
|
|
+[TestMethod]
|
|
|
+public void UserProfileViewModel_Initialization_UserIsNotNull()
|
|
|
+{
|
|
|
+ // Arrange
|
|
|
+ var dbContextMock = new Mock<Schekaleva31pContext>();
|
|
|
+ var userEmail = "alex.ivanov@example.com";
|
|
|
+
|
|
|
+ // Act
|
|
|
+ var userProfileViewModel = new UserProfileViewModel(dbContextMock.Object, userEmail);
|
|
|
+
|
|
|
+ // Assert
|
|
|
+ Assert.IsNotNull(userProfileViewModel.User);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+ Данные тесты проверяют различные аспекты функциональности ваших ViewModel классов. Краткое описание каждого теста:
|
|
|
+ TestOnPropertyChanged_UpdatesValues
|
|
|
+ Проверяет, что изменение свойства SecondSelectedOption вызывает событие PropertyChanged для свойства Values.
|
|
|
+ TestAuthorizationViewModel_LoginPropertyChange
|
|
|
+ Проверяет, что изменение свойства Login вызывает событие PropertyChanged.
|
|
|
+ AttendanceViewModel_GetNewAttendance_SetsCorrectParameterForDisciplineFilter
|
|
|
+ Проверяет, что метод GetNewAttendance корректно устанавливает значение свойства ParameterName при выбранной дисциплине.
|
|
|
+ AttendanceViewModel_NewOption_ReturnsCorrectOptionsForGroupFilter
|
|
|
+ Проверяет, что метод NewOption возвращает корректный список опций для выбранной группы.
|
|
|
+ TimetableViewModel_NewValues_ForGroup_ReturnsExpectedValues
|
|
|
+ Проверяет, что метод NewValues возвращает ожидаемое количество значений для выбранной группы.
|
|
|
+ TimetableViewModel_NewTimetable_ForTeacher_ReturnsExpectedTimetable
|
|
|
+ Проверяет, что метод NewTimetable возвращает ожидаемое количество расписаний для выбранного преподавателя.
|
|
|
+ DisciplineViewModel_NewValues_ForGroup_ReturnsExpectedValues
|
|
|
+ Проверяет, что метод NewValues возвращает ожидаемое количество значений для выбранной группы.
|
|
|
+ DisciplineViewModel_NewDisciplines_ForTeacher_ReturnsExpectedDisciplines
|
|
|
+ Проверяет, что метод NewDisciplines возвращает ожидаемое количество дисциплин для выбранного преподавателя.
|
|
|
+ UserProfileViewModel_GetDisciplines_ReturnsExpectedDisciplines
|
|
|
+ Проверяет, что свойство Disciplines возвращает ожидаемое количество дисциплин для пользователя.
|
|
|
+ UserProfileViewModel_Initialization_UserIsNotNull
|
|
|
+ Проверяет, что при инициализации UserProfileViewModel свойство User не равно null для пользователя.
|
|
|
+
|
|
|
+ ЗАКЛЮЧЕНИЕ
|
|
|
+ Учебная практика по профессиональному модулю ПМ. 02. Осуществление интеграции программных модулей проходила в Государственном бюджетном профессиональном учреждении <<Нижегородский Губернский колледж>> в период с 16.05.2024 г. по 05.06.2024 г.
|
|
|
+ Основной целью учебной практики являлось формирование основных профессиональных умений, навыков, опыта работы, закрепления и углубления теоретических знаний, приобретенных в процессе изучения профессиональных дисциплин.
|
|
|
+ Для достижения поставленной цели был выполнен следующий перечень задач:
|
|
|
+ Приобретение практических навыков работы с современными информационными системами и программным обеспечением и реализация на практике теоретических знаний;
|
|
|
+ Ознакомление студентов с методами и технологиями разработки программного обеспечения;
|
|
|
+ Практическое применение знаний, полученных в теоретическом обучении, на практике;
|
|
|
+ Овладение навыками тестирования, отладки и оптимизации программного кода;
|
|
|
+ Изучение процесса управления проектами в области информационных технологий;
|
|
|
+ Повышение профессиональной компетенции и уверенности в своих знаниях и навыках;
|
|
|
+ Формирование детального представления о будущей профессии;
|
|
|
+ Приобретение навыков в работе с документами, регламентирующими будущую профессиональную деятельность;
|
|
|
+ Получение представления об этике профессиональной коммуникации;
|
|
|
+ Сбор и обработка материалов, необходимых для составления отчета по практике.
|
|
|
+ В процессе прохождения учебной практики были осуществлены все поставленные задачи, исходя из чего, можно считать, поставленная ранее цель учебной практики была достигнута.
|
|
|
+
|
|
|
+ ПРИЛОЖЕНИЕ А
|
|
|
+Листинг 1. Создание таблиц базы данных
|
|
|
+--роли
|
|
|
+create table Roles
|
|
|
+(
|
|
|
+ Id SERIAL primary key,
|
|
|
+ name character varying(30) unique
|
|
|
+);
|
|
|
+--пользователи
|
|
|
+create table Users
|
|
|
+(
|
|
|
+ Id Serial primary key,
|
|
|
+ first_name character varying(30) not null,
|
|
|
+ last_name character varying(30) not null,
|
|
|
+ middle_name character varying(30),
|
|
|
+ mail character varying(50) not null unique,
|
|
|
+ phone_number character varying(20) unique,
|
|
|
+ date_birth date,
|
|
|
+ Id_role int references Roles(Id) not null
|
|
|
+);
|
|
|
+--Кафедры
|
|
|
+create table Departments
|
|
|
+(
|
|
|
+ Id SERIAL primary key,
|
|
|
+ name character varying(70) unique not null
|
|
|
+);
|
|
|
+--Специальности
|
|
|
+create table Specialties
|
|
|
+(
|
|
|
+ Id SERIAL primary key,
|
|
|
+ name character varying(70) unique not null,
|
|
|
+ Id_department int references Departments(Id) not null
|
|
|
+);
|
|
|
+--Группы
|
|
|
+create table "Groups"
|
|
|
+(
|
|
|
+ Id Serial primary key,
|
|
|
+ Id_specialty int references Specialties(Id) not null,
|
|
|
+ start_date date not null,
|
|
|
+ name character varying(5) not null
|
|
|
+);
|
|
|
+--студенты
|
|
|
+create table Students
|
|
|
+(
|
|
|
+ user_Id int references Users(Id) primary key,
|
|
|
+ group_Id int references "Groups"(Id) not null
|
|
|
+);
|
|
|
+--корпусы (филиалы)
|
|
|
+create table Buildings
|
|
|
+(
|
|
|
+ Id serial primary key,
|
|
|
+ Mgr int references Users(Id) not null,--заведующий
|
|
|
+ address character varying(70) not null
|
|
|
+);
|
|
|
+--преподаватели
|
|
|
+create table Teachers
|
|
|
+(
|
|
|
+ user_Id int references Users(Id) primary key,
|
|
|
+ department_Id int references Departments(Id)
|
|
|
+);
|
|
|
+--дисциплины
|
|
|
+create table Disciplines
|
|
|
+(
|
|
|
+ Id serial primary key,
|
|
|
+ name character varying(60) not null,
|
|
|
+ department_Id int references Departments(Id) not null,
|
|
|
+ academic_hours int not null
|
|
|
+);
|
|
|
+--дисциплины преподавателей
|
|
|
+create table TeachersDisciplines
|
|
|
+(
|
|
|
+ Id serial primary key,
|
|
|
+ teacher_Id int references Teachers(user_Id) not null,
|
|
|
+ discipline_Id int references Disciplines(Id) not null
|
|
|
+);
|
|
|
+--дисциплины групп
|
|
|
+create table GroupDiscipline
|
|
|
+(
|
|
|
+ Id serial primary key,
|
|
|
+ semester int,
|
|
|
+ teacher_discipline_Id int references TeachersDisciplines(Id) not null,
|
|
|
+ group_Id int references "Groups"(Id) not null
|
|
|
+);
|
|
|
+--расписание
|
|
|
+create table Timetables
|
|
|
+(
|
|
|
+ Id serial primary key,
|
|
|
+ class_date date not null,
|
|
|
+ class_number smallint,
|
|
|
+ group_discipline_Id int references GroupDiscipline(Id) not null,
|
|
|
+ buildind_Id int references Buildings(Id) not null
|
|
|
+);
|
|
|
+--оценки
|
|
|
+create table StudentGrades
|
|
|
+(
|
|
|
+ Id Serial primary key,
|
|
|
+ student_Id int references Students(user_Id) not null,
|
|
|
+ group_discipline_Id int references GroupDiscipline(Id) not null,
|
|
|
+ graded_at date,
|
|
|
+ grade smallint not null,
|
|
|
+ work_name character varying(70)
|
|
|
+);
|
|
|
+--посещаемость
|
|
|
+create table Attendance
|
|
|
+(
|
|
|
+ Id serial primary key,
|
|
|
+ timetable_Id int references Timetables(Id) not null,
|
|
|
+ student_Id int references Students(user_Id) not null,
|
|
|
+ attended bool not null
|
|
|
+);
|
|
|
+
|
|
|
+ ПРИЛОЖЕНИЕ Б
|
|
|
+Листинг 2. Скрипт заполнения таблиц базы данных
|
|
|
+INSERT INTO Roles (name) VALUES ('преподаватель'), ('студент');
|
|
|
+
|
|
|
+INSERT INTO Users (first_name, last_name, middle_name, mail, phone_number, date_birth, Id_role) VALUES
|
|
|
+ ('Александр', 'Иванов', 'Петрович', 'alex.ivanov@example.com', '+12345678901', '1990-03-15', 1),
|
|
|
+ ('Елена', 'Смирнова', 'Андреевна', 'elena.smirnova@example.com', '+12345678902', '1995-08-22', 2),
|
|
|
+ ('Иван', 'Петров', 'Александрович', 'ivan.petrov@example.com', '+12345678903', '1993-05-11', 2),
|
|
|
+ ('Мария', 'Козлова', 'Дмитриевна', 'maria.kozlova@example.com', '+12345678904', '1998-11-30', 2),
|
|
|
+ ('Сергей', 'Соколов', 'Иванович', 'sergey.sokolov@example.com', '+12345678905', '1994-02-25', 1),
|
|
|
+ ('Анна', 'Михайлова', 'Сергеевна', 'anna.mikhailova@example.com', '+12345678906', '1996-07-14', 2),
|
|
|
+ ('Павел', 'Новиков', 'Артемович', 'pavel.novikov@example.com', '+12345678907', '1991-09-03', 2),
|
|
|
+ ('Юлия', 'Федорова', 'Алексеевна', 'yulia.fedorova@example.com', '+12345678908', '1997-04-20', 2),
|
|
|
+ ('Артем', 'Морозов', 'Павлович', 'artem.morozov@example.com', '+12345678909', '1992-12-09', 1),
|
|
|
+ ('Екатерина', 'Волкова', 'Игоревна', 'ekaterina.volkova@example.com', '+12345678910', '1999-01-18', 2),
|
|
|
+ ('Денис', 'Павлов', 'Федорович', 'denis.pavlov@example.com', '+12345678911', '1990-06-27', 2),
|
|
|
+ ('Ольга', 'Семенова', 'Денисовна', 'olga.semenova@example.com', '+12345678912', '1995-10-16', 2),
|
|
|
+ ('Игорь', 'Гончаров', 'Дмитриевич', 'igor.goncharov@example.com', '+12345678913', '1993-03-05', 1),
|
|
|
+ ('Евгения', 'Николаева', 'Олеговна', 'evgenia.nikolaeva@example.com', '+12345678914', '1998-08-24', 2),
|
|
|
+ ('Алексей', 'Кузнецов', 'Владимирович', 'alexey.kuznetsov@example.com', '+12345678915', '1994-01-13', 2),
|
|
|
+ ('Анастасия', 'Ильина', 'Юрьевна', 'anastasia.ilina@example.com', '+12345678916', '1991-07-02', 2),
|
|
|
+ ('Григорий', 'Савельев', 'Антонович', 'grigory.savelyev@example.com', '+12345678917', '1996-11-21', 2),
|
|
|
+ ('Татьяна', 'Беляева', 'Игнатьевна', 'tatyana.belyaeva@example.com', '+12345678918', '1992-04-10', 1),
|
|
|
+ ('Дмитрий', 'Тимофеев', 'Аркадьевич', 'dmitry.timofeev@example.com', '+12345678919', '1997-09-29', 2),
|
|
|
+ ('Елена', 'Калинина', 'Георгиевна', 'elena.kalinina@example.com', '+12345678920', '1999-02-08', 2);
|
|
|
+
|
|
|
+INSERT INTO Departments (name) VALUES
|
|
|
+ ('Отделение инженерии и технологии'),
|
|
|
+ ('Факультет информационных технологий'),
|
|
|
+ ('Кафедра гуманитарных наук');
|
|
|
+
|
|
|
+INSERT INTO Specialties (name, Id_department) VALUES
|
|
|
+ ('Инженерия программного обеспечения', 1),
|
|
|
+ ('Автоматизация технологических процессов', 1),
|
|
|
+ ('Системный анализ и управление', 1),
|
|
|
+ ('Веб-разработка и программирование', 2),
|
|
|
+ ('Базы данных и информационные системы', 2),
|
|
|
+ ('Компьютерная безопасность', 2),
|
|
|
+ ('Лингвистика', 3),
|
|
|
+ ('Психология', 3),
|
|
|
+ ('История искусств', 3),
|
|
|
+ ('Социология', 3);
|
|
|
+
|
|
|
+INSERT INTO "Groups" (Id_specialty, start_date, name) VALUES
|
|
|
+ (1, '2023-09-01', '11ИПО'),
|
|
|
+ (1, '2022-09-01', '21ИПО'),
|
|
|
+ (1, '2021-09-01', '31ИПО'),
|
|
|
+ (1, '2020-09-01', '41ИПО'),
|
|
|
+ (2, '2023-09-01', '11АТП'),
|
|
|
+ (2, '2022-09-01', '21АТП'),
|
|
|
+ (2, '2021-09-01', '31АТП'),
|
|
|
+ (2, '2020-09-01', '41АТП'),
|
|
|
+ (3, '2023-09-01', '11САУ'),
|
|
|
+ (3, '2022-09-01', '21САУ'),
|
|
|
+ (3, '2021-09-01', '31САУ'),
|
|
|
+ (3, '2020-09-01', '41САУ'),
|
|
|
+ (4, '2023-09-01', '11ВПР'),
|
|
|
+ (4, '2022-09-01', '21ВПР'),
|
|
|
+ (4, '2021-09-01', '31ВПР'),
|
|
|
+ (4, '2020-09-01', '41ВПР'),
|
|
|
+ (5, '2023-09-01', '11ВРП'),
|
|
|
+ (5, '2022-09-01', '21ВРП'),
|
|
|
+ (5, '2021-09-01', '31ВРП'),
|
|
|
+ (5, '2020-09-01', '41ВРП'),
|
|
|
+ (6, '2023-09-01', '11КБ'),
|
|
|
+ (6, '2022-09-01', '21КБ'),
|
|
|
+ (6, '2021-09-01', '31КБ'),
|
|
|
+ (6, '2020-09-01', '41КБ'),
|
|
|
+ (7, '2023-09-01', '11БД'),
|
|
|
+ (7, '2022-09-01', '21БД'),
|
|
|
+ (7, '2021-09-01', '31БД'),
|
|
|
+ (7, '2020-09-01', '41БД'),
|
|
|
+ (8, '2023-09-01', '11КО'),
|
|
|
+ (8, '2022-09-01', '21КО'),
|
|
|
+ (8, '2021-09-01', '31КО'),
|
|
|
+ (8, '2020-09-01', '41КО'),
|
|
|
+ (9, '2023-09-01', '11ЛИН'),
|
|
|
+ (9, '2022-09-01', '21ЛИН'),
|
|
|
+ (9, '2021-09-01', '31ЛИН'),
|
|
|
+ (9, '2020-09-01', '41ЛИН'),
|
|
|
+ (10, '2023-09-01', '11ПСИ'),
|
|
|
+ (10, '2022-09-01', '21ПСИ'),
|
|
|
+ (10, '2021-09-01', '31ПСИ'),
|
|
|
+ (10, '2020-09-01', '41ПСИ');
|
|
|
+
|
|
|
+
|
|
|
+select id from Users where id_role = 1
|
|
|
+
|
|
|
+INSERT INTO Students (user_id, group_id) values
|
|
|
+(2,1),
|
|
|
+(3,1),
|
|
|
+(4,1),
|
|
|
+(6,1),
|
|
|
+(7,1),
|
|
|
+(8,3),
|
|
|
+(10,3),
|
|
|
+(11,3),
|
|
|
+(12,3),
|
|
|
+(14,3),
|
|
|
+(15,7),
|
|
|
+(16,7),
|
|
|
+(17,7),
|
|
|
+(19,7),
|
|
|
+(20,7);
|
|
|
+
|
|
|
+insert into Teachers values
|
|
|
+(1,1),
|
|
|
+(5,1),
|
|
|
+(9,2),
|
|
|
+(13,2),
|
|
|
+(18,3);
|
|
|
+
|
|
|
+INSERT INTO Disciplines (name, department_id, academic_hours)
|
|
|
+VALUES
|
|
|
+ ('Программирование на Python', 1, 90),
|
|
|
+ ('Математический анализ', 1, 120),
|
|
|
+ ('Алгоритмы и структуры данных', 1, 100),
|
|
|
+ ('Промышленная автоматизация', 1, 80),
|
|
|
+ ('Веб-дизайн', 2, 80),
|
|
|
+ ('Базы данных и SQL', 2, 100),
|
|
|
+ ('Компьютерная безопасность', 2, 120),
|
|
|
+ ('Системное программирование', 2, 90),
|
|
|
+ ('История искусств', 3, 60),
|
|
|
+ ('Социология', 3, 80),
|
|
|
+ ('Психология', 3, 100),
|
|
|
+ ('Философия', 3, 70);
|
|
|
+
|
|
|
+-- Заполнение таблицы TeachersDisciplines
|
|
|
+-- Преподаватель 1 (Александр Иванов)
|
|
|
+INSERT INTO TeachersDisciplines (teacher_id, discipline_id)
|
|
|
+VALUES
|
|
|
+ (1, 1), -- Программирование на Python
|
|
|
+ (1, 2), -- Математический анализ
|
|
|
+ (1, 3), -- Алгоритмы и структуры данных
|
|
|
+ (1, 4); -- Промышленная автоматизация
|
|
|
+
|
|
|
+-- Преподаватель 5 (Сергей Соколов)
|
|
|
+INSERT INTO TeachersDisciplines (teacher_id, discipline_id)
|
|
|
+VALUES
|
|
|
+ (5, 1), -- Программирование на Python
|
|
|
+ (5, 3), -- Алгоритмы и структуры данных
|
|
|
+ (5, 4), -- Промышленная автоматизация
|
|
|
+ (5, 8); -- Системное программирование
|
|
|
+
|
|
|
+-- Преподаватель 9 (Артем Морозов)
|
|
|
+INSERT INTO TeachersDisciplines (teacher_id, discipline_id)
|
|
|
+VALUES
|
|
|
+ (9, 5), -- Веб-дизайн
|
|
|
+ (9, 6), -- Базы данных и SQL
|
|
|
+ (9, 7), -- Компьютерная безопасность
|
|
|
+ (9, 8); -- Системное программирование
|
|
|
+
|
|
|
+-- Преподаватель 13 (Игорь Гончаров)
|
|
|
+INSERT INTO TeachersDisciplines (teacher_id, discipline_id)
|
|
|
+VALUES
|
|
|
+ (13, 5), -- Веб-дизайн
|
|
|
+ (13, 6), -- Базы данных и SQL
|
|
|
+ (13, 7), -- Компьютерная безопасность
|
|
|
+ (13, 8); -- Системное программирование
|
|
|
+
|
|
|
+-- Преподаватель 18 (Татьяна Беляева)
|
|
|
+INSERT INTO TeachersDisciplines (teacher_id, discipline_id)
|
|
|
+VALUES
|
|
|
+ (18, 9), -- История искусств
|
|
|
+ (18, 10), -- Социология
|
|
|
+ (18, 11), -- Психология
|
|
|
+ (18, 12); -- Философия
|
|
|
+
|
|
|
+
|
|
|
+-- Для преподавателя с ID 1 (Александр Иванов)
|
|
|
+-- Группа 11ИПО
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 1, 1), -- Программирование на Python
|
|
|
+ (1, 2, 1), -- Математический анализ
|
|
|
+ (1, 3, 1), -- Алгоритмы и структуры данных
|
|
|
+ (1, 4, 1); -- Промышленная автоматизация
|
|
|
+
|
|
|
+-- Группа 21ИПО
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 1, 2), -- Программирование на Python
|
|
|
+ (1, 2, 2), -- Математический анализ
|
|
|
+ (1, 3, 2), -- Алгоритмы и структуры данных
|
|
|
+ (1, 4, 2); -- Промышленная автоматизация
|
|
|
+
|
|
|
+-- Группа 31ИПО
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 1, 3), -- Программирование на Python
|
|
|
+ (1, 2, 3), -- Математический анализ
|
|
|
+ (1, 3, 3), -- Алгоритмы и структуры данных
|
|
|
+ (1, 4, 3); -- Промышленная автоматизация
|
|
|
+
|
|
|
+-- Группа 41ИПО
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 1, 4), -- Программирование на Python
|
|
|
+ (1, 2, 4), -- Математический анализ
|
|
|
+ (1, 3, 4), -- Алгоритмы и структуры данных
|
|
|
+ (1, 4, 4); -- Промышленная автоматизация
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ -- Для преподавателя с ID 1 (Александр Иванов)
|
|
|
+-- Группа 31ИПО
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 1, 3), -- Программирование на Python
|
|
|
+ (1, 2, 3), -- Математический анализ
|
|
|
+ (1, 3, 3), -- Алгоритмы и структуры данных
|
|
|
+ (1, 4, 3); -- Промышленная автоматизация
|
|
|
+
|
|
|
+-- Группа 41ИПО
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 1, 4), -- Программирование на Python
|
|
|
+ (1, 2, 4), -- Математический анализ
|
|
|
+ (1, 3, 4), -- Алгоритмы и структуры данных
|
|
|
+ (1, 4, 4); -- Промышленная автоматизация
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных групп.
|
|
|
+
|
|
|
+-- Для преподавателя с ID 5 (Сергей Соколов)
|
|
|
+-- Группа 31ИПО
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 5, 3), -- Программирование на Python
|
|
|
+ (1, 3, 3), -- Алгоритмы и структуры данных
|
|
|
+ (1, 4, 3), -- Промышленная автоматизация
|
|
|
+ (1, 8, 3); -- Системное программирование
|
|
|
+
|
|
|
+-- Группа 41ИПО
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 5, 4), -- Программирование на Python
|
|
|
+ (1, 3, 4), -- Алгоритмы и структуры данных
|
|
|
+ (1, 4, 4), -- Промышленная автоматизация
|
|
|
+ (1, 8, 4); -- Системное программирование
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных групп.
|
|
|
+
|
|
|
+-- Для преподавателя с ID 9 (Артем Морозов)
|
|
|
+-- Группа 11АТП
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 9, 5), -- Веб-дизайн
|
|
|
+ (1, 10, 5), -- Базы данных и SQL
|
|
|
+ (1, 11, 5), -- Компьютерная безопасность
|
|
|
+ (1, 8, 5); -- Системное программирование
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных групп.
|
|
|
+
|
|
|
+-- Для преподавателя с ID 13 (Игорь Гончаров)
|
|
|
+-- Группа 11АТП
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 9, 5), -- Веб-дизайн
|
|
|
+ (1, 10, 5), -- Базы данных и SQL
|
|
|
+ (1, 11, 5), -- Компьютерная безопасность
|
|
|
+ (1, 8, 5); -- Системное программирование
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных групп.
|
|
|
+
|
|
|
+-- Для преподавателя с ID 18 (Татьяна Беляева)
|
|
|
+-- Группа 11САУ
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 12, 9), -- Философия
|
|
|
+ (1, 10, 9), -- Социология
|
|
|
+ (1, 11, 9), -- Психология
|
|
|
+ (1, 9, 9); -- История искусств
|
|
|
+
|
|
|
+ -- Для преподавателя с ID 1 (Александр Иванов)
|
|
|
+-- Группа 41САУ
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 1, 12), -- Программирование на Python
|
|
|
+ (1, 2, 12), -- Математический анализ
|
|
|
+ (1, 3, 12), -- Алгоритмы и структуры данных
|
|
|
+ (1, 5, 12); -- Философия
|
|
|
+
|
|
|
+-- Группа 11ВПР
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 1, 13), -- Программирование на Python
|
|
|
+ (1, 2, 13), -- Математический анализ
|
|
|
+ (1, 3, 13), -- Алгоритмы и структуры данных
|
|
|
+ (1, 5, 13); -- Философия
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных групп.
|
|
|
+
|
|
|
+-- Для преподавателя с ID 5 (Сергей Соколов)
|
|
|
+-- Группа 41САУ
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 5, 12), -- Философия
|
|
|
+ (1, 3, 12), -- Алгоритмы и структуры данных
|
|
|
+ (1, 4, 12), -- Промышленная автоматизация
|
|
|
+ (1, 6, 12); -- Компьютерная безопасность
|
|
|
+
|
|
|
+-- Группа 11ВПР
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 5, 13), -- Философия
|
|
|
+ (1, 3, 13), -- Алгоритмы и структуры данных
|
|
|
+ (1, 4, 13), -- Промышленная автоматизация
|
|
|
+ (1, 6, 13); -- Компьютерная безопасность
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных групп.
|
|
|
+
|
|
|
+-- Для преподавателя с ID 9 (Артем Морозов)
|
|
|
+-- Группа 11БД
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 10, 14), -- Базы данных и SQL
|
|
|
+ (1, 11, 14), -- Компьютерная безопасность
|
|
|
+ (1, 12, 14), -- Философия
|
|
|
+ (1, 13, 14); -- История искусств
|
|
|
+
|
|
|
+-- Группа 21БД
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 10, 15), -- Базы данных и SQL
|
|
|
+ (1, 11, 15), -- Компьютерная безопасность
|
|
|
+ (1, 12, 15), -- Философия
|
|
|
+ (1, 13, 15); -- История искусств
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных групп.
|
|
|
+
|
|
|
+-- Для преподавателя с ID 13 (Игорь Гончаров)
|
|
|
+-- Группа 11БД
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 10, 14), -- Базы данных и SQL
|
|
|
+ (1, 11, 14), -- Компьютерная безопасность
|
|
|
+ (1, 12, 14), -- Философия
|
|
|
+ (1, 13, 14); -- История искусств
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных групп.
|
|
|
+
|
|
|
+-- Для преподавателя с ID 18 (Татьяна Беляева)
|
|
|
+-- Группа 11ЛИН
|
|
|
+INSERT INTO GroupDiscipline (semester, teacher_discipline_id, group_id)
|
|
|
+VALUES
|
|
|
+ (1, 9, 19), -- Веб-дизайн
|
|
|
+ (1, 10, 19), -- Базы данных и SQL
|
|
|
+ (1, 11, 19), -- Компьютерная безопасность
|
|
|
+ (1, 12, 19); -- Философия
|
|
|
+
|
|
|
+INSERT INTO Buildings (Mgr, address) VALUES
|
|
|
+(1, 'ул. Пушкина, д. 10'),
|
|
|
+(5, 'пр. Ленина, д. 25');
|
|
|
+
|
|
|
+ALTER TABLE Timetables
|
|
|
+RENAME COLUMN buildind_id TO building_id;
|
|
|
+-- Для преподавателя с ID 1 (Александр Иванов)
|
|
|
+-- Понедельник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-02', 1, 1, 1), -- 9:00-10:30 Программирование на Python
|
|
|
+ ('2024-09-02', 2, 1, 1), -- 10:45-12:15 Математический анализ
|
|
|
+ ('2024-09-02', 3, 1, 1), -- 12:30-14:00 Алгоритмы и структуры данных
|
|
|
+ ('2024-09-02', 4, 1, 1); -- 14:30-16:00 Промышленная автоматизация
|
|
|
+
|
|
|
+-- Вторник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-03', 1, 1, 1), -- 9:00-10:30 Программирование на Python
|
|
|
+ ('2024-09-03', 2, 1, 1), -- 10:45-12:15 Математический анализ
|
|
|
+ ('2024-09-03', 3, 1, 1), -- 12:30-14:00 Алгоритмы и структуры данных
|
|
|
+ ('2024-09-03', 4, 1, 1); -- 14:30-16:00 Промышленная автоматизация
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных дней и преподавателей.
|
|
|
+-- Для преподавателя с ID 5 (Сергей Соколов)
|
|
|
+-- Понедельник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-02', 1, 2, 1), -- 9:00-10:30 Программирование на Python
|
|
|
+ ('2024-09-02', 2, 2, 1), -- 10:45-12:15 Алгоритмы и структуры данных
|
|
|
+ ('2024-09-02', 3, 2, 1), -- 12:30-14:00 Промышленная автоматизация
|
|
|
+ ('2024-09-02', 4, 2, 1); -- 14:30-16:00 Системное программирование
|
|
|
+
|
|
|
+-- Вторник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-03', 1, 2, 1), -- 9:00-10:30 Программирование на Python
|
|
|
+ ('2024-09-03', 2, 2, 1), -- 10:45-12:15 Алгоритмы и структуры данных
|
|
|
+ ('2024-09-03', 3, 2, 1), -- 12:30-14:00 Промышленная автоматизация
|
|
|
+ ('2024-09-03', 4, 2, 1); -- 14:30-16:00 Системное программирование
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных дней и преподавателей.
|
|
|
+-- Для преподавателя с ID 9 (Артем Морозов)
|
|
|
+-- Понедельник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-02', 1, 3, 1), -- 9:00-10:30 Веб-дизайн
|
|
|
+ ('2024-09-02', 2, 3, 1), -- 10:45-12:15 Базы данных и SQL
|
|
|
+ ('2024-09-02', 3, 3, 1), -- 12:30-14:00 Компьютерная безопасность
|
|
|
+ ('2024-09-02', 4, 3, 1); -- 14:30-16:00 Системное программирование
|
|
|
+
|
|
|
+-- Вторник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-03', 1, 3, 1), -- 9:00-10:30 Веб-дизайн
|
|
|
+ ('2024-09-03', 2, 3, 1), -- 10:45-12:15 Базы данных и SQL
|
|
|
+ ('2024-09-03', 3, 3, 1), -- 12:30-14:00 Компьютерная безопасность
|
|
|
+ ('2024-09-03', 4, 3, 1); -- 14:30-16:00 Системное программирование
|
|
|
+-- Для преподавателя с ID 13 (Игорь Гончаров)
|
|
|
+-- Понедельник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-02', 1, 4, 1), -- 9:00-10:30 Программирование на Java
|
|
|
+ ('2024-09-02', 2, 4, 1), -- 10:45-12:15 Веб-дизайн
|
|
|
+ ('2024-09-02', 3, 4, 1), -- 12:30-14:00 Базы данных и SQL
|
|
|
+ ('2024-09-02', 4, 4, 1); -- 14:30-16:00 Компьютерная безопасность
|
|
|
+
|
|
|
+-- Вторник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-03', 1, 4, 1), -- 9:00-10:30 Программирование на Java
|
|
|
+ ('2024-09-03', 2, 4, 1), -- 10:45-12:15 Веб-дизайн
|
|
|
+ ('2024-09-03', 3, 4, 1), -- 12:30-14:00 Базы данных и SQL
|
|
|
+ ('2024-09-03', 4, 4, 1); -- 14:30-16:00 Компьютерная безопасность
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных дней и преподавателей.
|
|
|
+-- Для преподавателя с ID 18 (Татьяна Беляева)
|
|
|
+-- Понедельник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-02', 1, 5, 1), -- 9:00-10:30 История искусств
|
|
|
+ ('2024-09-02', 2, 5, 1), -- 10:45-12:15 Лингвистика
|
|
|
+ ('2024-09-02', 3, 5, 1), -- 12:30-14:00 Психология
|
|
|
+ ('2024-09-02', 4, 5, 1); -- 14:30-16:00 Социология
|
|
|
+
|
|
|
+-- Вторник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-03', 1, 5, 1), -- 9:00-10:30 История искусств
|
|
|
+ ('2024-09-03', 2, 5, 1), -- 10:45-12:15 Лингвистика
|
|
|
+ ('2024-09-03', 3, 5, 1), -- 12:30-14:00 Психология
|
|
|
+ ('2024-09-03', 4, 5, 1); -- 14:30-16:00 Социология
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных дней и преподавателей.
|
|
|
+-- Для преподавателя с ID 1 (Александр Иванов)
|
|
|
+-- Понедельник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-02', 1, 1, 2), -- 9:00-10:30 Программирование на Python
|
|
|
+ ('2024-09-02', 2, 1, 2), -- 10:45-12:15 Математический анализ
|
|
|
+ ('2024-09-02', 3, 1, 2), -- 12:30-14:00 Алгоритмы и структуры данных
|
|
|
+ ('2024-09-02', 4, 1, 2); -- 14:30-16:00 Промышленная автоматизация
|
|
|
+
|
|
|
+-- Вторник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-03', 1, 1, 2), -- 9:00-10:30 Программирование на Python
|
|
|
+ ('2024-09-03', 2, 1, 2), -- 10:45-12:15 Математический анализ
|
|
|
+ ('2024-09-03', 3, 1, 2), -- 12:30-14:00 Алгоритмы и структуры данных
|
|
|
+ ('2024-09-03', 4, 1, 2); -- 14:30-16:00 Промышленная автоматизация
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных дней и преподавателей.
|
|
|
+
|
|
|
+ -- Для преподавателя с ID 5 (Сергей Соколов)
|
|
|
+-- Вторник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-03', 1, 2, 2), -- 9:00-10:30 Программирование на Python
|
|
|
+ ('2024-09-03', 2, 2, 2), -- 10:45-12:15 Алгоритмы и структуры данных
|
|
|
+ ('2024-09-03', 3, 2, 2), -- 12:30-14:00 Промышленная автоматизация
|
|
|
+ ('2024-09-03', 4, 2, 2); -- 14:30-16:00 Системное программирование
|
|
|
+
|
|
|
+-- Продолжаем аналогично для остальных дней и преподавателей.
|
|
|
+-- Для преподавателя с ID 9 (Артем Морозов)
|
|
|
+-- Вторник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-03', 1, 3, 2), -- 9:00-10:30 Веб-дизайн
|
|
|
+ ('2024-09-03', 2, 3, 2), -- 10:45-12:15 Базы данных и SQL
|
|
|
+ ('2024-09-03', 3, 3, 2), -- 12:30-14:00 Компьютерная безопасность
|
|
|
+ ('2024-09-03', 4, 3, 2); -- 14:30-16:00 Системное программирование
|
|
|
+
|
|
|
+ -- Для преподавателя с ID 13 (Игорь Гончаров)
|
|
|
+-- Вторник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-03', 1, 4, 2), -- 9:00-10:30 Программирование на Java
|
|
|
+ ('2024-09-03', 2, 4, 2), -- 10:45-12:15 Веб-дизайн
|
|
|
+ ('2024-09-03', 3, 4, 2), -- 12:30-14:00 Базы данных и SQL
|
|
|
+ ('2024-09-03', 4, 4, 2); -- 14:30-16:00 Компьютерная безопасность
|
|
|
+
|
|
|
+-- Для преподавателя с ID 18 (Татьяна Беляева)
|
|
|
+-- Вторник
|
|
|
+INSERT INTO Timetables (class_date, class_number, group_discipline_id, building_id)
|
|
|
+VALUES
|
|
|
+ ('2024-09-03', 1, 5, 2), -- 9:00-10:30 История искусств
|
|
|
+ ('2024-09-03', 2, 5, 2), -- 10:45-12:15 Лингвистика
|
|
|
+ ('2024-09-03', 3, 5, 2), -- 12:30-14:00 Психология
|
|
|
+ ('2024-09-03', 4, 5, 2); -- 14:30-16:00 Социология
|
|
|
+
|
|
|
+INSERT INTO StudentGrades (student_id, group_discipline_id, graded_at, grade, work_name)
|
|
|
+SELECT
|
|
|
+ s.user_id,
|
|
|
+ gd.id,
|
|
|
+ now() - interval '1' month * (random() * 12 + 1), -- Случайная дата за последние 12 месяцев
|
|
|
+ floor(random() * 4) + 2, -- Случайная оценка от 2 до 5
|
|
|
+ CASE floor(random() * 4)
|
|
|
+ WHEN 0 THEN 'Контрольная работа'
|
|
|
+ WHEN 1 THEN 'Экзамен'
|
|
|
+ WHEN 2 THEN 'Лабораторная работа'
|
|
|
+ ELSE 'Курсовая работа'
|
|
|
+ END
|
|
|
+FROM
|
|
|
+ Students s
|
|
|
+JOIN
|
|
|
+ "Groups" g ON s.group_id = g.id
|
|
|
+JOIN
|
|
|
+ GroupDiscipline gd ON g.id = gd.group_id;
|
|
|
+
|
|
|
+-- Заполняем таблицу Attendance для всех студентов и их дисциплин, учитывая группу студента
|
|
|
+INSERT INTO Attendance (timetable_id, student_id, attended)
|
|
|
+SELECT
|
|
|
+ tt.id,
|
|
|
+ s.user_id,
|
|
|
+ CASE floor(random() * 2)
|
|
|
+ WHEN 0 THEN true -- Случайно выбираем, посетил ли студент занятие
|
|
|
+ ELSE false
|
|
|
+ END
|
|
|
+FROM
|
|
|
+ Timetables tt
|
|
|
+JOIN
|
|
|
+ GroupDiscipline gd ON tt.group_discipline_id = gd.id
|
|
|
+JOIN
|
|
|
+ Students s ON gd.group_id = s.group_id;
|
|
|
+
|