Научная статья на тему 'КАК ВНЕДРЕНИЕ НЕПРЕРЫВНОЙ ИНТЕГРАЦИИ И ТЕСТИРОВАНИЕ ПОМОГАЕТ ОБЕСПЕЧИТЬ СООТВЕТСТВИЕ ТРЕБОВАНИЯМ ПРИ РАЗРАБОТКЕ ПРОГРАММНОГО ПРОДУКТА'

КАК ВНЕДРЕНИЕ НЕПРЕРЫВНОЙ ИНТЕГРАЦИИ И ТЕСТИРОВАНИЕ ПОМОГАЕТ ОБЕСПЕЧИТЬ СООТВЕТСТВИЕ ТРЕБОВАНИЯМ ПРИ РАЗРАБОТКЕ ПРОГРАММНОГО ПРОДУКТА Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
167
21
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
CI/CD / LMS / КОМПЬЮТЕРНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / ИНФОРМАЦИОННАЯ СИСТЕМА / РАЗРАБОТКА ВЕБ-СЕРВИСОВ / ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ / ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ДЛЯ РАЗВЕРТЫВАНИЕ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Никифоров Антон Владимирович

В данной статье было проведено исследование системы непрерывной интеграции с целью повышения эффективности тестирования и соответствию требованиям при разработке программного продукта. С учетом проведенного анализа, было принято решение выбрать систему непрерывной интеграции Gitlab CI/CD в качестве наиболее оптимальной системы для управления процессами интеграции и тестирования. Благодаря использованию данной open-source среды CI/CD, удалось создать LMS соответствующую всем техническим требованиям, покрывающую все основные этапы при разработке системы управления обучением, а также последующие итерации доставки обновлений и тестирования каждого выпускаемого модуля программного продукта.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Никифоров Антон Владимирович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

HOW IMPLEMENTING CONTINUOUS INTEGRATION AND TESTING HELPS ENSURE COMPLIANCE WITH REQUIREMENTS IN SOFTWARE PRODUCT DEVELOPMENT

In this article, a study was made of a continuous integration system in order to improve the efficiency of testing and compliance with the requirements in the development of a software product. Based on the analysis, it was decided to choose the Gitlab CI / CD continuous integration system as the most optimal system for managing integration and testing processes. Thanks to the use of this open-source CI / CD environment, it was possible to create an LMS that meets all technical requirements, covering all the main stages in the development of a learning management system, as well as subsequent iterations of updating and testing each released software product module.

Текст научной работы на тему «КАК ВНЕДРЕНИЕ НЕПРЕРЫВНОЙ ИНТЕГРАЦИИ И ТЕСТИРОВАНИЕ ПОМОГАЕТ ОБЕСПЕЧИТЬ СООТВЕТСТВИЕ ТРЕБОВАНИЯМ ПРИ РАЗРАБОТКЕ ПРОГРАММНОГО ПРОДУКТА»

TECHNOLOGY, ENGINEERING

UDC 004.054

Nikiforov A.V. How implementing continuous integration and testing helps ensure compliance with requirements in software

product development.

Как внедрение непрерывной интеграции и тестирование помогает обеспечить соответствие требованиям при разработке программного продукта

Nikiforov Anton Vladimirovich

Graduate Student

MSTU "STANKIN" - Russian technological university, Moscow

Никифоров Антон Владимирович, Студент магистратуры

МГТУ «СТАНКИН» - Российский технологический университет, Москва

Abstract. In this article, a study was made of a continuous integration system in order to improve the efficiency of testing and compliance with the requirements in the development of a software product. Based on the analysis, it was decided to choose the Gitlab CI / CD continuous integration system as the most optimal system for managing integration and testing processes. Thanks to the use of this open-source CI / CD environment, it was possible to create an LMS that meets all technical requirements, covering all the main stages in the development of a learning management system, as well as subsequent iterations of updating and testing each released software product module.

Keywords: CI/CD, LMS, computer software, information system, web-service development, software testing, deployment software.

