ВУЗ: Не указан

Категория: Дипломная работа

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 27

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВІДОКРЕМЛЕНИЙ СТРУКТУРНИЙ ПІДРОЗДІЛ
«ФАХОВИЙ КОЛЕДЖ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ»
НАЦІОНАЛЬНОГО УНІВЕРСИТЕТУ «ЛЬВІВСЬКА
ПОЛІТЕХНІКА»
ТЕХНІЧНИЙ ЗВІТ
з переддипломної практики
Студента групи КН-320
Цьося Іллі Юрійовича
Прізвище, ім’я по батькові
База практики: Лабораторія “web-програмування”
303н
Керівник практики
Бугиль Б. А.
Ім’я, прізвище
Керівник дипломної роботи Бугиль Б. А.
Ім’я, прізвище
Дані про залік:
Оцінка ___________
Дата захисту: «___» ______________ 2023 р.
Членів комісії:
______________________________________
______________________________________
Львів 2023 р.

АНОТАЦІЯ
Обсяг даної курсової роботи 29 сторінок. Робота містить 8 посилань.
У першому розділі було розглянуто збір а опис теоретичних відомостей з автоматизації виконання юніт-тестів та статистики покриття коду за допомогою
GitHub Actions
У другому розділі було проведено налаштування середовища виконання роботи роботи та встановлення програм для автоматизації виконання юніт-тестів та статистики покриття коду за допомогою GitHub Actions
Ключові слова: GITHUB, ТЕСТ, АВТОМАТИЗАЦІЯ, PYTHON, КОД,
2

ЗМІСТ
АНОТАЦІЯ.................................................................................................................................... 2
ЗМІСТ..............................................................................................................................................3
ВСТУП............................................................................................................................................ 4
РОЗДІЛ 1.........................................................................................................................................5
ЗБІР ТА ОПИС ТЕОРЕТИЧНИХ ВІДОМОСТЕЙ З РОБОТИ З АВТОМАТИЗАЦІЄЮ
ВИКОНАННЯ ЮНІТ-ТЕСТІВ.................................................................................................. 5
1.1 Автоматизація та її застосування.............................................................................................5 1.2 Тестування коду, тести та їх класифікація..............................................................................7 1.3 Юніт-тести та їх використання................................................................................................8 1.4 Покриття коду тестами та їх призначення............................................................................11 1.5 Призначення GitHub Actions..................................................................................................14
РОЗДІЛ 2.......................................................................................................................................16
НАЛАШТУВАННЯ СЕРЕДОВИЩА ВИКОНАННЯ РОБОТИ ТА ВСТАНОВЛЕННЯ
ПРОГРАМИ GITHUB ACTION ТА ЙОГО КОНФІГУРАЦІЯ............................................16
2.1 Налаштування локального проекту.......................................................................................16 2.2 Створення юніт-тестів............................................................................................................18 2.3 Автоматизація юніт тестів за допомогою GitHub Actions...................................................21
ІНДИВІДУАЛЬНЕ ЗАВДАННЯ ПРАКТИКИ........................................................................25
ВИСНОВОК................................................................................................................................. 28
ВИКОРИСТАНІ ДЖЕРЕЛА..................................................................................................... 29
3


ВСТУП
Автоматизація виконання юніт-тестів та отримання статистики покриття коду є важливим етапом розробки програмного забезпечення. GitHub Action надає можливість автоматизувати ці задачі та забезпечити високу якість вашого програмного забезпечення.
GitHub Action дозволяє вам встановлювати та налаштовувати сценарії
автоматизації, які будуть виконуватися при певних подіях, таких як коміти до гілки репозиторію. Ви можете налаштувати сценарій для запуску юніт-тестів та збору статистики покриття коду, щоб переконатися, що ваш код працює
належним чином та відповідає вимогам якості.
Для автоматизації запуску юніт-тестів можна використовувати різні
інструменти, такі як PHPUnit для PHP, Jest для JavaScript, Pytest для Python та
інші. Ви можете встановити та налаштувати відповідний інструмент у своєму сценарії автоматизації та визначити, які саме тести мають бути запущені.
Для отримання статистики покриття коду можна використовувати
інструменти, такі як Codecov, Coveralls та інші. Ви можете встановити та налаштувати відповідний інструмент у своєму сценарії автоматизації та визначити, які саме дані щодо покриття коду мають бути зібрані.
Отримання статистики покриття коду дозволяє вам зрозуміти, наскільки добре ваши тести покривають код та які частини коду потребують додаткових тестів. Це допомагає вам забезпечити високу якість вашого програмного забезпечення та зменшити кількість помилок, які можуть з'явитися в процесі
розробки
4

