УДК 004

Практический анализ качества программного обеспечения с открытым кодом

Лаптов Денис Сергеевич бакалавр Челябинского государственного университета

Аннотация: Успех любого проекта определяется его способностью удовлетворить потребности потребителя, поэтому обеспечение высокого уровня качества является необходимой задачей любого производства, в т.ч. программной инженерии Недостаточное качество создаваемого ПО требует много IT-организации, до 70% бюджета информационной системы резервировать на этапе сопровождения. При этом до 60% всех модификаций ПО выполняется для устранения ошибок, а только остальные 40% для коррекции ПО в рамках бизнес-процесса, совершенствования тех или иных показателей качества ПО, или для предотвращения потенциальных проблем. Качество ПО – понятие комплексное. Стандарты выделяют качество процессов разработки, внутреннее и внешнее качество программного продукта, качество программного продукта на стадии использования. Для каждого компонента качества можно привести набор метрик, определяющих качество программного продукта. Полученная структура называется моделью качества программного обеспечения. Метрика программного обеспечения – это мера, помогающая получить численное значение некоторого свойства программного обеспечения или его спецификаций, а также метод ее подсчета. Метрики позволяют получить численные значения каждого свойства программного обеспечения или его спецификации. Особый интерес представляют метрики сложности программного обеспечения. Сложность является важным фактором, от которого зависят другие параметры качества программного обеспечения, такие как точность, корректность, надежность, удобство сопровождения. Наличие методов и алгоритмов автоматического расчета метрик сложности программного обеспечения с помощью программных средств помогает получить комплексный формальный отчет о качестве программного обеспечения за короткое время. Это позволяет проводить объективный мониторинг уровня качества программного обеспечения на протяжении всего жизненного цикла проекта, вносить коррективы в план проекта, а также своевременно принимать решение о необходимости проведения рефакторинга.

Ключевые слова: качество программного обеспечения, тестирование, метрики качества.

Введение

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

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

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

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

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

Анализ последних исследований и публикаций

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

  1. Внедрение методов и инструментов статического анализа кода. Статический анализ позволяет выявить потенциальные ошибки, уязвимости и другие проблемы в коде до его исполнения. Исследования показывают, что использование статического анализа помогает снизить количество дефектов в программном обеспечении и повысить его качество.
  2. Развитие методов динамического анализа кода. Динамический анализ позволяет проверять работу программного обеспечения во время его выполнения. Новые исследования акцентируют внимание на разработке эффективных методов и инструментов динамического анализа для программного обеспечения с открытым кодом.
  3. Интеграция контроля качества в разработочный процесс. Исследования показывают, что наиболее эффективное управление качеством программного обеспечения достигается при интеграции контроля качества в каждый этап разработки. Это позволяет выявить и исправить проблемы на ранних стадиях разработки и сократить затраты на исправление дефектов.
  4. Использование автоматического тестирования. Автоматическое тестирование программного обеспечения с открытым кодом становится все более распространенным. Исследования показывают, что использование автоматического тестирования позволяет повысить стабильность и надежность программного обеспечения.
  5. Анализ обратной связи от пользователей. Исследования подчеркивают важность учета обратной связи от пользователей при анализе качества программного обеспечения с открытым кодом. Пользователи могут выявить проблемы, которые могут быть незамеченными в ходе внутренних тестов.

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

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

Главное преимущество автоматизированного тестирования заключается в возможности повторного прогона тестов без участия человека. Традиционный и наиболее популярный среди разработчиков способ заключается в организации автоматизации тестирования на уровне кода. Второй способ автоматизации тестирования состоит в имитации действий пользователя с использованием специальных инструментальных средств (GUI-тестирование).

Рассмотрим понятие свойства программного продукта. Изучение качества программного продукта на стадии разработки предполагает работу со следующими метриками:

  • сложность;
  • корректность;
  • удобство использования;
  • надежность;
  • производительность;
  • мобильность.

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

Чем грамотнее спроектировано ПО, тем ниже его сложность; чем ниже сложность, тем проще программисту ориентироваться в программе и писать новый код, ниже вероятность внесения ошибки и больший шанс обнаружить имеющуюся. Снижение сложности ПО заметно снижает время его разработки и стоимость сопровождения.

Метрики сложности программ принято разделять на три основные группы:

  • метрики размера программ;
  • метрики сложности потока управления программ;
  • метрики сложности потока данных программ.

В качестве основных статистических характеристик распределения метрик для классов в составе сборника использованы центральные моменты.

Математическое ожидание – среднее значение случайной величины:

image001

Дисперсия – показатель рассеяния значений случайной величины относительно ее математического ожидания:

image002

Показатель асимметричности характеризует случаи. При левосторонней  асимметрии в распределении чаще встречаются более низкие значения признака, а при правосторонней (или отрицательной) выше:

image003

Показатель эксцесса E характеризует степень остроты пика распределения случайной величины и определяется по формуле:

image004

Метрика Чепина