Аннотация. В данной статье было проведено исследование системы непрерывной интеграции с целью повышения эффективности тестирования и соответствию требованиям при разработке программного продукта. С учетом проведенного анализа, было принято решение выбрать систему непрерывной интеграции Gitlab CI/CD в качестве наиболее оптимальной системы для управления процессами интеграции и тестирования. Благодаря использованию данной open-source среды CI/CD, удалось создать LMS соответствующую всем техническим требованиям, покрывающую все основные этапы при разработке системы управления обучением, а также последующие итерации доставки обновлений и тестирования каждого выпускаемого модуля программного продукта.

Ключевые слова: CI/CD, LMS, компьютерное программное обеспечение, информационная система, разработка веб-сервисов, тестирование программного обеспечения, программное обеспечение для развертывание.

Рецензент: Торопцев Василий Владимирович - кандидат технических наук, доцент. ФГБОУ ВО «РГАУ-МСХА им. К.А. Тимирязева»

Введение

Современное развитие информационных технологий приводит к увеличению сложности программных продуктов. Для обеспечения качественного и надежного функционирования программного обеспечения необходимо обеспечить соответствие его требованиям. Устаревшие методы не могут адаптироваться к постоянно меняющимся требованиям рынка, поэтому они уже не могут удовлетворить потребности конечного пользователя.

Непрерывная интеграция и тестирование являются эффективными методами, которые позволяют улучшить качество программного обеспечения и обеспечить его соответствие требованиям. В данной статье будет рассмотрено, как внедрение непрерывной интеграции и тестирования помогает обеспечить соответствие требованиям при разработке программного продукта. Исследования и опыт показывают, что требования к программному обеспечению изменяются быстро и постоянно.

Вот некоторые факты, которые демонстрируют эту тенденцию:

1. Согласно исследованию, проведенному компанией Flexera, среднее количество установленных приложений на устройстве увеличилось с 27 в 2013 году до 41 в 2020 году. Это означает, что пользователи ожидают больше функциональности от программного обеспечения, и это требует большего внимания к качеству и надежности. [1]

2. Согласно исследованию, проведенному компанией Gartner, к 2024 году 75% приложений будут поставляться через облачные платформы. Это означает, что разработчики программного обеспечения должны учитывать требования облачных сред, таких как масштабируемость и управляемость. [2]

3. Согласно исследованию, проведенному компанией Redgate, 85% разработчиков программного обеспечения сталкиваются с проблемами связанными с зависимостями кода, и это может привести к проблемам с совместимостью и стабильностью. [3]

Актуальность проблемы

Создание качественного программного продукта является важной задачей для многих компаний и организаций. Однако, разработка сложных программных продуктов может быть связана с рядом проблем, таких как повышенная сложность кода, трудности в сопровождении и модификации программного обеспечения, а также отсутствие гарантий его соответствия требованиям заказчика. Для решения этих проблем необходимо использовать современные методы и подходы в разработке программного обеспечения.

Непрерывная интеграция и тестирование являются одними из таких методов. Эти методы позволяют автоматизировать процесс сборки, интеграции и тестирования кода, что позволяет снизить количество ошибок и повысить качество программного обеспечения. Непрерывная интеграция и тестирование также позволяют быстро выявлять уязвимые места и изменения в производительность, что снижает риски возникновения критических проблем в работе программного продукта.

Таким образом, внедрение непрерывной интеграции и тестирования является эффективным методом, который позволяет улучшить качество программного обеспечения и обеспечить его соответствие требованиям. В данной статье будет рассмотрено, какие методы и инструменты используются для реализации непрерывной интеграции и тестирования, а также какие преимущества они могут принести в разработке программного обеспечения.

Способы и методы использования непрерывной интеграции и выбор системы для последующего внедрения ci/cd процессов

Непрерывная интеграция (Continuous Integration, CI) - это процесс автоматической сборки, тестирования и развертывания приложения на каждом этапе его разработки. Она позволяет быстро выявлять ошибки и их источники, что значительно ускоряет процесс исправления и снижает риски возникновения проблем в будущем. Без использования непрерывной интеграции разработка программного обеспечения становится более рискованной и медленной, так как ошибки обнаруживаются только на поздних этапах разработки. [5]

При разработке программного обеспечения необходимо убедиться, что каждое изменение в коде не приведет к нарушению работы продукта в целом. Для этого используются различные методы тестирования, включая функциональное, интеграционное, модульное и другие. Однако тестирование не может ограничиваться отдельными этапами разработки. Вместо этого необходимо использовать непрерывную интеграцию, которая позволяет автоматически тестировать код при каждом изменении.