РОЗДІЛ 1
ЗБІР ТА ОПИС ТЕОРЕТИЧНИХ ВІДОМОСТЕЙ З РОБОТИ З
АВТОМАТИЗАЦІЄЮ ВИКОНАННЯ ЮНІТ-ТЕСТІВ
1.1 Автоматизація та її застосування
Автоматизація - це процес заміни ручної роботи на автоматичний механізм,
який виконує задачі з використанням програмного забезпечення, роботів або
інших пристроїв, що забезпечують автоматичне виконання операцій.
Автоматизація може бути застосована у різних сферах, включаючи виробництво, логістику, банківський сектор, медицину та багато інших. При цьому автоматизація може забезпечувати підвищення продуктивності, зниження витрат, покращення якості продукції або послуг, зменшення кількості помилок та інші переваги.
Автоматизація дозволяє знизити витрати на працю, зменшити кількість помилок, підвищити продуктивність та покращити якість продукту. Наприклад,
у виробництві автоматизація може включати в себе використання роботів для монтажу деталей або використання програмних засобів для контролю якості
продукту. В сфері бізнесу автоматизація може включати в себе використання програмного забезпечення для автоматичного створення звітів або виконання рутинних операцій, таких як відправка електронної пошти.
Автоматизація стала надзвичайно важливою в епоху цифрових технологій,
коли все більше бізнес-процесів стають електронними та вимагають автоматизації. Це дозволяє компаніям зосередитися на більш складних та високооплачуваних завданнях, замість того, щоб витрачати час та ресурси на повторювані рутинні завдання.
Автоматизація може бути виконана різними способами, включаючи використання механічних пристроїв, роботів, програмного забезпечення та
інших технологій. У деяких випадках автоматизація може бути повністю автономною, тобто виконувати завдання без жодної участі людини, а в інших -
5

вона може вимагати участі людини для контролю за процесом та прийняття рішень. У загальному, автоматизація дозволяє підвищити ефективність та точність роботи, знизити витрати та покращити якість продукту або послуги.
Залежно від сфери застосування та масштабу, автоматизація може бути виконана різними методами та технологіями.
У виробничій сфері, наприклад, можуть бути застосовані різні типи автоматизації. Один з них - це автоматизація виробничих ліній з використанням роботів, які здійснюють різні види операцій на лінії виробництва. Це дозволяє
знизити витрати на працю, зменшити час виробництва та збільшити продуктивність.
Інший метод - це використання автоматизованих систем керування виробництвом, що дає можливість контролювати різні аспекти виробництва,
включаючи якість продукції, витрати матеріалів, продуктивність працівників та
інші параметри.
У
сфері
логістики автоматизація може включати використання автоматизованих складів, які забезпечують автоматичне зберігання та перевезення товарів, використання систем автоматичного розподілу товарів та
інше.
У банківській сфері автоматизація може включати використання програмного забезпечення для обробки фінансових операцій, автоматизовані
банкомати, системи розпізнавання голосу для ідентифікації клієнтів та інші
технології.
Окрім цього, автоматизація може бути застосована у багатьох інших сферах, таких як медицина, освіта, транспорт, розваги та інші.
Загалом, автоматизація є важливою складовою в усіх сферах діяльності,
оскільки дозволяє забезпечити ефективність та точність роботи, знизити витрати та покращити які
6

