Лабораторная работа № 1: Знакомство с системой контроля версий Git и инструментом CI/CD GitHub Actions
- Познакомиться с распределённой системой контроля версий кода Git и её функциями;
- Познакомиться с понятиями «непрерывная интеграция» (CI) и «непрерывное развёртывание» (CD), определить их место в современной разработке программного обеспечения;
- Получить навыки разработки ООП-программ и написания модульных тестов к ним на современных языках программирования;
- Получить навыки работы с системой Git для хранения и управления версиями ПО;
- Получить навыки управления автоматизированным тестированием программного обеспечения с помощью инструментов CI/CD.
Разработать программу на языке Python, реализующую функционал чтения данных о студентах из файлов различных форматов (JSON, текстовый), анализа этих данных.
Написание модульных тестов с высоким покрытием кода. Также необходимо настроить систему контроля версий Git и интеграцию с GitHub Actions для автоматического запуска тестов.
Проект представляет собой консольное приложение на Python, предназначенное для обработки и анализа академических данных студентов. Основные компоненты:
- DataReader — абстрактный базовый класс для чтения данных.
- TextDataReader — реализация
DataReader, читающая данные из текстового формата. - JsonDataReader — реализация
DataReader, читающая данные из JSON-файла. - StudentAnalyzer — класс, анализирующий данные и подсчитывающий количество студентов с академическими задолженностями (оценка < 61).
- CalcRating — класс, вычисляющий средний балл для каждого студента.
- Тесты — модульные тесты для всех классов, обеспечивающие высокое покрытие кода.
- Язык программирования: Python 3.10
- Система контроля версий: Git
- Фреймворк для тестирования:
pytest - Система CI/CD: GitHub Actions
- Типизация:
typing
В ходе выполнения лабораторной работы были достигнуты все поставленные цели:
- Практически освоены основы работы с Git: создание репозитория, веток, коммитов, пуш и пулы.
- Реализованы принципы объектно-ориентированного программирования: абстракция, наследование, инкапсуляция.
- Написаны модульные тесты с использованием
pytest, обеспечивающие высокий уровень покрытия кода. - Настроена система CI/CD с помощью GitHub Actions, обеспечивающая автоматический запуск тестов при каждом изменении в репозитории.
- Создана UML-диаграмма классов, отражающая архитектуру проекта.