Существует несколько способов и методов использования непрерывной интеграции, которые могут быть эффективными в различных ситуациях. Одним из наиболее распространенных методов является использование системы контроля версий Git как инструмента за контролем каждого из этапов разработки и одной из возможных систем CI/CD.

Выбор системы CI/CD нужно начать с утверждения что, не все программные комплексы непрерывной интеграции одинаково подходят для всех проектов. При выборе наилучшего решения для внедрения в организацию необходимо учитывать

такие факторы, как тип проекта, используемые технологии, доступные ресурсы, размер команды разработки и другие.

Среди наиболее популярных можно выделить такие как Jenkins, TeamCity, CircleCI, GitLab CI/CD и многие системы управления непрерывной интеграцией и доставкой содержимого.

Другим способом использования непрерывной интеграции является использование инструментов для контроля качества кода. Например, SonarQube может проверять качество кода на предмет соответствия определенным стандартам, а также выявлять потенциальные проблемы и ошибки в коде.

Кроме того, для обеспечения надежности и безопасности программного обеспечения могут использоваться специализированные инструменты для тестирования, такие как Selenium или Appium. Эти инструменты позволяют автоматизировать процесс тестирования и выявлять проблемы и ошибки в работе программного обеспечения.

Для иллюстрации выбора системы непрерывной интеграции для конкретного проекта рассмотрим пример системы управления обучением LMS (Learning Management System), которая является важным инструментом для обучения и оценки студентов в образовательных учреждениях. Для такой системы можно выбрать такую систему непрерывной интеграции, как GitLab CI/CD. Она поддерживает большое количество встроенных функций управления проектом, что делает ее удобной для интеграции с различными инструментами разработки. Кроме того, GitLab CI/CD имеет широкое сообщество пользователей и активно развивается, что обеспечивает поддержку и обновление инструментов в долгосрочной перспективе. Рассматриваемая система может использоваться для различных видов тестирования и соблюдения критериев ПО, включая функциональное, интеграционное, модульное, тестирование производительности и другие. Каждый тип тестирования может выполняться в отдельном этапе процесса непрерывной интеграции.

Для обеспечения правильной последовательности тестирования, на платформе GitLab CI/CD можно создавать pipelines, которые включают различные этапы тестирования. Pipeline - это последовательность шагов, которые выполняются автоматически при каждом изменении кода. Этапы pipeline должны соответствовать последовательности, в которой должны проходить тесты, чтобы убедиться, что ПО соответствует требованиям.

В отличие от других инструментов, GitLab CI/CD является open-source, что означает, что компании могут адаптировать его под свои нужды и настроить его под

свои проекты. Более того, GitLab CI/CD интегрируется с другими инструментами и сервисами, такими как Docker и Kubernetes, что позволяет компаниям создавать сложные системы безопасности и автоматизации, используя уже существующие решения.

В связке с CI/CD, автоматизированные тесты выполняются автоматически после каждого изменения кода. Если тесты не проходят успешно, то CI/CD система автоматически откатывает изменения и сообщает об ошибке разработчику, что позволяет своевременно выявлять и исправлять ошибки до того, как они попадут в основной код.

Автоматизированные тесты также улучшают качество кода. При написании тестов, разработчики вынуждены четко определить требования к функциональности, а также учитывать возможные варианты использования кода.

Опросы разработчиков также подтверждают, что автоматизированные тесты помогают улучшить качество кода и сократить время разработки. 57% опрошенных считают, что автоматизированные тесты улучшают качество кода, а 48% считают, что это помогает сократить время разработки. [4]

1. Почти 70% опрошенных признали, что их команда выполняет тестирование вручную. Тем не менее, почти половина из них также заявили, что их команда планирует увеличить использование автоматизированных тестов в будущем.

2. Большинство опрошенных (78%) считают, что тестирование должно быть встроено в процесс разработки. При этом 43% заявили, что непрерывная интеграция и непрерывное развертывание (CI/CD) - это важные составляющие включения тестирования в процесс разработки.

