Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/9098| Title: | Програмне забезпечення автоматизованої системи тестування абітурієнтів університету |
| Authors: | Олексюк, Вадим Володимирович Оратівський, Сергій Ігорович |
| Keywords: | автоматизована система тестування;абітурієнти;вебзастосунок;Node JS;React;PostgreSQL;інформаційна система;оцінювання знань |
| Issue Date: | 2023 |
| Abstract: | Бакалаврська робота студента Оратівського С.І. присвячена розробці програмного забезпечення автоматизованої системи тестування абітурієнтів університету. У роботі розглянуто актуальні питання цифровізації процесів вступної кампанії, зокрема підвищення ефективності, об’єктивності та швидкості оцінювання знань абітурієнтів. Метою роботи є створення зручної, надійної та масштабованої системи тестування, яка забезпечує автоматизоване проведення тестів, обробку результатів і збереження даних. У процесі дослідження проаналізовано існуючі підходи до організації онлайн-тестування та визначено основні вимоги до системи. Розроблене програмне забезпечення реалізовано з використанням сучасних технологій: Node JS для серверної частини, React для створення інтерфейсу користувача та PostgreSQL як системи управління базами даних. Система забезпечує функціональні можливості реєстрації користувачів, формування тестових завдань, проведення тестування в режимі реального часу, автоматичне оцінювання результатів та формування звітів. У результаті виконання роботи створено працездатний прототип автоматизованої системи тестування, який може бути впроваджений у навчальних закладах для оптимізації процесу відбору абітурієнтів. |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/9098 |
| Appears in Collections: | 121 Інженерія програмного забезпечення (Інженерія програмного забезпечення) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Сергій Оратівський.pdf Restricted Access | 1.65 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет інформаційних технологій і систем
Кафедра програмного забезпечення автоматизованих систем
ПОЯСНЮВАЛЬНА ЗАПИСКА
до кваліфікаційної роботи
«бакалавра»
освітній рівень
на тему: Програмне забезпечення автоматизованої системи тестування абі-
турієнтів університету
Виконав: студент 4 курсу, групи ПЗС-2044
Спеціальності
121 «Інженерія програмного забезпечення»
(шифр і назва напряму підготовки)
Студент Оратівський С.І.
(прізвище та ініціали)
Керівник Олексюк В.В.
(прізвище та ініціали)
Рецензент
(прізвище та ініціали)
Черкаси 2023
ЧДТУ.232101.006 ПЗ
ЗМІСТ
ВСТУП ....................................................................................................................... 6
ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ'ЯЗАННЯ ПОСТАВЛЕНИХ
ЗАВДАНЬ .................................................................................................................. 9
1.1 Огляд існуючих аналогів ............................................................................. 9
1.2 Актуальні проблеми, що виникають в процесі виконання завдань ... 10
1.3 Методи та засоби, які вже використовуються для усунення проблем та
виконання завдань ............................................................................................... 11
1.4 Конкретизація завдань роботи .................................................................... 15
ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ СИСТЕМИ ....... 18
2.1 Моделювання предметної області............................................................... 18
2.1.1 Предметна область моделювання. Модель предметної області. Словник предметної
області ...................................................................................................................................................... 18
2.1.2 Елементи моделювання предметної області ........................................................................... 20
2.1.3 Робоча область моделювання .................................................................................................... 21
2.2 Формування та аналіз вимог ....................................................................... 23
2.2.1 Формування вимог до програмного забезпечення ................................................................ 23
2.2.2 Формування вимог за допомогою діаграми прецедентів ..................................................... 26
2.3 Проектування логічної структури програмного комплексу ................. 28
2.3.1 Діаграми класів ............................................................................................................................ 28
2.3.2 Діаграми пакетів .......................................................................................................................... 29
2.4 Архітектурне проектування ......................................................................... 31
2.4.1 Діаграма компонентів ................................................................................................................. 31
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма розгортання ............ 33
2.5 Моделювання поведінки системи ............................................................... 36
2.5.1 Діаграма діяльності ..................................................................................................................... 36
2.5.2 Діаграма послідовності................................................................................................................ 38
2.5.3 Діаграма комунікації ................................................................................................................... 39
2.5.4 Діаграма скінченого автомату ................................................................................................... 40
ЧДТУ.232101.005 ПЗ
Зм. Лист №документа Підпис Дата
Розроб. Оратівський С.І. Літ. Лист Листів
Перев. .Олексюк В.В. Програмне забезпечення автомати- Н 3 80
4
зованої системи тестування ФІТІС
Н.контр. абітурієнтів університету
Затв. . кафедра ПЗАС, ПЗС-2044
ЧДТУ.232101.006 ПЗ
РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ...... 43
3.1 Розробка програмного комплексу .............................................................. 43
3.1.1 Обґрунтування вибору засобів реалізації ................................................................................ 43
3.1.2 Опис структурної (функціональної) схеми.............................................................................. 47
3.1.3 Опис логічної схеми системи ..................................................................................................... 49
3.1.4 Розробка бази даних ..................................................................................................................... 51
3.1.5 Розробка інтерфейсу користувача ............................................................................................ 55
3.1.6 Опис розробки програмних компонентів ................................................................................ 60
3.2 Тестування системи ....................................................................................... 62
3.2.1 Модульне тестування .................................................................................................................. 62
3.2.2 Інтеграційне тестування ............................................................................................................. 64
3.2.3 Системне тестування ................................................................................................................... 66
3.2.4 Приймальне тестування ............................................................................................................. 70
ВИСНОВКИ ........................................................................................................... 78
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ .......................................................... 79
ДОДАТОК А ........................................................................................................... 81
ДОДАТОК Б ........................................................................................................... 83
ДОДАТОК В ......................................................................................................... 101
ДОДАТОК Г ......................................................................................................... 108
Л5и ст
ЧДТУ.232101.005 ПЗ 4
ЧДТУ.232101.006 ПЗ
ВСТУП
Актуальність теми. У сучасному світі, коли вибір навчального закладу є
складним і вимагає серйозної підготовки, важливо мати ефективні інструменти
для оцінювання знань і вмінь абітурієнтів. Особливо важливо, щоб ці інструме-
нти були об'єктивними, швидкими та зручними для використання. Однак, тради-
ційні методи проведення тестування мають свої недоліки, такі як можливість пі-
дробки результатів, незручність для абітурієнтів та персоналу, велика кількість
ручної роботи тощо. Саме тому розробка програмного забезпечення для автома-
тизованої системи тестування є важливою задачею для сучасних вищих навчаль-
них закладів.
Мета і завдання розробки. Метою моєї роботи є розробка програмного
забезпечення для автоматизованої системи тестування абітурієнтів університету,
яка дозволяє швидко і ефективно оцінювати знання та вміння абітурієнтів. Для
досягнення цієї мети я поставив наступні завдання: розробка бази даних, ство-
рення інтерфейсу для абітурієнтів, розробка алгоритму тестування, тестування та
налагодження програмного забезпечення.
Об'єкт розробки. Модель роботи програмного забезпечення для автомати-
зованої системи тестування абітурієнтів університету.
Методи проектування та конструювання. Для розробки програмного за-
безпечення автоматизованої системи тестування абітурієнтів університету було
використано сучасні технології, такі як Node JS, React та PostgreSQL.
Node JS було використано як серверну платформу для розробки веб-дода-
тку, що забезпечує обробку запитів користувачів та комунікацію з базою даних.
6
ЧДТУ.232101.006 ПЗ
React було використано для розробки клієнтського веб-додатку. Ця бібліо-
тека дозволяє створювати ефективні та масштабовані інтерфейси користувача,
що забезпечують зручну та швидку роботу з системою тестування.
PostgreSQL було використано як базу даних для зберігання даних про абі-
турієнтів та результати їх тестування. Ця система керування базами даних забез-
печує високу швидкість та надійність роботи з даними, а також забезпечує їх за-
хист та безпеку.
Застосування цих технологій дозволило розробити програмне забезпечення
автоматизованої системи тестування абітурієнтів університету, яка забезпечує
зручний та швидкий доступ до інформації про тестування, що сприяє покра-
щенню якості набору студентів та робить процес відбору більш прозорим та об'-
єктивним.
Опис отриманих результатів. У результаті розробки програмного забез-
печення для автоматизованої системи тестування абітурієнтів університету було
створено функціональну систему, що дозволяє проводити тестування абітурієн-
тів з різних предметів. Крім того, було розроблено інтерфейс, що дає змогу абі-
турієнтам легко та зручно проходити тестування, а адміністраторам - управляти
базою даних тестових завдань та результатами тестування.
Практичне значення отриманих результатів. Розробка програмного за-
безпечення для автоматизованої системи тестування абітурієнтів університету
дозволить значно спростити та прискорити процес відбору кандидатів на нав-
чання. Автоматизована система зможе швидко та ефективно оцінити знання абі-
турієнтів з різних предметів та підготувати звіт про їхній рівень знань.
При використанні програмного забезпечення в університеті можна очіку-
вати такі практичні переваги:
• зменшення часу на проведення тестування абітурієнтів;
7
ЧДТУ.232101.006 ПЗ
• підвищення точності оцінювання знань абітурієнтів;
• зменшення кількості помилок під час обробки даних;
• збільшення продуктивності праці викладачів та адміністраторів, які займа-
ються відбором кандидатів.
Отже, розробка програмного забезпечення для автоматизованої системи те-
стування абітурієнтів університету має велике практичне значення та може пок-
ращити ефективність процесу відбору кандидатів на навчання.
8
ЧДТУ.232101.006 ПЗ
РОЗДІЛ 1
ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ'ЯЗАННЯ ПОСТАВЛЕНИХ
ЗАВДАНЬ
1.1 Огляд існуючих аналогів
Огляд існуючих аналогів допоможе краще зрозуміти потреби та вимоги
користувачів, а також можливості нашого проекту порівняно з конкурентами.
Розглянемо деякі з існуючих аналогів які систем тестування які можна викори-
стовувати для тестування абітурієнтів університету:
− "Testportal"[2] - це веб-сайт, який надає можливість створювати, редагу-
вати та проводити тести з різних дисциплін. Система забезпечує
зберігання результатів тестування і можливість аналізу їх в подальшому.
Недоліком даної системи є відсутність автоматизованого аналізу резуль-
татів.
− "Admissions Testing Service"[3] - це система, яка використовується для
проведення тестування при вступі на певні спеціальності в британських
університетах. Система надає можливість проходити тести онлайн, а ре-
зультати тестів використовуються для прийняття рішення про набір сту-
дентів на певні спеціальності. Недоліком даної системи є відсутність мож-
ливості перескладання тесту в разі незадовільного результату.
− "eTesting"[4] - це система, яка використовується для проведення тесту-
вання в різних сферах, включаючи вступ до університету. Система надає
можливість проводити тести онлайн та аналізувати результати тестування
в режимі реального часу.
9
ЧДТУ.232101.006 ПЗ
Наша система має на меті вирішити недоліки існуючих аналогів, надаючи
можливість автоматизованого аналізу результатів, персоналізованого під-
ходу до кожного абітурієнта та забезпечення широких можливостей для
налаштування тестів та оцінювання результатів. Наша система буде забезпе-
чувати високу точність оцінювання та мінімізувати можливість помилок, що
дозволить забезпечити надійність результатів тестування. Крім того, наша
система буде забезпечувати можливість стеження за прогресом кожного
абітурієнта та надавати інформацію про його поточний стан підготовки до
вступу до університету. Завдяки цьому, система дозволить абітурієнтам
підготуватися до вступного тестування більш ефективно та забезпечить
більш об'єктивні результати при відборі кандидатів на навчання в універси-
теті.
1.2 Актуальні проблеми, що виникають в процесі виконання завдань
Однією з проблем є необхідність аналізу і визначення вимог користувача,
які є досить різноманітними, а отже, можуть вимагати збільшення функціональ-
ності програми. Важливим етапом є розробка вимог до системи тестування,
аналіз потреб користувачів, визначення пріоритетів функцій та інших характери-
стик, необхідних для розробки програмного забезпечення.
Іншою проблемою є забезпечення безпеки і надійності системи тестуван-
ня. Це включає в себе забезпечення захисту від хакерських атак, забезпечення
правильної автентифікації та авторизації користувачів, захист персональних да-
них абітурієнтів та інші важливі питання безпеки.
10
ЧДТУ.232101.006 ПЗ
Також важливим етапом є проектування інтерфейсу користувача, який по-
винен бути зрозумілим та зручним у використанні для широкого кола користу-
вачів. Це вимагає глибоких знань і досвіду в області дизайну та інтерфейсного
проектування.
Іншим важливим аспектом є забезпечення швидкої та ефективної обробки
даних, що вимагає використання відповідних технологій та баз даних.
Важливим етапом виконання проекту є розробка відповідних тестів для пе-
ревірки функціональності та надійності програмного забезпечення.
1.3 Методи та засоби, які вже використовуються для усунення проблем
та виконання завдань
У даному проекті використовуються різноманітні методи та засоби, щоб
усунути проблеми та забезпечити ефективність виконання завдань. Ось кілька з
них:
React - це бібліотека для розробки користувацького інтерфейсу, яка дозво-
ляє створювати складні компоненти інтерфейсу з мінімальною кількістю коду за-
вдяки використанню декларативного підходу до програмування. React дозволяє
створювати перевикористовувані компоненти, що полегшує розробку та збіль-
шує швидкість розробки [5].
Основні можливості React включають в себе:
− Використання компонентів: React дозволяє створювати компо-
ненти, які можна повторно використовувати в різних частинах до-
датку;
11
ЧДТУ.232101.006 ПЗ
− Віртуальний DOM: React використовує віртуальний DOM для
ефективної маніпуляції з DOM-елементами, що дозволяє забезпе-
чити швидку роботу додатку;
− Життєвий цикл компонентів: React має вбудовану систему жит-
тєвого циклу компонентів, що дозволяє виконувати дії під час
створення, оновлення та знищення компонентів;
− Керування станом: React дозволяє керувати станом компонентів,
що дозволяє динамічно змінювати вміст сторінки без перезаван-
таження;
− Хуки: React надає хуки, які дозволяють використовувати функціо-
нальні компоненти зі станом і життєвим циклом, що робить ро-
зробку додатків більш простою та зрозумілою.
Загалом, React є потужною та популярною бібліотекою для створення ви-
сокоякісних інтерфейсів користувача та динамічних WEB-додатків.
Node.js - це платформа для виконання JavaScript поза браузером. Вона доз-
воляє виконувати код на стороні сервера та забезпечує високу швидкість та ефек-
тивність виконання запитів. Node.js забезпечує можливість створювати швидкі та
масштабовані веб-застосунки з високопродуктивними серверними функціями
[6].
Основні можливості Node.js включають:
− Асинхронний ввід/вивід (I/O) - Node.js дозволяє використовувати
асинхронні функції замість блокуючих операцій вводу-виводу, що
дозволяє забезпечити високу продуктивність та ефективність;
− Модульна система - Node.js має вбудовану модульну систему, яка
дозволяє легко організовувати код у логічні блоки, що зроблює
розробку та підтримку додатків більш простим;
12
ЧДТУ.232101.006 ПЗ
− Розширення за допомогою пакетів - Node.js має велику кількість
сторонніх пакетів, які дозволяють розширювати можливості
фреймворку;
− Швидкість виконання - завдяки своєму асинхронному підходу та
оптимізаціям виконання коду, Node.js забезпечує високу швид-
кість виконання додатків.
Express – це один з найпопулярніших фреймворків для веб-розробки на
Node.js. Його основною метою є спрощення створення веб-додатків на Node.js,
забезпечуючи різноманітні можливості для роботи з HTTP-запитами та відпові-
дями [7].
Основні можливості Express включають:
− Маршрутизація: Express дозволяє легко обробляти HTTP-запити
за допомогою маршрутизації. Маршрутизація дозволяє прив'язати
HTTP-запити до конкретних обробників, які будуть відповідати на
запит згідно з його типом та маршрутом.
− Робота з базами даних: Express не надає вбудованих засобів для
роботи з базами даних, але дозволяє використовувати різномані-
тні модулі для роботи з базами даних, такі як Mongoose, Sequelize,
Knex та інші.
− Робота з API: Express дозволяє легко створювати API-інтерфейси
для взаємодії з іншими додатками та сервісами, використовуючи
різноманітні формати обміну даними, такі як JSON, XML та інші.
− HTTPS: Express дозволяє створювати безпечні веб-додатки з ви-
користанням протоколу HTTPS та SSL-сертифікатів.
13
ЧДТУ.232101.006 ПЗ
− Файлова обробка: Express дозволяє обробляти завантажені файли,
що дозволяє створювати функціональність завантаження та збере-
ження файлів на сервері.
− Робота з cookies та сесіями: Express дозволяє зберігати та отриму-
вати дані про користувача в cookies та сесіях, що дозволяє ство-
рювати персоналізовані додатки.
− Масштабованість: Express дозволяє створювати масштабовані
веб-додатки, що забезпечує швидке та ефективне обслуговування
багатьох користувачів одночасно.
PostgreSQL - це об'єктно-реляційна система керування базами даних
(ОРСКБД), яка забезпечує надійне та безпечне зберігання даних. PostgreSQL під-
тримує різні типи даних, такі як числа, рядки, дата і час, та дозволяє працювати
зі складними запитами [8].
Основні можливості PostgreSQL включають:
− Підтримка ACID (Atomicity, Consistency, Isolation, Durability) - га-
рантує надійність і цілісність даних;
− Розширена підтримка SQL-запитів, включаючи багато унікальних
і продуманих функцій та операцій;
− Підтримка географічних даних та робота з геоданими;
− Підтримка великих обсягів даних і можливість масштабування баз
даних;
− Підтримка реплікації та кластеризації для забезпечення високої
доступності та стійкості системи;
− Розширені засоби адміністрування, забезпечення безпеки та
аудиту даних;
14
ЧДТУ.232101.006 ПЗ
Ці можливості роблять PostgreSQL потужним та надійним рішенням для
побудови різноманітних додатків та проектів з великим обсягом даних.
Тестування коду - використовується для забезпечення якості коду та ви-
явлення помилок перед випуском виробу в експлуатацію. Для тестування було
використано фреймворк для тестування Jest.
Jest - це популярний фреймворк для тестування JavaScript-коду, який ро-
зробляється Facebook. Його можливості полягають у забезпеченні розробників
засобами для написання, запуску та аналізу тестів у середовищі Node.js або в
браузері. Він забезпечує високу швидкість виконання тестів, завдяки вбудова-
ному механізму паралелізації виконання тестів та інтеграції з Babel та webpack.
Також Jest має можливість генерації звітів про виконання тестів та генерації звіту
покриття коду тестами, що сприяє покращенню якості коду та покриття його те-
стами. Jest також підтримує роботу з різними типами тестів, такими як unit-тести,
інтеграційні тести, функціональні тести, тести з візуальним порівнянням та інші.
За допомогою Jest можна також тестувати код, написаний на React, Node.js,
TypeScript та інших технологіях [9].
Загалом, Jest - це потужний та зручний інструмент для тестування
JavaScript-коду, який забезпечує швидкий та надійний спосіб виявлення помилок
в програмному забезпеченні.
1.4 Конкретизація завдань роботи
Конкретизація завдань роботи над кваліфікаційною роботою бакалавра
включає наступні етапи:
15
ЧДТУ.232101.006 ПЗ
1. Аналіз вимог до системи тестування. Розробка вимог до системи тесту-
вання на основі вимог клієнта та дослідження потреб користувачів. Визна-
чення функціональних та нефункціональних вимог до системи;
2. Проектування системи тестування. Розробка архітектури системи, включа-
ючи розробку бази даних, вибір технологій, проектування інтерфейсу корис-
тувача, розробка алгоритмів тестування;
3. Розробка та тестування серверної частини системи. Використання Node JS
для розробки серверної частини системи, розробка API та взаємодії з базою
даних PostgreSQL. Тестування серверної частини;
4. Розробка та тестування клієнтської частини системи. Використання React
для розробки користувацького інтерфейсу, взаємодії з сервером та реалізації
функціональності системи. Тестування клієнтської частини;
5. Розробка та тестування системи тестування. Використання Jest для розро-
бки та виконання тестів системи. Перевірка відповідності функціональних та
нефункціональних вимог до системи;
6. Тестування та валідація системи. Проведення тестів на різних етапах роз-
робки, включаючи модульні, інтеграційні та системні тести. Валідація сис-
теми та її відповідність вимогам та очікуванням користувачів.
Основними функціональними вимогами до програмного забезпечення розро-
бленого під час виконання кваліфікаційної роботи бакалавра є:
− Розробити систему тестування, яка буде автоматизувати процес тес-
тування абітурієнтів університету;
− Забезпечити можливість створення питань різних типів (однознач-
ний вибір, множинний вибір, відповідь у вільній формі тощо);
− Забезпечити можливість створення тестів, складених з питань різних
типів, з різними рівнями складності;
− Забезпечити можливість перегляду тестів та їх результатів;
16
ЧДТУ.232101.006 ПЗ
− Забезпечити можливість створення профілю користувача, що місти-
тиме інформацію про тести, які він проходив та результати цих тес-
тів.
− Забезпечити безпеку даних та конфіденційність користувачів.
17
ЧДТУ.232101.006 ПЗ
РОЗДІЛ 2
ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ СИСТЕМИ
2.1 Моделювання предметної області
2.1.1 Предметна область моделювання. Модель предметної області.
Словник предметної області
Предметною областю моделювання кваліфікаційної роботи бакалавра є ро-
зробка програмного забезпечення автоматизованої системи тестування абітуріє-
нтів університету. Система складається з трьох основних компонентів: фронте-
нду, бекенду та бази даних.
Компонент фронтенду включає в себе веб-інтерфейс для Адміністратора та
Абітурієнта. Адміністратор системи має можливість авторизуватись на сайті,
створювати та редагувати тести, додавати до них питання та редагувати їх, також
копіювати посилання на тест і переглядати результати всіх абітурієнтів по окре-
мому тесту. Абітурієнт реєструватись на сайті, авторизуватись, проходити тест
та переглядати свою оцінку.
Компонент бекенду є проміжною ланкою між фронтендом та базою даних.
Він приймає всі запити від фронтенду та обробляє їх, перетворюючи на запити
до бази даних. Також бекенд здійснює автентифікацію та авторизацію користу-
вачів, виконує перевірку правильності відповідей на тест та обчислює оцінку за
тест.
Компонент бази даних зберігає всю інформацію про користувачів, тести,
питання та відповіді на тести.
18
ЧДТУ.232101.006 ПЗ
Модель предметної області зображеної у вигляді UML діаграми представ-
лено на рисунку 2.1.
Рисунок 2.1 – UML діаграма моделі предметної області
Словник предметної області:
Моделювання - процес створення спрощеного відображення реального
світу з метою аналізу, прогнозування і оптимізації його функціонування.
Система - складна структура, що складається з взаємодіючих елементів,
які разом виконують певну функцію.
Інформація - знання, яке можна використовувати для прийняття рішень та
взаємодії з оточуючим світом.
19
ЧДТУ.232101.006 ПЗ
Програмне забезпечення - сукупність програм, що забезпечують роботу
комп'ютерної системи.
Фронтенд - складова частина програмного забезпечення, що відповідає за
взаємодію з користувачем.
Бекенд - складова частина програмного забезпечення, що відповідає за
обробку даних, роботу з базою даних та взаємодію з іншими системами.
База даних - структурована сукупність даних, організованих за певними
правилами та зберігається на зовнішньому носії.
Адміністратор - особа, яка відповідає за управління та налагодження ро-
боти системи.
Абітурієнт - особа, яка подає заяву на вступ до вищого навчального за-
кладу.
Тестування - процес перевірки знань або визначення рівня компетенцій
користувача з певної предметної області.
2.1.2 Елементи моделювання предметної області
Елементи моделювання предметної області включають в себе [10]:
Сутності - це об'єкти або концепції, які існують в предметній області. У
нашому проекті можуть бути наступні сутності: Адміністратор, Абітурієнт, База
даних, Тест, Питання, Оцінка.
Атрибути - це характеристики сутностей, які мають значення і дозволяють
ідентифікувати та описувати сутності. У нашому проекті можуть бути наступні
20
ЧДТУ.232101.006 ПЗ
атрибути: для сутності Адміністратор – ім'я, прізвище, логін та пароль, для сут-
ності Абітурієнт - ім'я, прізвище, електронна адреса, логін та пароль, для сутності
Тест - назва, питання та ін.
Відносини - це зв'язки між сутностями. У нашому проекті можуть бути
наступні відносини: Адміністратор може створювати Тест, додавати Питання до
Тесту та переглядати Оцінки Абітурієнтів, Абітурієнт може реєструватись на
сайті, проходити Тест та переглядати свою Оцінку, Тест містить у собі певну
кількість Питань, Оцінка залежить від правильності відповідей на Питання.
Асоціації - це відносини між сутностями, що показують, як вони пов'язані
між собою. У нашому проекті можуть бути наступні асоціації: Абітурієнт має до-
ступ до Тесту через посилання, Тест може мати багато Питань, Абітурієнт може
проходити багато Тестів, Оцінка залежить від проходження певного Тесту.
При проектуванні системи та моделюванні предметної області ми будемо
використовувати мову UML. Для створення діаграм в мові UML використову-
ються три типи візуальних позначень: графічні символи, зв'язки, що об'єднують
елементи, та текст.
2.1.3 Робоча область моделювання
Робоча область моделювання для кваліфікаційної роботи бакалавра "Про-
грамне забезпечення автоматизованої системи тестування абітурієнтів універси-
тету" включає в себе фронтенд, бекенд та базу даних.
Фронтенд складається зі сторінок, що відображаються абітурієнтам та
адміністраторам. Сторінки абітурієнтів включають в себе реєстраційну сторінку,
сторінку авторизації, сторінку для проходження тесту, сторінку з оцінкою за тест.
Сторінки адміністраторів включають в себе сторінку для логіну, сторінку для
21
ЧДТУ.232101.006 ПЗ
створення тесту, сторінку для додавання питань до тесту та сторінку для пе-
регляду результатів тестування.
Бекенд включає в себе сервіси, що забезпечують логіку програми. Сервіси
адміністратора включають в себе сервіс авторизації, сервіс для створення тесту,
сервіс для додавання питань до тесту та сервіс для перегляду результатів тесту-
вання. Сервіси абітурієнта включають в себе сервіс реєстрації, сервіс авторизації,
сервіс для проходження тесту та сервіс для перегляду оцінки за тест.
База даних зберігає інформацію про користувачів, тести, питання та резуль-
тати тестування. Таблиці бази даних включають в себе таблиці для користувачів,
таблиці для тестів, таблиці для питань та таблиці для результатів тестування.
У робочій області моделювання повинні бути чітко визначені взаємодії між
фронтендом, бекендом та базою даних. Фронтенд повинен забезпечувати
взаємодію з користувачем, передавати дані до бекенду та відображати резуль-
тати. Бекенд повинен забезпечувати обробку даних та бізнес-логіку системи,
оброблювати запити від фронтенду та взаємодіяти з базою даних. База даних по-
винна зберігати дані про користувачів, тести, питання, відповіді та результати те-
стування. Взаємодії між цими компонентами повинні бути чітко визначені та
спроектовані для забезпечення ефективності та надійності системи.
Програмне забезпечення автоматизованої системи тестування абітурієнтів
університету дозволяє адміністраторам створювати тести та додавати до них пи-
тання. Після створення тесту адміністратор може скопіювати посилання на про-
ходження тесту та надіслати його абітурієнтам.
Абітурієнтам, які отримали посилання на тест, необхідно пройти реєстра-
цію на сайті та авторизуватись. Після авторизації абітурієнт може перейти до про-
ходження тесту.
22
ЧДТУ.232101.006 ПЗ
Після проходження тесту абітурієнт може переглянути свій результат на
екрані.
Адміністратор має можливість переглянути результати всіх абітурієнтів,
які проходили тест, на окремій сторінці.
2.2 Формування та аналіз вимог
2.2.1 Формування вимог до програмного забезпечення
2.2.1.1 Первинні і детальні вимоги
Первинні вимоги до програмного забезпечення автоматизованої системи
тестування абітурієнтів університету можуть включати такі пункти:
− Система повинна надати адміністратору можливість авторизуватись.
− Система повинна надати адміністратору можливість створювати тести
для різних предметів, необхідних для вступу до університету.
− Система повинна надати адміністратору можливість створювати тести
різного рівня складності.
− Система повинна надати адміністратору редагувати тести та додавати
нові запитання.
− Система повинна надати адміністратору можливість скопіювати поси-
лання на проходження тесту.
− Система повинна надати адміністратору можливість переглядати стати-
стику тестування та результатів абітурієнтів.
− Система повинна надати абітурієнту можливість авторизуватись.
− Система повинна надати абітурієнту можливість проходити тест.
23
ЧДТУ.232101.006 ПЗ
− Система повинна надати абітурієнту можливість переглядати резуль-
тати тестування.
Детальні вимоги до програмного забезпечення включають:
− Система повинна мати модуль створення тестів, який дозволяє додавати
запитання та відповіді до них, визначати правильні відповіді.
− Система повинна мати модуль тестування, який дозволяє користувачам
проходити тести, відображає запитання та відповіді, підраховує бали та
відображає результати.
− Система повинна мати модуль статистики, який дозволяє переглядати ре-
зультати тестування, аналізує найкращі та найгірші результати.
2.2.1.2 Вимоги замовника і розробника. Функціональні та нефункціо-
нальні вимоги
ВИМОГИ ЗАМОВНИКА:
1. Система повинна дозволяти тестувати абітурієнтів за допомогою комп'ю-
тера, і забезпечувати можливість вводу, збереження та обробки відповідей
на тестові завдання.
2. Система повинна забезпечувати можливість створення тестів, зберігання
тестів та підготовку результатів тестування.
3. Система повинна бути легкою у використанні та мати інтуїтивний інтер-
фейс користувача.
4. Система повинна мати можливість працювати з багатьма користувачами
одночасно та зберігати інформацію про кожного користувача окремо.
5. Система повинна бути безпечною та забезпечувати захист конфіденційної
інформації.
24
ЧДТУ.232101.006 ПЗ
ВИМОГИ РОЗРОБНИКА:
1. Система повинна мати можливість створення тестових завдань.
2. Система повинна забезпечувати можливість перегляду та редагування те-
стових завдань перед тестуванням.
3. Система повинна забезпечувати можливість збереження результатів тесту-
вання та відображення результатів.
4. Система повинна бути розроблена з використанням сучасних технологій
програмування та забезпечувати високу швидкодію.
5. Система повинна бути легкою у розгортанні та має підтримувати різні опе-
раційні системи та браузери.
6. Система повинна забезпечувати безпеку даних та має мати механізми захи-
сту від несанкціонованого доступу до інформації про користувачів.
ФУНКЦІОНАЛЬНІ ВИМОГИ:
1. Система повинна мати засоби для реєстрації абітурієнтів і зберігання їх
особистих даних.
2. Система повинна мати можливість створення тестів з різних предметів для
абітурієнтів.
3. Система повинна автоматично оцінювати тестування та генерувати резуль-
тати.
4. Система повинна забезпечувати можливість перегляду результатів.
НЕФУНКЦІОНАЛЬНІ ВИМОГИ:
1. Система повинна бути доступна для користувачів з будь-якої точки, де є
Інтернет-з'єднання.
2. Система повинна бути стійкою до навантажень і забезпечувати швидке
відповідання.
25
ЧДТУ.232101.006 ПЗ
3. Система повинна забезпечувати безпеку даних та конфіденційність інфор-
мації абітурієнтів.
4. Система повинна мати інтуїтивно зрозумілий інтерфейс для користувачів.
5. Система повинна підтримувати можливість редагування тестів і додавання
нових предметів.
6. Система повинна бути розроблена з використанням сучасних технологій
програмування та баз даних.
2.2.2 Формування вимог за допомогою діаграми прецедентів
Діаграма прецедентів - це один із видів діаграм в UML, що використо-
вується для моделювання взаємодії між користувачами (акторами) та системою,
яка повинна виконувати деякі дії (прецеденти), які задовольняють потреби кори-
стувачів. Діаграма прецедентів відображає функціональність системи з точки
зору користувачів, і дозволяє аналізувати взаємодію між користувачами та систе-
мою. У діаграмі прецедентів використовуються об'єкти такі як актори, преце-
денти та відносини між ними, такі як асоціації та включення [11].
Діаграма прецендентів зображена на рисунку 2.2.
26
ЧДТУ.232101.006 ПЗ
Рисунок 2.2 - Діграма прецендентів
Ця діаграма включає два основних актори - Адміністратора та Абітурієнта,
а також відображає основні прецеденти, що відбуваються в системі. Основний
прецедент, пов'язаний з Адміністратором, - створення та керування тестами.
Абітурієнти можуть зареєструватися, авторизуватися, взяти тест та переглянути
результати. Діаграма показує зв'язки між прецедентами, які пов'язані з акторами,
і допоможе розробникам зрозуміти, які прецеденти необхідно реалізувати та які
зв'язки між ними існують.
27
ЧДТУ.232101.006 ПЗ
2.3 Проектування логічної структури програмного комплексу
2.3.1 Діаграми класів
Діаграма класів є одним із видів діаграм в рамках мови моделювання UML
Вона використовується для відображення класів, їх взаємодій та залежностей між
ними в об'єктно-орієнтованому програмуванні. Діаграма класів містить класи, ат-
рибути, методи, асоціації, спадкування та інші відношення між класами, що доз-
воляє проектувати та аналізувати архітектуру програмного забезпечення.
Діаграма класів допомагає розібратися у структурі проекту та сприяє його більш
зрозумілому та ефективному розробленню, тестуванню та підтримці [12].
Діаграма класів зображена на рисунку 2.3.
Рисунок 2.3 – Діаграма класів програмного забезпечення
28
ЧДТУ.232101.006 ПЗ
Ця діаграма є діаграмою класів і описує основні класи, що використову-
ються в системі тестування. Клас User описує користувача системи, який може
реєструватися, входити в систему та виходити з неї. Клас Test описує тест, який
може бути створений, збережений, завантажений та видалений. Клас Question
описує питання, яке може бути додане, відредаговане та видалене з тесту. Клас
TestResult описує результати тестування, яке складається з інформації про кори-
стувача, тест, бал та відповіді на запитання.
Клас TestTaker описує особу, яка може брати тест, і має можливість розпо-
чати тест, надіслати відповіді на запитання та переглянути свої результати. Клас
Admin описує адміністратора системи, який має можливість створювати, вида-
ляти, редагувати тести, а також переглядати результати тестування.
Клас System описує саму систему тестування та містить інформацію про
користувачів, тести та результати. Клас містить методи для додавання/видалення
користувачів, тестів та отримання інформації про тести та результати тестування.
Таким чином, ця діаграма є відображенням основних класів та їх взаємодії
в системі тестування.
2.3.2 Діаграми пакетів
Діаграма пакетів - це графічне зображення, що відображає структуру про-
грамного забезпечення у вигляді пакетів або модулів, які містять схожі елементи
програми. Кожен пакет може містити класи, інші пакети, або інші складові про-
грамного забезпечення, такі як функції, змінні тощо. Діаграма пакетів допомагає
візуалізувати архітектуру програми та зрозуміти взаємозв'язки між різними ком-
понентами програми. Кожен пакет може мати свій унікальний ідентифікатор, ім'я
та опис, які допомагають зрозуміти його призначення та функціональність.
29
ЧДТУ.232101.006 ПЗ
Діаграма пакетів зображена на рисунку 2.4.
Рисунок 2.4 – Діаграма пакетів програмного забезпечення
Ця діаграма показує компоненти системи тестування з їх залежностями і
взаємодією.
Користувацький інтерфейс складається з двох пакетів: "Меню" та "Вікна".
"Меню" містить класи для створення тесту, проходження тесту та перегляду ре-
зультатів. "Вікна" містять класи для логіну, реєстрації, створення, проходження
та перегляду результатів тестів.
База даних містить три класи: користувач, тест та результат тестування.
30
ЧДТУ.232101.006 ПЗ
Бізнес-логіка складається з трьох менеджерів: користувачів, тестів та ре-
зультатів тестування.
Системні компоненти містять три пакети: "Web-сервер", "Безпека" та "Те-
стування". "Web-сервер" відповідає за взаємодію з користувачами і передачу за-
питів до менеджерів. "Безпека" містить менеджерів для аутентифікації, авториза-
ції та шифрування. "Тестування" містить менеджерів для оцінки тесту та ро-
зрахунку балів за тест.
Залежності показані стрілками, що виходять від класів до пакетів, які вони
використовують. Наприклад, CreateTest використовує TestCreationForm, який за-
лежить від UserManager. Server залежить від всіх менеджерів, а також від
AuthenticationManager для аутентифікації користувачів. TestManager та
TestResultManager використовують TestEvaluator та TestScorer відповідно для
оцінки тесту та розрахунку балів за тест.
2.4 Архітектурне проектування
2.4.1 Діаграма компонентів
Діаграма компонентів - це тип діаграми, що використовується для візуалі-
зації архітектури програмної системи та її компонентів. Вона показує компоне-
нти системи та зв'язки між ними, а також може включати інформацію про інтер-
фейси та залежності між компонентами.
Кожен компонент може мати своє ім'я, опис та інші атрибути, що допома-
гають зрозуміти його призначення та функціональність. Компонент може бути
фізичним об'єктом, таким як комп'ютер або сервер, або логічним елементом, який
виконує певну функцію в системі.
31
ЧДТУ.232101.006 ПЗ
Діаграма компонентів допомагає розуміти архітектуру системи та забезпе-
чує зручний спосіб візуалізації компонентів системи та їх залежностей. Вона є
корисним інструментом для розробників програмного забезпечення та архітекто-
рів систем, щоб зрозуміти та визначити структуру та організацію системи перед
її розробкою або модифікацією.
Діаграма компонентів зображена на рисунку 2.5.
Рисунок 2.5 – Діаграма компонентів програмного забезпечення
На діаграмі є кілька елементів:
− "Адміністратор" та "Абітурієнт" - актори, які взаємодіють з системою.
− "PostgreSQL" - база даних, яка використовується системою.
32
ЧДТУ.232101.006 ПЗ
− "Фронтенд" та "Бекенд" - компоненти системи, що обробляють вхідні
запити та повертають відповіді користувачам.
− "Адмін панель" - компонент системи, що надає можливість адміністра-
тору керувати тестами та питаннями.
− "Тест" та "Питання" - компоненти системи, які забезпечують створення
тестів та питань.
− "Результати" - компонент системи, що забезпечує збереження резуль-
татів тестів.
Стрілки між елементами показують напрямок взаємодії. Наприклад,
"Адміністратор" взаємодіє з "Фронтендом", щоб мати доступ до функцій
адміністрування, "Фронтенд" взаємодіє з "Бекендом", щоб обробляти вхідні за-
пити від користувачів, а "Бекенд" взаємодіє з "PostgreSQL", щоб зберігати та от-
римувати дані з бази даних.
2.4.2 Розгортання програмної системи на апаратних засобах. Діаграма
розгортання
Розгортання програмної системи на апаратних засобах для проекту Програ-
мне забезпечення автоматизованої системи тестування абітурієнтів університету
можна розбити на наступні етапи:
Вибір хостинг-провайдера та серверів:
Потрібно вибрати хостинг-провайдера, який забезпечує підтримку встано-
влення технологій, необхідних для проекту (наприклад, React, Node.js,
PostgreSQL), а також має високу доступність та надійність. Далі потрібно вибрати
необхідну кількість серверів, відповідно до плануваної кількості користувачів,
які будуть одночасно використовувати систему.
33
ЧДТУ.232101.006 ПЗ
Налаштування інфраструктури:
Після вибору хостинг-провайдера та серверів, необхідно налаштувати ін-
фраструктуру, щоб забезпечити безперебійну роботу системи. Це включає вста-
новлення та налаштування необхідного програмного забезпечення (наприклад,
Node.js та PostgreSQL.
Налаштування бази даних:
Необхідно налаштувати PostgreSQL, щоб забезпечити безпеку та швидкість
роботи бази даних. Налаштування бази даних повинно включати налаштування
резервного копіювання, моніторингу та оптимізації запитів.
Розгортання серверів та додатків:
Далі необхідно розгорнути сервери та додатки на кожному сервері. Напри-
клад, бекенд на Node.js та фронтенд на React.
Налаштування безпеки:
Система повинна бути захищена від несанкціонованого доступу до конфі-
денційної інформації. Для цього необхідно налаштувати SSL [13-14].
Діаграма розгортання зображена на рисунку 2.6.
34
ЧДТУ.232101.006 ПЗ
Рисунок 2.6 – Діаграма розгортання програмного забезпечення
Зображена діаграма містить три компоненти (клієнт, сервер та база да-
них), які взаємодіють між собою через HTTP/HTTPS протокол. Абітурієнт може
взаємодіяти з клієнтською частиною системи, яка передає запити до серверної
частини. Серверна частина виконує запити та може звертатись до бази даних
для отримання потрібної інформації. База даних містить усю необхідну інфор-
мацію, що стосується тестування, таку як питання, відповіді та результати те-
стування абітурієнтів. Клієнтська та серверна частини взаємодіють між собою
через HTTP/HTTPS протокол, що забезпечує безпеку та конфіденційність пере-
дачі даних. Дана система дозволяє адміністратору створювати тести та надси-
лати посилання на тестування абітурієнтам, які можуть зареєструватись, пройти
тест та переглянути свій результат. Результати тестування зберігаються у базі
даних, до якої має доступ адміністратор для перегляду результатів тестування
всіх абітурієнтів [15-16].
35
ЧДТУ.232101.006 ПЗ
2.5 Моделювання поведінки системи
2.5.1 Діаграма діяльності
Діаграма діяльності (англ. activity diagram) - це графічний інструмент мо-
делювання, який використовується для представлення послідовності дій або опе-
рацій у системі або процесі. Вона дозволяє моделювати структуру процесу, його
поведінку і взаємодію з іншими об'єктами. Діаграма діяльності використовується
для опису процесу з точки зору дій та переходів між станами процесу.
Діаграма діяльності складається зі станів (без дій), дій (операцій, які вико-
нуються над даними), різних взаємозв'язків між ними (стрілки, що показують
напрямок виконання дій) та фінального стану, що показує завершення процесу.
Ці елементи діаграми відображаються у вигляді графічних символів, що допома-
гає зрозуміти поведінку процесу та його логіку.
Діаграма діяльності може використовуватись як для визначення бізнес-
процесів, так і для проектування програмного забезпечення, що допомагає ро-
зробникам зрозуміти, як взаємодіяти з системою, які операції повинні бути вико-
нані і в якому порядку, а також які переходи між станами повинні бути здійснені
[17].
Діаграма діяльності зображена на рисунку 2.7.
36
ЧДТУ.232101.006 ПЗ
Рисунок 2.7 – Діаграма діяльності програмного забезпечення
Ця діаграма діяльності описує процес створення тесту адміністратором та
проходження тесту абітурієнтами.
По-перше, адміністратор логіниться на сайті та створює тест. Потім він до-
дає питання до тесту в циклі, поки не додасть усі питання. Після створення тесту,
адміністратор копіює посилання на проходження тесту та надсилає його
абітурієнтам.
Далі, абітурієнт переходить по посиланню та реєструється на сайті, після
чого логіниться та проходить тест. Після проходження тесту, абітурієнт бачить
на екрані оцінку за тест.
37
ЧДТУ.232101.006 ПЗ
Нарешті, адміністратор може зайти на сторінку та переглянути результати
всіх абітурієнтів по тесту. Після цього процес закінчується.
2.5.2 Діаграма послідовності
Діаграма послідовності - це графічне зображення, що відображає
послідовність виконання повідомлень між об'єктами в рамках конкретного сце-
нарію взаємодії. Вона дозволяє ілюструвати, як об'єкти взаємодіють між собою в
певному порядку та часовому проміжку для досягнення певної мети або вико-
нання певної функції. Діаграма послідовності складається з горизонтальних
ліній, що позначають об'єкти, та вертикальних стрілок, що показують передачу
повідомлень між об'єктами. Вона дозволяє аналізувати логіку взаємодії між об'єк-
тами та виявляти можливі помилки в проекті програмного забезпечення.
Діаграма послідовності зображена на рисунку 2.8.
Рисунок 2.8 – Діаграма послідовності програмного забезпечення
38
ЧДТУ.232101.006 ПЗ
У цій діаграмі показано послідовності з акторами "Адміністратор" і
"Абітурієнт", а також з учасниками "Веб-сайт" та "PostgreSQL". Діаграма почи-
нається з авторизації адміністратора на веб-сайті, далі адміністратор створює тест
та додає до нього питання. Після цього він копіює посилання на тест та відправ-
ляє його абітурієнтам. Абітурієнти реєструються та авторизуються на сайті,
потім проходять тест, результати якого зберігаються в базі даних. На останок
адміністратор може переглянути результати тестування.
2.5.3 Діаграма комунікації
Діаграма комунікації, також відома як діаграма колаборації, є графічним
інструментом, що використовується для моделювання взаємодії між об'єктами в
системі або між різними системами. Ця діаграма зображує послідовність обміну
повідомленнями між об'єктами або компонентами, які беруть участь у взаємодії.
У діаграмі комунікації кожен об'єкт або компонент зображується у вигляді
прямокутника з іменем, а зв'язки між ними - у вигляді стрілок, що показують
напрямок передачі повідомлень. Кожне повідомлення зазвичай позначається у
вигляді назви, яка пояснює сенс передаваної інформації.
Діаграма комунікації дозволяє описати послідовність взаємодії між об'єк-
тами або системами у часі, що допомагає виявити можливі помилки та проблеми
у взаємодії, а також полегшує розуміння архітектури системи.
Діаграма комунікації зображена на рисунку 2.9.
39
ЧДТУ.232101.006 ПЗ
Рисунок 2.9 – Діаграма комунікації програмнох забезпечення
У цій діаграмі показані основні дії, які виконуються в системі, а саме: авториза-
ція адміністратора, створення тесту, додавання питань до тесту, копіювання по-
силання на проходження тесту, надсилання посилання абітурієнтам, реєстрація
та авторизація абітурієнта, проходження тесту та перегляд результатів тесту-
вання адміністратором. Також на діаграмі зображений взаємодія з базою даних
PostgreSQL, що забезпечує зберігання даних про користувачів, тести та резуль-
тати тестування.
2.5.4 Діаграма скінченого автомату
Діаграма скінченого автомату - це графічне зображення або модель, що
відображає роботу системи як послідовність станів і переходів між ними. Вона
40
ЧДТУ.232101.006 ПЗ
складається з кругів, що позначають стани, та стрілок, що показують переходи
між станами. Кожен стан описує певну поведінку системи, а переходи вказують,
як система переходить від одного стану до іншого при певних вхідних сигналах
або подіях.
FSM використовується для моделювання поведінки систем, що можуть пе-
ребувати в певних станах та реагувати на вхідні сигнали. Його можна застосувати
в різних областях, включаючи автоматизацію виробництва, проектування елек-
тронних пристроїв, програмування, управління процесами тощо.
Діаграма скінченого автомату зображена на рисунку 2.10.
Рисунок 2.10 – Діаграма скінченого автомату програмного забезпечення
41
ЧДТУ.232101.006 ПЗ
Ця діаграма показує процес створення та проходження тесту. Адміністра-
тор авторизується на сайті, створює тест і додає до нього питання. Після дода-
вання питань, адміністратор копіює посилання на тест та надсилає його
абітурієнтам. Абітурієнти переходять за посиланням, реєструються та проходять
тест. Після проходження тесту, абітурієнти бачать на екрані оцінку за тест.
Адміністратор може переглянути результати всіх абітурієнтів по тесту. Діаграма
закінчується на початковій точці, що показує, що цикл може повторюватись
знову.
42
ЧДТУ.232101.006 ПЗ
РОЗДІЛ 3
РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
3.1 Розробка програмного комплексу
3.1.1 Обґрунтування вибору засобів реалізації
Один з найважливіших етапів розробки будь-якого програмного продукту
- це вибір правильних інструментів розробки. У випадку автоматизованої си-
стеми тестування абітурієнтів університету, було вибрано TypeScript та Node JS
Express для бекенду, JavaScript та React для фронтенду, PostgreSQL було викори-
стано як базу даних та Sequalize було використано для взаємодії між базою даних
та бекендом, що має свої обґрунтування.
JavaScript є однією з найпоширеніших мов програмування, яка використо-
вується для створення веб-додатків. JavaScript має багато фреймворків, що доз-
воляють розробникам швидко та ефективно створювати складні веб-додатки. Та-
кож JavaScript має велику спільноту розробників, що дозволяє швидко знайти
відповіді на будь-які питання та проблеми, що виникають під час розробки [18].
React є одним з найбільш популярних фреймворків для розробки веб-до-
датків. Він дозволяє створювати ефективний та динамічний веб-інтерфейс з
мінімальними зусиллями. React має велику кількість документації, багато сторон-
ніх бібліотек та навчальних ресурсів, що дозволяє розробникам ефективно вико-
ристовувати його для створення веб-додатків будь-якої складності [19].
Використання JavaScript та React для реалізації фронтенду автоматизованої
системи тестування абітурієнтів університету має декілька переваг.
43
ЧДТУ.232101.006 ПЗ
Перш за все, JavaScript є мовою програмування, яка працює на більшості
веб-браузерів. Це означає, що веб-додаток, створений з використанням
JavaScript, буде сумісний з будь-яким веб-браузером, що дозволить користувачам
використовувати систему з будь-якого пристрою, що має підключення до Інтер-
нету.
Друге, React є дуже ефективним фреймворком для створення інтерактив-
ного та динамічного веб-інтерфейсу. Він дозволяє швидко та легко створювати
компоненти інтерфейсу, які можна повторно використовувати в різних частинах
додатку. Це дозволяє розробникам створювати більш складні та функціональні
веб-інтерфейси з меншими зусиллями.
Крім того, JavaScript та React мають багато сторонніх бібліотек та інстру-
ментів, що дозволяють розробникам розширювати функціональність та покра-
щувати продуктивність додатку. Наприклад, для тестування можна використо-
вувати Jest - фреймворк для тестування JavaScript-коду, який дозволяє автома-
тизувати тестування та покращити якість коду.
Таким чином, використання JavaScript та React для реалізації фронтенду
автоматизованої системи тестування абітурієнтів університету є обґрунтованим
вибором, оскільки ці технології дозволяють створювати ефективний та ди-
намічний веб-інтерфейс з мінімальними зусиллями, мають велику спільноту ро-
зробників та багато сторонніх бібліотек та інструментів для покращення функціо-
нальності та продуктивності додатку.
Node.js є одним з найбільш популярних інструментів для розробки сервер-
ної частини веб-додатків. Це середовище виконання JavaScript, яке дозволяє ви-
конувати JavaScript-код на стороні сервера. Однією з особливостей Node.js є мож-
ливість працювати з багатьма запитами одночасно, що робить його дуже ефек-
тивним для розробки високонавантажених веб-додатків.
44
ЧДТУ.232101.006 ПЗ
Для Node.js було використано фреймворк Express.js, який дозволяє швидко
та легко створювати веб-додатки з використанням Node.js. Він має велику кіль-
кість готових модулів та плагінів, які дозволяють розробникам легко додавати
нові функції до свого додатку.
Також, для бекенду було вибрано TypeScript - типізовану версію JavaScript,
що дозволяє зменшити кількість помилок в коді та покращити читабельність.
TypeScript дозволяє визначати типи даних, що використовуються в програмі, тим
самим покращуючи інтеграцію між різними частинами додатку [20].
Оскільки бекенд системи тестування абітурієнтів університету має бути
надійним та швидким, використання Node.js та TypeScript є обґрунтованим вибо-
ром. Node.js забезпечує ефективність та можливість працювати з багатьма запи-
тами одночасно, а TypeScript дозволяє зменшити кількість помилок в коді та по-
кращити ч итабельність. Крім того, TypeScript надає можливість використовувати
сучасні функції ECMAScript, такі як async / await, що дозволяє писати асинхрон-
ний код з меншою кількістю вбудованих функцій зворотного виклику (callbacks)
та промісів.
Однією з переваг використання TypeScript є підвищення рівня безпеки про-
грами. Зазвичай JavaScript має динамічну типізацію, що означає, що типи даних
визначаються під час виконання програми. Це може призвести до помилок в ході
виконання програми, які не завжди очевидні при відлагодженні. TypeScript забез-
печує статичну типізацію, що дозволяє виявляти помилки на етапі розробки та
зменшити їх кількість в ході виконання програми.
У даному проекті було використано postgreSQL як базу даних. Причинами
такого вибору є:
− Відкритість та безкоштовність. PostgreSQL є відкритою системою
управління базами даних з вільною ліцензією, що означає, що
45
ЧДТУ.232101.006 ПЗ
вона може бути використана безкоштовно та змінюватися за необ-
хідністю.
− Надійність та масштабованість. PostgreSQL є досить надійною та
стійкою до великого обсягу даних базою даних, що робить його
привабливим для розробки великих проектів.
− Підтримка SQL-стандартів. PostgreSQL підтримує стандарти мови
запитів SQL, що робить його сумісним з багатьма іншими про-
грамними засобами та дозволяє розробникам більш просто інте-
грувати цю базу даних з іншими програмними засобами.
− Наявність багатьох додаткових функцій. PostgreSQL має багато
додаткових функцій, які роблять його більш гнучким та зручним
для використання в різних проектах.
− Широке співтовариство. PostgreSQL має широке співтовариство
розробників та користувачів, що дозволяє отримати допомогу та
поради при необхідності.
Отже, використання PostgreSQL для реалізації бази даних для автоматизо-
ваної системи тестування абітурієнтів університету є обґрунтованим вибором.
PostgreSQL є досить потужною та надійною системою управління базами даних,
що дозволить зберігати та організовувати великий обсяг даних, які будуть зібрані
в процесі тестування абітурієнтів [21].
ORM дозволяє розробникам взаємодіяти з базою даних без необхідності
використовувати рівні SQL запитів. Замість цього, програмісти можуть
працювати з об'єктами та класами, що відображають таблиці в базі даних.
Sequelize є одним з найпопулярніших ORM-ів для Node.js, що дозволяє зручно
працювати з базою даних PostgreSQL [22].
46
ЧДТУ.232101.006 ПЗ
Однією з переваг використання Sequelize є те, що він дозволяє просто ство-
рювати та змінювати таблиці в базі даних за допомогою міграцій. Міграції доз-
воляють зберігати версії структури бази даних та легко змінювати її під час ро-
звитку проекту.
Крім того, Sequelize має багатий набір функцій, які дозволяють зручно
працювати з даними в базі даних, такі як пагінація, фільтрація, сортування та
інші.
Також, Sequelize має вбудовану підтримку асинхронного програмування,
що дозволяє зручно працювати з даними в Node.js, що забезпечує високу продук-
тивність системи тестування абітурієнтів університету.
Отже, вибір Sequelize як ORM для взаємодії між базою даних та бекендом
є обґрунтованим, оскільки це дозволяє зручно та ефективно працювати з базою
даних PostgreSQL та забезпечує високу продуктивність системи тестування
абітурієнтів університету.
3.1.2 Опис структурної (функціональної) схеми
Опис програмної системи автоматизованої системи тестування абітурієнтів
університету складається з наступних компонентів та функцій:
Компонент для реєстрації користувачів:
Цей компонент включає у себе можливість реєстрації абітурієнтів,
зберігання їх особистих даних (ім'я, прізвище, контактна інформація тощо) та ав-
торизації в системі. Компонент також повинен забезпечувати захист даних кори-
стувачів від несанкціонованого доступу.
47
ЧДТУ.232101.006 ПЗ
Компонент для створення тестів:
Цей компонент надає можливість створення тестів. Також є можливість
зайти на сторінку редагування питань тесту, перейти на сторінку перегляду ре-
зультатів тесту та копіювання посилання на проходження тесту.
Компонент для створення тестових завдань:
Цей компонент надає можливість створення тестових завдань для різних
предметів, які будуть доступні для тестування абітурієнтів. Компонент повинен
дозволяти додавати питання та відповіді до них. Також є можливість обрати пра-
вильну відповідь.
Компонент для тестування:
Цей компонент має за завдання забезпечити автоматизований процес тесту-
вання абітурієнтів з використанням створених тестових завдань. Компонент по-
винен дозволяти вибрати предмет, з якого буде проводитись тестування, показу-
вати питання з можливістю відповіді та автоматично оцінювати відповіді
абітурієнтів.
Компонент для збереження результатів тестування та їх відображення:
Цей компонент має забезпечити збереження результатів тестування та їх
відображення користувачам. Компонент повинен показувати результати тесту-
вання абітурієнтів лише тоді, коли адміністратор дозволить перегляд результатів.
Рисунок 3.1 – Структурна схема проєкту
48
ЧДТУ.232101.006 ПЗ
Функціональна схема проєкту(рис.3.2) - це графічне зображення основних
функціональних блоків і зв'язків між ними в проєкті. Вона допомагає зрозуміти
структуру проєкту і його компонентів, а також інтерфейси між ними.
Рисунок 3.2 – Функціональна схема проєкту
3.1.3 Опис логічної схеми системи
Логічна схема автоматизованої системи тестування абітурієнтів університету
має наступний опис:
− Користувач (адміністратор) логіниться на сайті.
− Адміністратор створює тест та додає питання.
− Адміністратор зберігає тест та отримує посилання на проходження те-
сту.
− Адміністратор надсилає посилання на проходження тесту абітурієнтам.
− Абітурієнт переходить за посиланням на сайт, реєструється та
логіниться.
− Абітурієнт проходить тест та зберігає свої відповіді.
− Система автоматично оцінює відповіді та генерує результати.
49
ЧДТУ.232101.006 ПЗ
− Система зберігає результати тестування та відображає їх для адміністра-
тора та абітурієнта.
− Абітурієнт та адміністратор можуть переглядати результати тестування.
− Система забезпечує безпеку даних та конфіденційність інформації
абітурієнтів.
− Система має інтуїтивно зрозумілий інтерфейс для користувачів.
− Система підтримує можливість редагування тестів та додавання нових
предметів.
− Система розроблена з використанням сучасних технологій програ-
мування та баз даних.
− Система підтримує різні операційні системи та браузери та легко роз-
гортається.
− Система стійка до навантажень та забезпечує швидке відповідання.
Окрім цього, система повинна мати засоби для реєстрації абітурієнтів і
зберігання їх особистих даних, мати можливість створення тестів.
Схематично логічну схему системи можна показати використавши
діаграму послідовності(рис.3.3).
50
ЧДТУ.232101.006 ПЗ
Рисунок 3.3 – Схематичне зображення логічної схеми системи за допомо-
гою діаграми прецендентів
3.1.4 Розробка бази даних
Для розробки бази даних було використано реляційну базу даних Post-
greSQL та ORM Sequalize.
Sequelize - це ORM (Object-Relational Mapping), який дозволяє зручно
працювати з базами даних в JavaScript. Використовуючи Sequelize, можна
взаємодіяти з реляційними базами даних, такими як PostgreSQL, MySQL, SQLite
та іншими, замість прямого написання SQL-запитів.
PostgreSQL - це потужна об'єктно-реляційна база даних з відкритим
вихідним кодом, яка підтримує широкий спектр функціональності та може
51
ЧДТУ.232101.006 ПЗ
працювати з великими об'ємами даних. PostgreSQL часто використовується як
база даних для веб-додатків та сервісів, оскільки має досить простий та зро-
зумілий механізм роботи з даними та багатий інструментарій для оптимізації ро-
боти з базою даних.
Було створено 4 таблиці в базі даних для збереження даних про користува-
чів, збереження даних про тести, збереження даних про запитання та збереження
даних про відповіді користувачів на питання тесту.
Таблиці які були створені:
• users: представляє користувачів системи, містить поля id (ідентифіка-
тор користувача), username (ім'я користувача) та password (пароль ко-
ристувача).
• tests: представляє тести, містить поля id (ідентифікатор тесту),
ownerId (ідентифікатор власника тесту), title (назва тесту), guid
(унікальний ідентифікатор тесту), istestfinished (чи завершено тесту-
вання).
• queries: представляє запити, містить поля id (ідентифікатор запиту),
query (текст запиту), options (опції запиту) та testId (ідентифікатор те-
сту, до якого належить запит).
• results: представляє результати тестування, містить поля id (іденти-
фікатор результату), userId (ідентифікатор користувача, який здавав
тест), testId (ідентифікатор тесту, результат якого було збережено),
result (результат тестування) та percentage (відсоток правильних
відповідей).
Зв'язки між створеними таблицями:
• users має зв'язок один-до-багатьох з results, оскільки один користувач
може мати багато результатів тестування.
52
ЧДТУ.232101.006 ПЗ
• tests має зв'язок один-до-багатьох з queries, оскільки один тест може
містити багато запитів.
• tests має зв'язок один-до-багатьох з results, оскільки один тест може
мати багато результатів тестування.
Концептуальна модель даних - це модель, яка описує дані на високому рівні
абстракції та зосереджується на бізнес-логіці і структурі даних. Вона описує дані,
які будуть зберігатись у базі даних та взаємозв'язки між ними без деталей, які
стосуються фізичної реалізації. Концептуальна модель даних - це перший етап в
процесі проектування бази даних і допомагає розуміти взаємозв'язки між даними
та потреби бізнесу. Концептуальна модель даних використовується як основа для
розробки фізичної моделі даних, яка включає в себе деталі фізичної реалізації,
такі як типи даних, індекси, обмеження, тощо. Концепутальна модель даних да-
ного проєкту зображена на рисунку 3.4.
Рисунок 3.4 – Концептуальна модель даних
Логічна модель даних - це детальна специфікація того, як дані пов'язані між
собою в межах системи. Вона описує всі елементи даних, які зберігаються в си-
стемі та їх взаємозв'язки. Логічна модель описує дані на високому рівні абстрак-
ції, без урахування технічних деталей зберігання даних на рівні операційної си-
стеми та реляційної СУБД. Логічна модель даних даного проєкту зображена на
рисунку 3.5.
53
ЧДТУ.232101.006 ПЗ
Рисунок 3.5 – Логічна модель даних
Фізична модель даних - це відображення логічної моделі даних на рівні
бази даних конкретної системи управління базами даних (СУБД). Фізична модель
описує, як дані з логічної моделі даних будуть зберігатися в конкретній СУБД,
включаючи таблиці, колонки, індекси, зв'язки між таблицями, обмеження, три-
гери та інші об'єкти бази даних. Фізична модель даних даного проєкту зображена
на рисунку 3.6.
Рисунок 3.6 – Фізична модель даних
54
ЧДТУ.232101.006 ПЗ
3.1.5 Розробка інтерфейсу користувача
Інтерфейс користувача складається з 8 сторінок. Адміністратор має доступ до
сторінок авторизації та реєстрації, сторінки з переглядом всіх створених тестів,
сторінки з питаннями по тесту, сторінки перегляду всіх результатів по тесту.
Абітурієнт має доступ до сторінок авторизації та реєстрації, сторінки проход-
ження тесту, сторінки очікування результатів та сторінку перегляду результатів.
Сторінка реєстрації.
На цій сторінці зображено два поля для введення логіну та паролю для
реєстрації. Також є кнопка для реєстрації та кнопка для переходу на сторінку ав-
торизації. Вигляд сторінки зображено на рисунку 3.7.
Рисунок 3.7 – Сторінка реєстрації
Сторінка авторизації.
На цій сторінці зображено два поля для введення логіну та паролю. Також
є кнопка для авторизації та кнопка для переходу на головну сторінку. Вигляд
сторінки зображено на рисунку 3.8.
55
ЧДТУ.232101.006 ПЗ
Рисунок 3.8 – Сторінка авторазиції
Сторінка перегляду тестів.
На цій сторінці зображено вже існуючі тести. Коло кожного існуючого те-
сту є кнопки для переходу на сторінку редагування питань тесту, для переходу на
сторінку перегляду всіх результатів тесту та кнопка видалення тесту. При натис-
канні на назву теста буде скопійовано посилання на проходження тесту. Також
на сторінці присутня форма для додавання нових тестів. Вигляд сторінки зобра-
жено на рисунку 3.9.
Рисунок 3.9 – Сторінка перегляду тестів
56
ЧДТУ.232101.006 ПЗ
Сторінка редагування питань.
На цій сторінці зображено всі питання до обраного тесту. Коло кожного
існуючого питання показано варіанти відповіді та правильна відповідь, також є
кнопка для видалення питання. Також на сторінці присутня форма для додавання
нових питань. Вигляд сторінки зображено на рисунку 3.10.
Рисунок 3.10 – Сторінка редагування питань
Сторінка перегляду всіх результатів тесту.
На цій сторінці зображено всі результати абітурієнтів до обраного тесту.
Також на сторінці присутня кнопка для публікації результатів для перегляду
абітурієнтами. Вигляд сторінки зображено на рисунку 3.11.
57
ЧДТУ.232101.006 ПЗ
Рисунок 3.11 – Сторінка перегляду всіх результатів тесту
Сторінка проходження тесту.
На цій сторінці зображено всі питання до тесту, на який ви перейшли вста-
вивши посилання на проходження в стрічку адреси. Коло кожного питання є пе-
релік можливих відповідей та чекбокс для обрання правильного варіанту. Вигляд
сторінки зображено на рисунку 3.12.
Рисунок 3.12 – Сторінка проходження тесту
58
ЧДТУ.232101.006 ПЗ
Сторінка очікування результатів тесту.
На цій сторінці зображено попередження, що результати будуть доступні
після того як адміністратор відкриє до них доступ. Вигляд сторінки зображено на
рисунку 3.13.
Рисунок 3.13 – Сторінка очікування результатів тесту
Сторінка результатів тесту для абітурієнта.
На цій сторінці зображено результати тестування абітурієнту. А саме кіль-
кість балів та кількість правильних відповідей. Сторінка стає доступна після за-
вершення тестування адміністратором. Вигляд сторінки зображено на рисунку
3.14.
59
ЧДТУ.232101.006 ПЗ
Рисунок 3.14 – Сторінка результатів тесту для абітурієнта
3.1.6 Опис розробки програмних компонентів
Під час розробки програмного продукту було розроблено 5 модулів для
функціонування системи. Це модулі авторизації та реєстрації, перегляду та
створення тестів, перегляду та створення питань, проходження тесту, перегляду
результатів. Кожен цей модуль являє собою частину логіки на фронтенді, бе-
кенді та взаємодію з базою даних для опрацювання та зберігання інформації.
Модуль авторизації та реєстрації.
Для фронтенд частини було використано шаблони безоплатної бібліотеки
MUI сторінок авторизації та реєстрації. Під час реєстрації логін та пароль кори-
стувача передається на бекенд, відбувається перевірка чи такого юзера ще немає
та після цього зберігає логін та пароль до бази даних. Після цього користувача
60
ЧДТУ.232101.006 ПЗ
переправляє в браузері до сторінки авторизації де йому потрібно ввести логін та
пароль від свого акаунту. Після чого логін та пароль відправляються на бекенд
для перевірки. Якщо все успішно то відбувається вхід користувача в систему,
якщо ні то користувач побачить повідомлення про помилку.
Модуль перегляду та створення тесту.
У цьому модулі була імплементована логіка для створення нових тестів,
перегляду існуючих та видалення існуючих тестів. Також у цьому модулі є ло-
гіка для переходу на інші сторінки для перегляду результатів та редагування пи-
тань до тесту. Також було реалізовано генерація динамічного посилання на про-
ходження та редагування тесту, використовуючи UUID для того, щоб убезпечи-
тись від несанкціонованого доступу до тесту. Також додано валідації для убез-
печення від збереження тестів з пустими назвами. Інформування про всі події
пов’язані з діями користувача відбуваються за допомогою snackbar компоненту.
Також було додано перевірку чи є поточний користувач власником тестів, щоб
до тестів мав доступ лише їх власник.
Модуль перегляду та створення питань.
У цьому модулі була імплементована логіка для створення нових питань,
перегляду існуючих та видалення існуючих питань. Нове питання зберігається в
локальному стані React до натискання на кнопку «Зберегти питання». Після збе-
реження питання воно зберігається в базі даних та буде зберігатись у розділі іс-
нуючих питань. Також було додано валідації на те, щоб не можна було створити
питання з пустою назвою, з пустими відповідями та без правильної відповіді. Ін-
формування про всі події пов’язані з діями користувача відбуваються за допо-
могою snackbar компоненту. Доступ до цієї сторінки має лише власник тесту.
61
ЧДТУ.232101.006 ПЗ
Модуль проходження тесту.
У цьому модулі була імплементована логіка для проходження тесту абіту-
рієнтом. Після переходу за посиланням, та після авторизації, буде відразу відк-
рита сторінка проходження тесту. Абітурієнт повинен обрати правильні відпо-
віді, які зберігатимуться в локальному стані React та відправляться на бекенд
для перевірки. На бекенді відбувається перевірка відповідей абітурієнта та збе-
рігання до бази даних результатів.
Модуль перегляду результатів.
У цьому модулі була імплементована логіка для перегляду результатів те-
стування для адміністратора та абітурієнта. У адміністратора є можливість пере-
глянути результати всіх абітурієнтів по окремому тесту та дозволити перегляд
результатів абітурієнтам. Абітурієнти можуть побачити лише свої результати і
лише тоді, коли це буде дозволено адміністратором. Якщо адміністратор ще не
дозволив перегляд результатів, то абітурієнт буде бачити сторінку очікування
результатів. Також було додано валідації, щоб користувач міг бачити лише свої
результати та не міг отримати доступу до чужих результатів.
3.2 Тестування системи
3.2.1 Модульне тестування
Модульне тестування системи включає в себе наступні етапи:
Написання тестів для фронтенду
− Забезпечення належної функціональності компонентів React за допомо-
гою Jest тестів.
62
ЧДТУ.232101.006 ПЗ
− Перевірка правильності відображення даних на сторінці.
− Перевірка правильності обробки подій користувача.
Для перевірки фронтенду було використано Jest та React Testing Library. Ці
інструменти забезпечують швидке та ефективне тестування коду, а також мають
кілька переваг порівняно з іншими інструментами.
Однією з основних переваг Jest є те, що він забезпечує швидку зручну та
надійну роботу з тестами. Він має вбудовану підтримку для багатьох технологій,
включаючи Babel та TypeScript, тому розробники можуть легко тестувати свій
код, незалежно від того, який пакетний менеджер вони використовують.
React Testing Library, з іншого боку, спрощує тестування компонентів React.
Він пропонує зручний інтерфейс для взаємодії з компонентами, забезпечуючи
швидке та просте тестування.
Ще одна перевага Jest та React Testing Library полягає в тому, що вони забез-
печують зручну підтримку для асинхронного коду, що робить тестування
простішим та швидшим.
Крім того, Jest та React Testing Library є відкритими та безкоштовними інстру-
ментами, що зробило їх популярними серед розробників.
Загалом, використання Jest та React Testing Library дає можливість швидко та
ефективно тестувати код фронтенду React, забезпечуючи надійність та безпеку
роботи програмного забезпечення.
Написання тестів для бекенду
− Забезпечення коректної роботи маршрутів API за допомогою Jest тестів.
− Перевірка правильності обробки запитів на сервері.
− Перевірка коректності відправлення відповідей на клієнт.
63
ЧДТУ.232101.006 ПЗ
Для перевірки бекенду було використано Jest. Цей фреймворк для тестування
JavaScript-коду має багато переваг, які особливо корисні для тестування Node.js
та Express додатків.
Однією з переваг Jest є його простота використання. Це дозволяє швидко ство-
рювати й виконувати тести, що значно збільшує продуктивність розробника.
Крім того, Jest має вбудовану функціональність для створення mock-об'єктів, яка
дозволяє легко тестувати код, який взаємодіє з зовнішніми ресурсами, такими як
бази даних або API.
Ще одна важлива перевага Jest полягає у тому, що він дозволяє писати тести,
які можуть бути виконані паралельно. Це зменшує час виконання тестів і дозво-
ляє швидко знайти й виправити помилки у коді.
Jest також має вбудовану підтримку для Code Coverage, що дозволяє
вимірювати, яка частина коду була виконана під час тестування. Це дозволяє ро-
зробникам переконатися, що їхні тести охоплюють всі гілки коду та уникнути
непотрібного дублювання коду.
Загалом, Jest є потужним інструментом для тестування Node.js та Express до-
датків, який дозволяє ефективно тестувати код, зменшувати час виконання тестів
та забезпечувати високу якість продукту.
3.2.2 Інтеграційне тестування
Інтеграційні тести були написані за допомогою Supertest - бібліотеки, яка
надає зручні інструменти для тестування Node.js Express додатків. Supertest - це
високопродуктивний модуль, який дозволяє створювати тестові запити на сервер,
аналізувати їх відповіді та перевіряти різні параметри, що зробило його одним з
найкращих виборів для написання інтеграційних тестів.
64
ЧДТУ.232101.006 ПЗ
Однією з головних переваг Supertest є його простота використання. Він має
простий і зрозумілий API, який дозволяє швидко створювати тести і перевіряти
різні властивості відповідей сервера. Це зробило Supertest ідеальним інструмен-
том для тестування різноманітних погоджень між клієнтами та серверами.
Крім того, Supertest має можливість тестування автономних серверів. Це
дозволяє швидко тестувати різні варіанти поведінки серверу без запуску повного
додатку. Це дуже зручно при тестуванні нових функцій або виправленні помилок,
коли не потрібно зупиняти та перезапускати весь додаток.
Також Supertest має можливість тестування API з використанням різних
типів запитів, таких як GET, POST, PUT і DELETE. Це дозволяє перевіряти різні
сторони API, включаючи валідацію параметрів запитів та відповідей.
Загалом, Supertest є потужним інструментом для написання інтеграційних
тестів Node.js Express додатків. Він дозволяє розширювати тести, використову-
ючи chai, забезпечуючи зручний та легкий спосіб перевірки різних параметрів
відповідей сервера. Supertest дозволяє тестувати API з використанням різних
типів запитів та має можливість тестування автономних серверів, що робить його
ідеальним вибором для тестування API інтерфейсів, що використовують Express
у якості бекенду.
Також вагомою перевагою є те, що Supertest є безкоштовним інструментом,
доступним для використання всім розробникам Node.js. Це забезпечує простий
та легкий спосіб написання інтеграційних тестів, що допомагає зберігати
відповідність коду та зменшує кількість помилок в продакшені.
65
ЧДТУ.232101.006 ПЗ
3.2.3 Системне тестування
Для системного тестування будуть пройдені та коротко описані етапи роботи з
системою.
Спочатку відкриваємо сайт та авторизуємось як адміністратор(рис.3.15).
Рисунок 3.15 – Сторінка результатів тесту для абітурієнта
Вписуємо нову назву тесту до текстового поля відповідно до потрібних нам
цілей та натискаємо кнопку «СТВОРИТИ»(рис.3.16).
Рисунок 3.16 – Сторінка перегляду та додавання тестів
66
ЧДТУ.232101.006 ПЗ
Натискаємо на кнопку редагування створеного тесту(рис.3.17)
Рисунок 3.17 – Кнопка переходу на сторінку редагування тесту
Переходимо на сторінку редагування тесту та вписуємо питання, відповіді
та обираємо правильну відповідь(рис.3.18).
Рисунок 3.18 – Сторінка редагування тесту
Переходимо назад на сторінку з переліком тестів та копіюємо посилання на
тест. Після чого відправляємо абітурієнту посилання і його відправляє на сторі-
нку авторизації(рис.3.19). Після проходження авторизації абітурієнта буде пере-
направлено на сторінку проходження тесту(рис.3.20).
67
ЧДТУ.232101.006 ПЗ
Рисунок 3.19 – Сторінка авторизації абітурієнта
Рисунок 3.20 – Сторінка проходження тесту
Після вибору правильних відповідей натискаємо на кнопку «Завершити
тест» та нас перенаправляє на сторінку очікування результатів(рис.3.21).
68
ЧДТУ.232101.006 ПЗ
Рисунок 3.21 – Сторінка очікування результатів
Адміністратор заходить на сторінку перегляду всіх результатів те-
сту(рис.3.22) та натискає на кнопку «Завершити тестування», після чого у абіту-
рієнта стають доступні результати на окремій сторінці(3.23).
Рисунок 3.22 – Сторінка результатів тесту для адміністратора
69
ЧДТУ.232101.006 ПЗ
Рисунок 3.23 – Сторінка результатів тесту для абітурієнта
За результатами системного тестування можна сказати, що система працює
коректно та виконує всі поставлені перед нею задачі.
3.2.4 Приймальне тестування
Для приймального тестування будуть пройдені та детально описані всі мо-
жливі етапи роботи з системою.
Спочатку відкриваємо сайт та авторизуємось як адміністратор(рис.3.24).
70
ЧДТУ.232101.006 ПЗ
Рисунок 3.24 – Сторінка результатів тесту для абітурієнта
Намагаємось зберегти новий тест без назви та отримуємо поми-
лку(рис.3.25).
Рисунок 3.25 – Помилка при створенні теста без назви
Видаляємо попередньо створений тест та отримуємо повідомлення про
успішне видалення(рис.3.26).
Рисунок 3.26 – Повідомлення про видалення тесту
Вписуємо нову назву тесту до текстового поля відповідно до потрібних нам
цілей та натискаємо кнопку «СТВОРИТИ»(рис.3.27).
71
ЧДТУ.232101.006 ПЗ
Рисунок 3.27 – Сторінка перегляду та додавання тестів
Натискаємо на кнопку редагування створеного тесту(рис.3.28)
Рисунок 3.28 – Кнопка переходу на сторінку редагування тесту
Намагаємось створити питання без тексту та отримуємо помилку(рис.3.29).
Рисунок 3.29 – Помилка створення пустого питання
Намагаємось створити питання без відповідей та отримуємо поми-
лку(рис.3.30).
Рисунок 3.30 – Помилка створення питання без відповідей
Намагаємось створити питання без правильної відповіді та отримуємо по-
милку(рис.3.31).
Рисунок 3.31 – Помилка створення питання без відповідей
72
ЧДТУ.232101.006 ПЗ
Видаляємо заздалегідь створене питання та отримуємо повідомлення про
видалення(рис.3.32).
Рисунок 3.32 – Повідомлення про видалення питання
Вписуємо питання, відповіді та обираємо правильну відповідь(рис.3.33),
після чого натискаємо на кнопку «Додати питання» та отримуємо повідомлення
про успішне збереження нового питання(рис.3.34).
Рисунок 3.33 – Сторінка редагування тесту
Рисунок 3.34 – Повідомлення про збереження питання
Переходимо назад, за допомогою кнопки повернення(рис.3.35) на сторінку
з переліком тестів та копіюємо посилання на тест, натиснувши на назву те-
сту(рис.3.36). Після чого відправляємо абітурієнту посилання і його відправляє
73
ЧДТУ.232101.006 ПЗ
на сторінку авторизації(рис.3.37). Після проходження авторизації абітурієнта
буде перенаправлено на сторінку проходження тесту(рис.3.38).
Рисунок 3.35 – Кнопка повернення
Рисунок 3.36 – Повідомлення про скопійоване посилання
Рисунок 3.37 – Сторінка авторизації абітурієнта
74
ЧДТУ.232101.006 ПЗ
Рисунок 3.38 – Сторінка проходження тесту
Бачимо перед собою питання та можливі правильні відповіді. Після вибору
правильних відповідей натискаємо на кнопку «Завершити тест» та нас перенап-
равляє на сторінку очікування результатів(рис.3.39).
Рисунок 3.39 – Сторінка очікування результатів
Адміністратор заходить на сторінку перегляду всіх результатів те-
сту(рис.3.40), та бачить перед собою результати всіх абітурієнтів по обраному
75
ЧДТУ.232101.006 ПЗ
тесту. Після цього натискає на кнопку «Завершити тестування», після чого у абі-
турієнта стають доступні результати на окремій сторінці(3.41).
Рисунок 3.40 – Сторінка результатів тесту для адміністратора
Рисунок 3.41 – Сторінка результатів тесту для абітурієнта
За результатами приймального тестування можна сказати, що система пра-
цює коректно та виконує всі поставлені перед нею задачі.
Завершення успішного модульного, інтеграційного, системного та прий-
мального тестування проекту Програмне забезпечення автоматизованої системи
76
ЧДТУ.232101.006 ПЗ
тестування абітурієнтів університету дає позитивні результати та переваги для
користувачів та розробників системи.
Модульне тестування дозволило перевірити правильність роботи кожного
окремого модуля системи та виявити можливі помилки, які потребують виправ-
лення. Інтеграційне тестування дозволило перевірити, чи правильно працюють
окремі модулі, що були зібрані разом в системі, а також перевірити взаємодію
між ними. Системне тестування дозволило оцінити роботу системи в цілому та
переконатися, що вона відповідає вимогам, встановленим для проекту. Прий-
мальне тестування, у свою чергу, дозволило оцінити якість та функціональність
системи з точки зору її користувачів та перевірити, чи відповідає вона їхнім по-
требам та очікуванням.
У результаті успішного тестування проекту Програмне забезпечення авто-
матизованої системи тестування абітурієнтів університету можна зробити
наступні висновки:
• Система пройшла всі етапи тестування та демонструє високу якість
та надійність в роботі.
• Користувачі системи можуть з легкістю використовувати її та вико-
нувати всі необхідні дії, що дозволяє забезпечити високу ефек-
тивність процесу тестування абітурієнтів.
• Розробники системи можуть бути впевнені у якості та правильності
роботи свого продукту та мають можливість удосконалювати його
77
ЧДТУ.232101.006 ПЗ
ВИСНОВКИ
У ході виконання кваліфікаційної роботи бакалавра «Програмне забезпечення ав-
томатизованої системи тестування абітурієнтів університету» було розроблено
систему, яка відповідає всім поставленим вимогам. Фронтенд був розроблений з
використанням популярної бібліотеки React, що дозволило створити зручний та
естетичний інтерфейс. Крім того, була розроблена архітектура системи, яка доз-
воляє легко збільшувати її функціональність та розширювати інтерфейс.
Бекенд системи був розроблений на Node.js, що забезпечує високу швид-
кість та продуктивність системи. Для розробки бекенду була використана попу-
лярна бібліотека Express, що дозволяє швидко розробляти RESTful API. База да-
них PostgreSQL була використана для зберігання даних користувачів та тестів.
У процесі розробки системи було проведено модульне тестування, інтегра-
ційне тестування, системне тестування та приймальне тестування, що дозволило
виявити та виправити помилки на кожному етапі розробки.
У результаті було створено високоякісну та надійну програмну систему,
яка може бути успішно використана університетом для тестування абітурієнтів.
Крім того, розроблене програмне забезпечення має відкритий код, що дозволяє
його використання та модифікацію в інших проектах. За результатами виконання
кваліфікаційної роботи бакалавра можна зробити висновок про успішну розробку
та виконання всіх поставлених вимог.
78
ЧДТУ.232101.006 ПЗ
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Методичні рекомендації до підготовки кваліфікаційної роботи бакалавра
для здобувачів вищої освіти зі спеціальності 121 «Інженерія програмного
забезпечення» усіх форм навчання /Укл.: Голуб С.В., Заспа Г.О., Півень
О.Б. Катаєва Є.Ю., Салапатов В.І., Метелап В.В., Олексюк В.В.; М-во
освіти і науки України, Черкас, держ. технол. ун-т. - Черкаси : ЧДТУ,
2023. - 97 с.
2. https://testportal.gov.ua/
3. https://www.admissionstesting.org/
4. https://www.e-assessment.com/
5. https://reactjs.org/
6. https://nodejs.org/
7. https://expressjs.com/
8. https://www.postgresql.org/
9. https://jestjs.io/
10. Rumbaugh, J., Jacobson, I., & Booch, G. (2004). The Unified Modeling Lan-
guage Reference Manual (2nd ed.). Addison-Wesley.
11. Fowler, M. (2004). UML Distilled: A Brief Guide to the Standard Object Mod-
eling Language (3rd ed.). Addison-Wesley.
12. Ambler, S. W. (2012). The Object Primer: Agile Model-Driven Development
with UML 2. Cambridge University Press.
13. Al-Fares, M. A., & Zhang, Z. L. (2019). Enhancing SSL/TLS security by a hy-
brid approach. Journal of Systems and Software, 154, 151-159.
14. Durumeric, Z., Wustrow, E., & Halderman, J. A. (2013). ZMap: Fast Internet-
wide scanning and its security applications. In Proceedings of the 22nd USE-
NIX Security Symposium (pp. 605-620).
79
ЧДТУ.232101.006 ПЗ
15. Pressman, R. S., & Maxim, B. R. (2020). Software Engineering: A Practition-
er's Approach (9th ed.). McGraw-Hill Education.
16. Hunt, C., & Thomas, D. (2012). The Pragmatic Programmer: Your Journey to
Mastery. Addison-Wesley Professional.
17. https://www.omg.org/spec/UML/
18. https://developer.mozilla.org/uk/docs/Web/JavaScript
19. https://reactjs.org/docs
20. https://www.typescriptlang.org/docs/
21. https://www.postgresql.org/docs/
22. https://sequelize.org/
23. Cunningham, M. (2018). The Art of PostgreSQL. The Art of PostgreSQL.
24. Dalheimer, M. (2005). Linux Administration Handbook (2nd ed.). Prentice Hall.
25. Das, S. (2020). Learning PostgreSQL 12: A beginner’s guide to building high-
performance PostgreSQL database solutions. Packt Publishing.
26. Delgado, E. (2018). PostgreSQL: Up and Running: A Practical Guide to the Ad-
vanced Open Source Database. O'Reilly Media.
27. Durgaprasad, M. (2021). Building Secure and Reliable Systems: Best Practices
for Designing, Implementing, and Maintaining Systems. O'Reilly Media.
28. Freeman, E., & Robson, E. (2020). Head First Design Patterns: A Brain-Friendly
Guide (2nd ed.). O'Reilly Media.
29. Gutschke, T., & Gontcharov, S. (2018). PostgreSQL 10 Administration Cook-
book: Over 165 effective recipes for database management and maintenance in
PostgreSQL 10. Packt Publishing.
30. Hauck, M., & Shah, A. (2019). Hands-On Full Stack Development with Spring
Boot 2 and React: Build modern and scalable full stack applications using the
Java-based Spring Boot framework and React. Packt Publishing.
31. Holzner, S. (2006). Ajax: The Complete Reference. McGraw-Hill Education.
80
ЧДТУ.232101.006 ПЗ
32. Keeton, K. (2020). Building Microservices with Node.js (2nd ed.). O'Reilly Me-
dia.
33. Kleppmann, M. (2017). Designing Data-Intensive Applications: The Big Ideas
Behind Reliable, Scalable, and Maintainable Systems. O'Reilly Media.
34. Kozlovic, D. (2018). Advanced React Native: Build Native Cross-Platform Apps
with JavaScript. Apress.
35. Dostal J., Stastny J. (2019) The Use of React for Building User Interfaces // Pro-
ceedings of the 7th International Conference on Information and Communication
Technologies in Education. - pp. 279-288.
36. Kuhn M. (2018) Node.js and Express.js Tutorial – Web Development with Node
and Express. - Available at: https://www.tutorialspoint.com/nodejs/nodejs_ex-
press_framework.htm
37. PostgreSQL. Official website. - Available at: https://www.postgresql.org/
38. Balasubramanian N., Jacob S. (2018) An Overview of SQL and NoSQL Data-
bases // 2018 International Conference on Intelligent Computing, Instrumenta-
tion and Control Technologies (ICICICT). - pp. 290-294.
39. Lowe D. (2020) Mastering React: Learn ReactJS and React Native Program-
ming. Packt Publishing Ltd.
40. Patton J. (2019) The Definitive Guide to Node.js: Expert Techniques for Build-
ing Scalable Server-Side Web Applications. Apress.
81