1.2 Тестування коду, тести та їх класифікація
Тестування коду - це процес визначення якості програмного забезпечення
(ПЗ), під час якого розробники створюють набір тестів, які призначені для перевірки функціональності, стійкості та надійності ПЗ. Ці тести включають в себе запуск програмного коду з різними вхідними даними, щоб перевірити, чи поводиться програма правильно в різних умовах.
Тестування коду є важливою складовою в процесі розробки ПЗ, оскільки допомагає знизити кількість помилок та забезпечити високу якість програмного продукту. Відсутність тестів може призвести до помилок, які можуть бути складні для виявлення та виправлення, особливо у великих проектах зі
складним кодом.
Тест (англ. test) - це процес або процедура, яка використовується для оцінки якості чогось, такого як програмне забезпечення, продукти, послуги,
знання тощо. Тестування може здійснюватися з різних позицій і з метою перевірки різних характеристик, таких як відповідність вимогам, правильність роботи, швидкість, надійність, безпека тощо.
У контексті програмування, тест - це програмний код, написаний з метою перевірки правильності роботи іншого програмного коду. Цей тестовий код запускається з різними вхідними даними, щоб перевірити, чи поводиться програма правильно в різних ситуаціях. Тести можуть бути написані
розробниками програмного забезпечення або іншими спеціалістами, які
відповідають за якість ПЗ.
Тести можуть бути ручними або автоматизованими. Ручні тести виконуються вручну спеціалістами, що може бути часом затратно та неефективно, особливо в великих проектах. Автоматизовані тести створюються з використанням спеціальних програм та бібліотек, що дозволяє прискорити процес тестування та забезпечити більш високу точність результатів.
7


Для ефективного тестування важливо створювати якісні тести, які
покривають якомога більше можливих сценаріїв взаємодії користувачів з програмою. Крім того, слід регулярно проводити тести на різних етапах розробки ПЗ, щоб вчасно виявляти та виправляти помилки та несумісності.
У контексті програмування, тести можуть мати різні форми і виконуватися на різних етапах розробки програмного забезпечення. Основна мета тестування
- перевірити, чи відповідає програма вимогам та специфікаціям, чи працює
правильно в різних ситуаціях і чи забезпечує вимоги до якості.
Для забезпечення якості
програмного забезпечення зазвичай використовуються три типи тестів: модульні тести, інтеграційні тести і
функціональні тести.
Модульні тести - це тести, які перевіряють правильність роботи окремих модулів або функцій програми. Модулі можуть бути тестовані індивідуально,
щоб забезпечити, що вони працюють правильно перед їх інтеграцією в систему.
Інтеграційні тести - це тести, які перевіряють правильність роботи всієї
системи як одного цілого. Ці тести перевіряють взаємодію різних модулів та компонентів системи, щоб переконатися, що вони працюють разом правильно.
Функціональні тести - це тести, які перевіряють функціональність програми, тобто те, як програма повинна працювати відповідно до вимог і
специфікацій. Ці тести перевіряють різні входи та виводи програми, щоб переконатися, що вони повністю відповідають вимогам.
Для виконання тестів можуть використовуватися різні інструменти, такі як фреймворки тестування, автоматизовані тести, інструменти профілювання,
тести навантаження та інші. Крім того, важливим етапом тестування є аналіз та виявлення помилок, що дозволяє покращити
1.3 Юніт-тести та їх використання
Юніт-тести (англ. unit tests) - це тести, які перевіряють коректність роботи окремих функцій або методів програмного коду. Це найнижчий рівень
8
тестування в програмуванні, де кожна функція тестується окремо, ізольовано від інших частин програми.
Юніт-тести дозволяють забезпечити, що кожна окрема частина програми працює коректно і не впливає на роботу інших частин. Вони зазвичай виконуються автоматично за допомогою спеціальних фреймворків тестування,
таких як JUnit для Java або NUnit для .NET.
Під час написання юніт-тестів для функції або методу програміст визначає
очікуваний результат роботи функції або методу для певних вхідних даних.
Потім він створює тестові дані, передає їх у функцію або метод, і перевіряє, чи отриманий результат відповідає очікуваному результату.
Написання юніт-тестів дозволяє програмістам виявляти та виправляти помилки в коді на ранніх етапах розробки, забезпечуючи більш високу якість програмного забезпечення та знижуючи ризик виникнення критичних помилок під час виконання програми. Крім того, юніт-тести сприяють підтримці іншими розробниками і використовувачами коду, а також дозволяють зберігати якість програми на стабільному рівні під час змін у коді або вводу нового функціоналу.
Юніт-тестування
є
невід'ємною частиною розробки програмного забезпечення, і для його виконання використовуються різні утиліти. Ось декілька найпопулярніших утиліт для юніт-тестування:
JUnit: Це найпопулярніший фреймворк для юніт-тестування Java-програм.
Він має простий синтаксис, добре документований і підтримує різні функції для тестування, такі як перед- і післятестові дії, перевірка винятків і т.д.
NUnit: Це фреймворк для юніт-тестування .NET-програм. Він підтримує
багато функцій, таких як тестування з параметрами, можливість запуску тестів у певному порядку, підтримка кількох фреймворків вводу-виводу і т.д.
pytest: Це фреймворк для тестування Python, який дозволяє легко писати тести для Python-коду. Він має багато функцій, таких як підтримка параметрів,
підтримка фікстур (зберігання даних між тестами), інтеграція з іншими фреймворками тестування і т.д.
9