3. 39% опрошенных признали, что они не понимают, как применять тестирование в своей работе. Тем не менее, большинство опрошенных (67%) хотели бы узнать больше о тестировании, включая различные виды тестирования и лучшие практики.

Эти данные подтверждают важность непрерывной интеграции и ее эффективность в разработке программного обеспечения.

Одной из часто используемых концепций выделяют Test-Driven Development (TDD), методологию разработки программного обеспечения, при которой разработчик пишет тесты для функционала, который он собирается реализовать, а затем пишет код, который должен проходить эти тесты. Таким образом, тесты становятся своего рода

спецификацией для кода, а также позволяют быстро выявлять ошибки в процессе разработки.

Это помогает уменьшить количество ошибок и несоответствий требованиям, так как разработчики получают более четкое представление о том, что должен делать код и как он должен работать.

Однако, необходимо учитывать, что для внедрения непрерывной интеграции и тестирования в процесс разработки может потребоваться дополнительное обучение и подготовка персонала, а также необходимость в доступных и выделенных ресурсах для поддержки системы непрерывной интеграции.

Таким образом, выбор наилучшей системы непрерывной интеграции для конкретного проекта зависит от ряда факторов, которые необходимо учитывать при принятии решения. Различные способы и методы использования непрерывной интеграции могут быть применены в зависимости от конкретных задач и требований к программному обеспечению.

Требования и необходимые критерии для их выполнения в рамках разработки LMS системы.

В качестве примера системы, которая должна соответствовать был выбран общеобразовательный портал удовлетворяющим требованиям LMS, который является важным элементом современной образовательной системы. Он позволяет облегчить процесс обучения и управления учебным процессом, а также предоставляет различные ресурсы для студентов и преподавателей. В разработке такой системы важно учитывать требования и потребности всех заинтересованных сторон.

Для обеспечения соответствия требованиям в разработке общеобразовательного портала, необходимо определить следующие требования к LMS системе:

1. Функциональные требования:

1.1. LMS должна обеспечивать возможность создания и управления учебными курсами.

1.2. LMS должна позволять студентам и преподавателям получать доступ к учебным материалам и ресурсам.

1.3. LMS должна обеспечивать возможность проведения онлайн-тестирования и оценки знаний студентов.

1.4. LMS должна иметь функцию обратной связи для студентов и преподавателей.

2. Требования к безопасности:

2.1. LMS должна обеспечивать защиту конфиденциальных данных, включая личную информацию студентов и преподавателей, а также учебные материалы.

2.2. LMS должна иметь механизмы аутентификации и авторизации пользователей.

3. Требования к производительности:

LMS должна обеспечивать высокую производительность при работе с большим количеством пользователей.

LMS должна иметь механизмы мониторинга производительности и оптимизации работы.

4. Требования к масштабируемости:

LMS должна иметь возможность масштабирования для работы с большим количеством пользователей и учебных курсов.

LMS должна обеспечивать легкость добавления новых функциональных возможностей.

Использование непрерывной интеграции и тестирования помогает обеспечить соответствие требованиям в разработке общеобразовательного портала, позволяет быстро выявлять и устранять ошибки в коде, а также гарантирует более высокое качество программного продукта.

Для внедрения непрерывной интеграции и тестирования в разработку LMS системы, необходимо использовать современные инструменты и технологии, такие как системы автоматического тестирования, контроль версий, системы непрерывной интеграции и развертывания.

Одним из ключевых преимуществ использования непрерывной интеграции и тестирования является уменьшение времени, затрачиваемого на поиск и исправление ошибок, что позволяет сократить время разработки и повысить эффективность работы команды разработчиков.

Таким образом, внедрение непрерывной интеграции и тестирования является важным элементом в разработке общеобразовательного портала, позволяющим обеспечить соответствие требованиям и гарантировать высокое качество продукта.

Результаты внедрения непрерывной интеграции Gitlab CI/CD, на примере системы LMS

Для демонстрации эффективности внедрения непрерывной интеграции я использовал GitLab CI/CD на примере общеобразовательного портала удовлетворяющим критериям LMS. Этот портал был разработан с использованием фреймворков ASP Net Core и Next.js и имел множество зависимостей.

