Статья опубликована в рамках: Научного журнала «Студенческий» № 11(223)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4
ИССЛЕДОВАНИЕ ИНСТРУМЕНТОВ МУТАЦИОННОГО ТЕСТИРОВАНИЯ ДЛЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С МИКРОСЕРВИСНОЙ АРХИТЕКТУРОЙ НА РАЗНЫХ ЯЗЫКАХ ПРОГРАММИРОВАНИЯ
RESEARCH OF MUTATION TESTING TOOLS FOR SOFTWARE WITH MICROSERVICE ARCHITECTURE AT DIFFERENT PROGRAMMING LANGUAGES
Evgeny Kildibaev
Undergraduate, Department of Automatic Control Systems, Ufa University of Science and Technology,
Russia, Ufa
Alsu Mannanova
Undergraduate, Department of Automatic Control Systems, Ufa University of Science and Technology,
Russia, Ufa
Roman Kuznetsov
Undergraduate, Department of Automatic Control Systems, Ufa University of Science and Technology,
Russia, Ufa
Rustem Enikeev
scientific supervisor, candidate of sciences, associate professor, Department of automated control systems, Ufa University of Science and Technology,
Russia, Ufa
АННОТАЦИЯ
В данной статье анализируется проблема тестирования программного обеспечения, рассматривается подход к мутациям кода как к способу оптимизации процесса тестирования. А также рассматриваются преимущества и недостатки наиболее популярных инструментов мутационного тестирования.
ABSTRACT
This article analyzes the problem of software testing, considers the approach to code mutations as a way to optimize the testing process. It also discusses the advantages and disadvantages of the most popular mutation testing tools.
Ключевые слова: программное обеспечение; микросервисная архитектура; мутационное тестирование; тестирование программного обеспечения; преимущества мутационного тестирования; Stryker; Mutmut.
Keywords: software; microservice architecture; mutation testing; software testing; benefits of mutation testing; Stryker; Mutmut.
Введение
В последние годы микросервисная архитектура стала популярной в сфере разработки программного обеспечения. Она представляет собой стиль проектирования, при котором приложение разбивается на небольшие, независимые компоненты, каждый из которых отвечает за определенную функцию. При этом микросервисы могут быть написаны на разных языках программирования, использовать различные технологии и базы данных. [4]
Для того чтобы заказчик и разработчики были уверены в качестве и работоспособности разрабатываемого программного продукта, его подвергают различного рода тестированию. Тестирование является важной частью процесса разработки программного обеспечения. [3] Существует большое количество методов тестирования, одним из самых распространенных является автоматическое тестирование методом белого ящика. Автоматическое тестирование проводится с помощью специальных инструментов, которые позволяют автоматизировать процесс тестирования. Этот подход позволяет ускорить процесс тестирования и повысить его эффективность. Метод белого ящика (White Box Testing) заключается в проверке внутренней структуры и кода программы. Тестирование проводится на основе знания алгоритмов и логики работы приложения. [1]
Инструменты автоматического тестирования выбираются с учетом языка программирования, на котором написана программа. Вследствие этого, в программных продуктах с микросервисной архитектурой, этих инструментов может быть большое количество.
Применение тестов необходимо в разработке. Однако за качество самих тестов зачастую отвечает тот же разработчик, который написал код программы. Чтобы убедится, что тесты корректно проверяют работу кода, а не какие-либо его частные случаи был разработан метод мутационного тестирования.
Актуальность
Мутационное тестирование является одним из наиболее эффективных методов проверки качества программного обеспечения. Оно позволяет выявлять ошибки, которые не могут быть обнаружены другими методами тестирования, такими как функциональное тестирование или тестирование на основе сценариев использования.
Кроме того, мутационное тестирование помогает повысить качество кода, так как разработчики могут использовать его результаты для улучшения своих навыков написания кода и избегания типичных ошибок.
Цель
Определить возможные способы оптимизации процесса тестирования программного обеспечения с микросервисной технологией за счет применения инструментов мутационного тестирования.
Задачи
Исходя из поставленной цели можно выделить следующие задачи:
- Изучить метод мутационного тестирования
- Проанализировать существующие инструменты мутационного тестирования
- Выявить их достоинства и недостатки
- Подобрать оптимальный стек технологий для языков программирования JavaScript, C# и Python
Основная часть
Мутационное тестирование (Mutation Testing) было предложено в 1971 году Ричардом Липпертом (Richard Lipton) и Анджело М. Дельфино (Angelo M. Delfino). Они предложили создать программу, которая бы изменяла исходный код приложения, добавляя в него ошибки (мутации), и проверять, насколько хорошо тесты приложения находят эти ошибки. [2]
Однако, на тот момент компьютеры были не настолько мощными, чтобы выполнять такие задачи, и мутационное тестирование осталось неиспользованным до 1980-х годов. В 1980-х годах мутационное тестирование начали применять в индустрии, особенно в области разработки авиационного и космического программного обеспечения.
Сегодня, мутационное тестирование – это техника, которая помогает улучшить качество программного кода, обнаруживая ошибки, которые традиционное тестирование может не выявить.
Мутационное тестирование основано на следующих принципах:
- Создание мутаций: для создания мутаций используются различные методы, например, изменение операторов, удаление или добавление строк кода, изменение значений переменных и т.д.
- Запуск тестов: после создания мутаций запускаются тесты для проверки, насколько хорошо они обнаруживают дефекты.
- Анализ результатов: результаты тестирования анализируются для определения эффективности тестового покрытия и выявления слабых мест в тестировании.
Преимущества мутационного тестирования:
- Высокая эффективность: данный метод позволяет выявить даже скрытые дефекты в программном обеспечении.
- Оценка качества тестового покрытия.
- Улучшение качества программного обеспечения.
Недостатки мутационного тестирования:
- Сложность: данный метод требует больших затрат времени и ресурсов на создание мутаций и запуск тестов.
- Низкая автоматизация: мутационное тестирование требует ручной работы при создании мутаций и анализе результатов.
Инструменты мутационного тестирования.
Крупные программные продукты могут иметь разнообразный стек технологий. Рассмотрим технологии для одних из самых популярных языков программирования по оценке TIOBE на март 2023 года: C#, Python, JavaScript (JS). Для каждого из этих языков имеется своя технология тестирования. Например, программы на C# тестируются с помощью библиотеки NUnit, а сервисы написанные на JS тестируются технологией Jest. Как инструменты тестирования, так и технологии мутаций для каждого из языков программирования разные.
Ниже представлен список доступных на сегодняшний момент инструментов мутационного тестирования:
- Python:
- Mutmut.
- CosmicRay
- MutPy
- Mutatest
- C#:
- Stryker.NET
- VisualMutator
- JavaScript:
- Stryker
- Mutode
Таблица 1.
Оценка модулей для Python
Модуль |
Поддержка |
Простота использования |
Вывод |
Mutmut |
Да |
Простой |
Отчет в html файле |
CosmicRay |
Да |
Сложный. Необходим конфигурационный файл |
Нет отчета по каждому файлу, длинный список мутаций. |
MutPy |
Нет |
Необходимы локальные правки |
Работает очень быстро, отчет в виде статусной строки |
Mutatest |
Нет |
Простой |
Запускает случайный подбор мутаций |
Из вышеперечисленных модулей самый лучший – Mutmut. Данный инструмент имеет поддержку разработчиков, прост в использовании, а также генерирует подробный отчет в виде *.html файла. [5]
Так же рассмотрим подробнее инструмент Stryker, так как он один может покрыть мутациями как код написанный на JS, так и на C#.
Stryker – это инструмент мутационного тестирования с открытым исходным кодом, который поддерживает языки программирования JavaScript, TypeScript, C#. Stryker работает путем внесения небольших изменений или мутаций в исходный код с последующим запуском тестового набора. Если тест проходит, это означает, что мутация выявила ошибку либо в коде, либо в тесте. [6]
Функции Stryker:
1. Поддержка нескольких языков: JavaScript, TypeScript и C#.
2. Высокая скорость выполнения тестов, что отлично подходит для больших проектов с различной функциональностью.
3. Высокое покрытие кода: Stryker имеет обширный набор правил мутаций.
4. Настройка параметров: Stryker позволяет разработчикам настраивать многие параметры, такие как количество генерируемых мутаций и уровень мутации.
5. Интеграция с другими инструментами: Stryker хорошо интегрируется с другими инструментами тестирования, такими как Jest и Mocha для JavaScript или NUnit и xUnit для C#.
6. Отчетность: Stryker предоставляет подробные отчеты о результатах мутационного тестирования в различных форматах (.json, .html). [6]
Недостатки Stryker. Stryker может быть сложным для новичков, которые не знакомы с мутационным тестированием. [6]
Кроме всего вышеперечисленного инструменты Mutmut и Stryker достаточно просто встроить в текущий конвейер CI/CD, то есть запускать тесты автоматически при изменении проекта на сервере.
Вывод
Мутационное тестирование является эффективным методом для оценки качества тестового покрытия программного обеспечения и выявления слабых мест в тестировании. Однако данный метод требует больших затрат времени и ресурсов на создание мутаций и запуск тестов, а также имеет низкую автоматизацию. Несмотря на это, мутационное тестирование может быть применено в различных областях, например, для тестирования встроенного программного обеспечения, программного обеспечения для автоматизации бизнес-процессов и программного обеспечения для управления энергетическими системами.
Stryker – это мощный инструмент мутационного тестирования. Благодаря высокой скорости выполнения тестов, настраиваемым параметрам и интеграции с другими инструментами Stryker является ценным дополнением к любому проекту разработки программного обеспечения. Хотя он может быть сложным, его преимущества делают его ценным инвестиционным продуктом для опытных разработчиков, стремящихся улучшить качество своего кода.
Инструменты Mutmut и Stryker могут послужить основой для оптимизации процесса тестирования программного обеспечения путем запуска мутаций сразу на весь проект независимо от типа языка, на котором пишется код, через внедрение этих инструментов в конвейер CI/CD.
Список литературы:
- Дворянкин А. М., Ерофеев А. А., Аникин А. В. Основные методы тестирования программного обеспечения: Учебное пособие. - Волгоград: Волгоградский государственный технический университет, 2015.
- Копылов А.В., Леснов И.В. Исследование метода мутационного тестирования // Информационные системы и технологии ИСТ-2020. - Нижний Новгород: Нижегородский государственный технический университет им. Р.Е. Алексеева, 2020. - С. 413-418.
- Логачева Н. В., Ладонычева М. Л., Пузырева К. С. Важность тестирования программного обеспечения в процессе разработки программного обеспечения // Инновационная наука. - 2022. - №2-2. - С. 23-26.
- Пестов А.А., Стефанова И.А. Микросервисные технологии в современных приложениях // V Научный форум телекоммуникации: теория и технологии ТТТ-2021. - Самара: Поволжский государственный университет телекоммуникаций и информатики, 2021. - С. 221-222.
- J. Breu. Comparison of Python mutation testing modules. // jakobbr. [электронный ресурс]. URL: https://jakobbr.eu/2021/10/10/comparison-of-python-mutation-testing-modules/. (дата обращения 12.02.2023).
- What is mutation testing? // stryker-mutator. [электронный ресурс]. URL: https://stryker-mutator.io/docs/. (дата обращения 12.02.2023).
Оставить комментарий