Mocha:
Це фреймворк для тестування
JavaScript, який можна використовувати як на серверній, так і на клієнтській стороні. Він підтримує
різні функції, такі як асинхронні тести, тести з параметрами, включення і
виключення тестів і т.д.
Ці фреймворки для юніт-тестування дозволяють програмістам легко писати тести, забезпечують структуру тестів і забезпечують різноманітні
функції для тестування. Крім цього, інструменти для збирання тестів і генерації
звітів про тестування допомагають забезпечити повну автоматизацію процесу тестування, що збільшує швидкість розробки і знижує кількість помилок.
Юніт-тести використовуються для тестування окремих функцій або методів програми, які виконують обмежені завдання і мають чітко визначені
вхідні та вихідні параметри.
Зазвичай розробники створюють окремий набір тестів для кожного модуля або компоненту програми, який потім виконують автоматично під час процесу розробки, використовуючи спеціальні утиліти для тестування.
При виконанні тестів, програма запускається з різними вхідними параметрами, щоб перевірити, чи повертає функція очікуваний результат. Якщо результат відповідає очікуваному, тест вважається успішним. Якщо результат не відповідає очікуваному, тест вважається неуспішним, і програміст повинен виправити проблему та перевірити тест ще раз.
Користуючись юніт-тестами, розробники можуть переконатися в тому, що окремі частини програми працюють правильно, і необхідні функції тестуються на ранніх етапах розробки. Це допомагає знизити кількість помилок, які можуть з'явитися пізніше, під час інтеграції окремих компонентів в одну програму.
Ще одна важлива перевага використання юніт-тестів полягає в тому, що вони дозволяють розробникам змінювати код програми, не боячись, що це призведе до збоїв у функціонуванні інших частин програми. Коли розробник вносить зміни в код, він може виконати юніт-тести, щоб переконатися в тому,
що нічого не зламалось в інших частинах програми.
10

Також юніт-тести допомагають покращити документацію до програмного продукту, оскільки вони змушують розробників чітко визначати очікуваний результат для кожної функції або методу. Це дозволяє створювати документацію, яка чітко визначає, що робить кожна функція, які вхідні дані
потрібні для її виконання та який очікуваний результат.
Окрім того, юніт-тести можуть допомогти зекономити час на тестуванні,
оскільки вони автоматизовані та можуть бути запущені автоматично під час процесу збірки програми. Це дозволяє розробникам швидше виявляти та виправляти проблеми, що допомагає збільшити ефективність розробки та знизити загальні витрати на проект.
Отже, використання юніт-тестів є важливою складовою розробки програмного продукту, оскільки допомагає забезпечити правильну роботу програми та знижує кількість помилок, що можуть з'явитися в процесі її
розробки.
1.4 Покриття коду тестами та їх призначення
Розкриття коду тестами, або Test Driven Development (TDD), є
методологією розробки програмного забезпечення, яка базується на написанні
тестів перед написанням фактичного коду. Основна ідея полягає в тому, що розробник спочатку пише тест-кейси, які визначають очікувані результати функції, а потім реалізує ці функції, щоб задовольнити вимоги тестів.
Процес TDD можна розбити на три етапи: "червоний", "зелений" та "рефакторинг".
На етапі "червоного" тесту розробник пише тест, який спочатку не пройде,
оскільки функціонал ще не реалізовано. Наприклад, якщо потрібно реалізувати функцію, яка додає два числа, розробник може написати тест, який передбачає,
що якщо додати 2 та 3, то результат буде 5. Цей тест відповідає на питання "що має робити програма?".
11