Перед внедрением GitLab CI/CD я провел ряд тестовых запусков, используя стандартные инструменты разработки, и обнаружил, что большое количество ошибок происходило из-за несовместимости зависимостей и конфликтов версий различных компонентов приложения. Эти проблемы замедляли процесс разработки и увеличивали время, необходимое для исправления ошибок.

Для каждого требования создается свое правило, которому система CI/CD следует и производит проверку в соответствии с указанным сценарием. Для проверки функционала создания курсов пишутся интеграционные тесты, которые в автоматическом режиме создают и изменяют данные в разрабатываемой системе. Они имитируют действия пользователя в закрытой среде, на которую не воздействуют внешние факторы, такие как производительность клиентской машины и скорость интернет соединения.

В рамках тестирования функционирования проведения онлайн тестирования производится произвольное заполнение образовательных тестов и последовательное выполнение с указанием верных(неверных) ответов в заданной системе. После приводится отчет о сопоставление желаемых результатов от действительных.

Также создаются сценарии неуспешных попыток входа в систему, подключаются модули для проверки авторизационной политики. Для сравнения по каждому из возможных пунктов требований были созданы автоматические тесты и запущены системы сбора аналитики производительности. Все проверки производятся после каждой итерации разрабатываемой системы, их статус отслеживается системой контроля версий.

После внедрения GitLab CI/CD я заметил значительное улучшение процесса разработки. Непрерывная интеграция позволяла быстро выявлять и исправлять ошибки, а автоматизированные тесты помогали убедиться в том, что новые изменения не влияют на работу существующих функций.

Благодаря GitLab CI/CD, я смог улучшить качество кода, сократить время, необходимое для сборки, тестирования, доставки продукта в производственную среду, уменьшить количество ошибок и увеличить скорость разработки новых функций.

В целом, внедрение непрерывной интеграции GitLab CI/CD оказало значительное положительное влияние на процесс разработки нашего общеобразовательного портала и позволило мне достичь более высокой производительности и качества продукта.

Заключение

В заключение, важно отметить, что внедрение непрерывной интеграции и тестирования с использованием GitLab CI/CD позволяет повысить качество программного продукта и обеспечить его соответствие требованиям. Эта практика помогает быстрее выявлять ошибки и улучшать код, что уменьшает количество багов и повышает удовлетворенность пользователей.

Непрерывная интеграция предоставляет возможность автоматической проверки каждого изменения в коде, что позволяет раньше выявлять проблемы, а также позволяет ускорить процесс разработки и упростить управление версиями. Это помогает снизить затраты на разработку и обеспечивает быстрое внедрение новых функций в продукт.

Использование непрерывной интеграции также помогает обеспечить безопасность кода. Благодаря автоматическому тестированию и проверке кода на наличие уязвимостей, разработчики могут быстро реагировать на возможные угрозы безопасности и обеспечить безопасность программного продукта.

Таким образом, внедрение непрерывной интеграции и тестирования с использованием GitLab CI/CD является важным шагом в обеспечении качества программного продукта и его соответствия требованиям.

References

1. State of the Cloud Report // Flexera.com: [сайт]. - 2020. - [Электронный ресурс]. URL:https://info.flexera.com/SLO-CM-REPORT-State-of-the-Cloud-2020 (дата обращения 05.03.2023).

2. Magic Quadrant for Cloud AI Developer Services // Gartner.com: [сайт]. - 2021. - [Электронный ресурс]. URL: https://www.gartner.com/research/methodologies/magic-quadrants-research (дата обращения 05.03.2023).

3. State of Database DevOps 2021 // Redgate.com: [сайт]. - 2021. - [Электронный ресурс].URLhttps://www.red-gate.com/hub/product-learning/state-of-database-devops-2021 (дата обращения 05.03.2023).

4. The State of Test-Driven Development // Jetbrains.com: [сайт]. - 2021. -[Электронный ресурс]. URL: https://www.jetbrains.com/lp/devecosystem-2021/testing/ (дата обращения 08.03.2023).

5. Duvall, P. M., Matyas, S. Continuous Integration: Improving Software Quality and Reducing Risk / P. M. Duvall, S. Matyas. - 2007. - 336 p.

i Надоели баннеры? Вы всегда можете отключить рекламу.