Метрика Чепина – это метрика, которая используется для оценки качества программного обеспечения с открытым кодом на основе практического анализа. Она была разработана Андреем Чепиным, который является экспертом в области разработки программного обеспечения с открытым кодом.

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

  1. Количество активных участников – это показатель, который позволяет определить количество людей, которые активно участвуют в разработке программного обеспечения. Большое количество участников обычно указывает на более качественное программное обеспечение, так как это означает, что проект получает достаточно внимания и поддержки от сообщества разработчиков.
  2. Количество отчетов об ошибках - это показатель, который определяет количество отчетов об ошибках, которые поступают от пользователей программного обеспечения. Большое количество отчетов об ошибках может указывать на низкое качество программного обеспечения, так как оно может содержать проблемы, которые затрудняют его использование.
  3. Скорость решения проблем - это показатель, который определяет, насколько быстро разработчики программного обеспечения решают проблемы, связанные с ошибками и другими недочетами. Быстрое решение проблем обычно указывает на высокую ответственность разработчиков и высокое качество программного обеспечения.
  4. Количество выпусков - это показатель, который определяет, насколько часто выпускаются новые версии программного обеспечения. Частые выпуски обычно указывают на то, что разработчики быстро реагируют на запросы пользователей и предлагают улучшенные версии программного обеспечения.
  5. Уровень документации - это показатель, который определяет наличие и качество документации по программному обеспечению. Хорошая документация позволяет пользователям лучше понять и использовать программное обеспечение.

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

image005,

где image006, image007, image008 и image009, – весовые коэффициенты.

Описание разработанного программного обеспечения

В процессе анализа сред для написания автотестов выбрана среда Selenium IDE.

Selenium IDE (интегрированная среда разработки) – простое в использовании расширение для браузера, которое помогает разрабатывать тестовые сценарии веб-страниц. Этот инструмент помогает записывать определенный сценарий поведения пользователя на сайте, а затем воспроизводить записанные действия в автоматическом режиме и редактировать их позже в соответствии с требованиями.

Для реализации и запуска автотеста выбран веб-браузер Mozilla Firefox и установлен расширение Selenium IDE. Открыв среду Selenium, можно сразу создать новый проект и начать записывать действия для выполнения.

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

После открытия страницы по указанному адресу необходимо включить запись действий, которые будут выполняться пользователем через интерфейс сайта, нажав кнопку Start recording (Начать запись) в окне среды Selenium. В режиме записи действий необходимо в Jenkins открыть проект и собрать новую сборку с последними изменениями в коде, дождаться пока выполнится сборка и перейти по номеру последней ее версии. Затем необходимо открыть в консоль и перейти по ссылке на SonarQube, где можно открыть и увидеть в деталях результаты сканирования проекта (рисунок 1).

image010

Рисунок 1. Окно с результатами сканирования проекта в SonarQube.

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

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

  • производительность;
  • качество;
  • удельная стоимость;
  • документированность.

Полученные данные из SonarQube теперь можно вычислить по формуле SLOC-метрики. Эти данные нужно записать в переменные в Selenium IDE, чтобы их можно было подставить в формулу для вычисления данных. Передачу данных в поля для ввода можно произвести идентифицировав каждое поле идентификатором и передавать соответствующие данные в соответствующие поля. Чтобы запустить функцию, которая будет производить вычисление данных с полей на форме, нужно создать кнопку для вычисления и назначить на нее событие, которое будет запускать функцию вычисления каждый раз после нажатия на кнопку.

Для рендеринга данных можно отображать полученные результаты в диаграмме. Было решено подключить диаграмму от Google на ту же страницу, где размещается форма ввода данных для вычисления, и передавать полученные результаты в диаграмму, которая создается для каждого результата вычисления. Чтобы увидеть диаграмму на веб-странице, необходимо создать блок <div> с идентификатором диаграммы (рисунок 2).

image011

Рисунок 2. Диаграммы по параметрам по результатам вычислений.

Заключение

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

Список литературы

  1. Майерс Г., Баджетт Т., Сандлер К. Искусство тестирования программ. Москва: Диалектика, 2022. 272 с.
  2. Криспин Л., Грегори Дж. Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд. Москва: Вильямс, 2020. 464 с.
  3. Канер Кэм, Фолк Джек, Нгуэн. Энг Кэк Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений. Киев: ДиаСофт, 2021. 544 с.
  4. Калбертсон Р., Браун К., Кобб Г. Быстрое тестирование. Москва: Вильямс, 2022. 374 с.
  5. Синицын С.В., Налютин Н.Ю. Верификация программного обеспечения. Москва: БИНОМ, 2018. 368 с.
  6. Бейзер Б. Тестирование темного ящика. Технологии функционального тестирования программного обеспечения и систем. Санкт-Петербург: Питер. 2014. 320 с.
  7. Модульное тестирование. URL: https://msn. khnu. km. ua/pluginfile. Php / 208290 / mod_resource / content/2/%D0%9B%D0%A0%20%E2%84%964. pdf (дата обращения08.2023).
  8. Модульное тестирование. URL: https://studfile.net/preview/14533269/ (дата обращения 09.08.2023).
  9. Виды тестирования и отличия между ними. URL: https://www.quality-assurance-group.com/vydy-testuvannya-tavidminnosti-mizh-nymy-shpargalka-z-testuvannya-chastyna-4/ (дата обращения 09.08.2023).
  10. Системный контекст программного обеспечения. URL: https://stepik.org/lesson/106620/step/1?unit=81144 (дата обращения 09.08.2023).
  11. Принципы тестирования. URL: https://qalight.com.ua/baza-znaniy/pochemu-testirovanie-neobhodimo/ (дата обращения 09.08.2023).

Интересная статья? Поделись ей с другими: