старший специалист по тестированию ПО Юзтех Бел, Беларусь, г. Минск
РОЛЬ AI В ОПТИМИЗАЦИИ ПРОЦЕССОВ ТЕСТИРОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
АННОТАЦИЯ
Внедрение искусственного интеллекта в тестирование программного обеспечения открывает возможности для преобразования обеспечения качества. Использование таких технологий позволяет автоматизировать ряд процессов, включая создание, обновление тестовых сценариев, что способствует сокращению времени, затрачиваемого на выполнение рутинных задач. Алгоритмы машинного обучения обеспечивают выявление уязвимых участков в коде, что ведет к полному покрытию тестами, снижению числа ошибок в готовом продукте. Это ускоряет выпуск программного обеспечения, улучшая его показатели. Тем не менее, интеграция ИИ в процесс тестирования сопряжена с рядом трудностей. Внедрение таких технологий требует затраты ресурсов, привлечения большего количества сотрудников, обладающих необходимыми знаниями, что затрудняет реализацию решений в малых и средних компаниях. Развитие инструментов ИИ в тестировании способствует расширению автоматизации процессов, адаптации системы к изменениям, что важно для успешной разработки программного обеспечения.
ABSTRACT
The introduction of artificial intelligence into software testing opens up opportunities to transform quality assurance. The use of such technologies makes it possible to automate a number of processes, including the creation and updating of test scenarios, which helps to reduce the time spent on routine tasks. Machine learning algorithms ensure the identification of vulnerable areas in the code, which leads to full test coverage and a reduction in the number of errors in the finished product. This accelerates the release of software, improving its performance. However, the integration of AI into the testing process is fraught with a number of difficulties. The introduction of such technologies requires resources and the involvement of more employees with the necessary knowledge, which makes it difficult to implement solutions in small and medium-sized companies. The development of AI tools in testing contributes to the expansion of process automation, system adaptation to changes, which is important for successful software development.
Ключевые слова: искусственный интеллект, тестирование программного обеспечения, автоматизация, машинное обучение, оптимизация, качество программного обеспечения.
Keywords: artificial intelligence, software testing, automation, machine learning, optimization, software quality.
Введение. В последние годы информационные технологии претерпели изменения, что привело к развитию искусственного интеллекта, его внедрению в различные области деятельности. Одним из таких направлений является разработка, тестирование программных продуктов. Внедрение искусственного интеллекта в этот процесс открывает новые возможности для оптимизации. Искусственный интеллект позволяет автоматизировать часть процесса, ускоряя выполнение при меньших затратах. Цель работы заключается в изучении роли искусственного интеллекта в процессе оптимизации процессов тестирования кода. В рамках работы будут рассмотрены существующие методы, оценено их влияние на результативность, исследованы пути развития технологии в будущем.
Практическая значимость заключается в возможности применения полученных результатов для оптимизации тестирования в условиях разработки программного обеспечения.
Материалы и методы
В литературе по теме оптимизации процессов тестирования программного обеспечения с применением искусственного интеллекта наблюдается ярко выраженная разнородность подходов, что позволяет выделить несколько направлений исследований. Фундаментальные труды, посвящённые сущности тестирования как базового этапа разработки, закладывают теоретическую основу для дальнейших исследований в области интеллектуализации процессов. Так, в работе Логачевой Н. В., Ладонычевой М. Л. и Пузыревой К. С. [1] подчёркивается стратегическая важность тестирования для обеспечения качества конечного продукта, тогда как классический труд Рэшка Д. [2] демонстрирует эволюционный переход от традиционных методов контроля качества к современным подходам, что создаёт предпосылки для интеграции новых технологий в процессы тестирования. Научное сообщество также исследует применение методов искусственного интеллекта и машинного обучения для оптимизации тестирования программного обеспечения. В данных исследованиях Галимова Е. Ю. и Ходанович А. И. [3] представляют современные направления интеллектуализации, ориентированные на автоматизированное обнаружение дефектов и адаптивное управление тестовыми процедурами. Аналогичным образом, Соломинский А. В. и соавторы [4] демонстрируют потенциал внедрения искусственного интеллекта в средства автоматизации, что позволяет значительно повысить эффективность тестирования за счёт снижения зависимости от человеческого фактора. Комплексный анализ методологических решений по автоматизации тестирования с использованием ИИ также представлен работами Фатыхова А. И. и Салтанаевой Е. А. [5] и Пальмова С. В., Веретиной С. Д., Сацкой А. А. [6], в которых подробно рассматривается применение алгоритмов искусственного интеллекта для оптимизации выявления и устранения ошибок в информационных системах. Параллельно с развитием прикладных методик, отдельное внимание уделяется использованию нейронных сетей и алгоритмов машинного обучения для диагностики дефектов. Так, применение аппарата искусственных нейронных сетей в оптимизации процессов тестирования рассматривается в работе Данилова А. Д. и Мугатиной В. М. [8], а методы машинного обучения для обнаружения дефектов программного обеспечения анализируются Климовым И. С. [9]. Дополнительно, зарубежное исследование Braiek H. B. и Khomh F. [7] посвящено особенностям тестирования программ, разработанных с использованием машинного обучения, что подчёркивает важность адаптации методологии контроля качества к специфике новых алгоритмов и моделей.
Также в литературе прослеживается интерес к вопросам интеграции искусственного интеллекта в системы обеспечения безопасности и управления. В работе Соловьева А. В. [10] освещаются задачи по защите и управлению информационными системами с применением методов ИИ, что свидетельствует о необходимости комплексного подхода при внедрении инновационных технологических решений. Практическая сторона интеграции ИИ в процессы тестирования отражена в ряде обзорных и аналитических публикаций, представленных на электронных ресурсах. Так, материал «Как ИИ революционизирует тестирование ПО и ускоряет выпуск продуктов» [11], представленные на сайте itweek; обзор «10 AI tools for Software Testing 2024» [12], описанный на сайте geeksforgeeks и работа «AI уже тут: в какие инструменты тестирования уже интегрирован искусственный интеллект» [13], размещенная в habr демонстрируют текущие тренды, направленные на применение готовых инструментальных средств ИИ в промышленности, что подтверждает растущую востребованность интеллектуальных решений в реальном секторе разработки программного обеспечения. Кроме того, прогноз развития искусственного интеллекта, изложенный Климовым А. И. [14], позволяет оценить перспективные направления дальнейших исследований и интеграции ИИ-технологий в процессы тестирования. Обобщая приведённую литературу, можно отметить, что существует противоречие между традиционными методами тестирования и новыми, основанными на алгоритмах искусственного интеллекта. С одной стороны, классические работы [1, 2] формируют надёжный методологический фундамент, а с другой – современные исследования [3, 4, 5, 7, 8] демонстрируют высокую эффективность автоматизации и оптимизации процессов за счёт внедрения ИИ. При этом, работы, посвящённые тестированию программ, разработанных с применением машинного обучения [6], указывают на методологические сложности и необходимость адаптации существующих подходов к новым реалиям. Обратной стороной тенденции является недостаточное внимание к вопросам стандартизации и оценки влияния интеллектуальных систем на безопасность и управляемость программных продуктов [9, 10, 11, 12], что остаётся слабо освещённым аспектом в современных публикациях. В связи с этим, дальнейшие исследования в данной области должны уделять больше внимания разработке методик комплексной оценки качества и безопасности программного обеспечения в условиях активной интеграции искусственного интеллекта, что позволит выработать единый критерий эффективности для инновационных технологических решений.
Результаты и обсуждения. Процесс тестирования кода включает проверку функционирования продукта с целью выявления ошибок, отклонений от ранее определенных требований. Сам процесс состоит из нескольких этапов: так на первом проводится анализ требований, на основе полученной информации формируются сценарии, определяются цели, методика проверки, критерии успешности. Затем осуществляется проверка программы, которая способна быть как ручной, так и автоматизированной. В завершении подводятся итоги, оцениваются полученные результаты после тестирования, подтверждается работоспособность системы [1]. Далее следует рассмотреть существующие методы тестирования, которые для наглядности будут представлены в рамках таблицы 1.
Таблица 1.
Виды тестирования [2]
|
Вид тестирования программного обеспечения |
Описание вида тестирования программного обеспечения |
|
Нагрузочное тестирование |
Предполагает создание искусственной нагрузки на код с целью оценивания его производительности. Процесс обычно включает подключение виртуальных пользователей, которые выполняют различные действия. |
|
Регрессионное тестирование |
Нацелено на выявление ошибок , которые появляются после внесения изменений. Тестирование проводится регулярно, частота зависит от особенностей проекта. Оно осуществляться после каждой новой сборки или обновления продукта. |
|
Функциональное тестирование |
В рамках данного вида происходит проверка, насколько программное обеспечение соответствует функциональным требованиям. Оно помогает удостовериться, что система выполняет задачи, нужные пользователям, в заданных условиях. Автоматизация позволяет избежать опасности появления так называемой "спирали смерти", когда внесение изменений вызывает ошибки. |
Если же говорить про искусственный интеллект, то он представляет собой набор технологий, предназначенных для выполнения задач, которыми например являются: обработка данных, принятие решений, управление процессами, работа с массивами данных. Машинное обучение в свою очередь позволяет разрабатывать модели для анализа событий, выявления аномалий в поведении [3,4]. ИИ также анализирует данные, находит скрытые взаимосвязи, что расширяет охват тестирования, позволяет обнаруживать проблемы, которые способны остаться незамеченными при проведении проверки самостоятельно сотрудником. Использование ИИ для автоматизации тестирования позволяет избавиться от выполнения рутинных задач, тем самым повысить точность поиска ошибок, оптимизировать тестовые сценарии [5]. Модели обучаются на загружаемых массивах данных, в последующих принимают решения, выявляют закономерности. Глубокое обучение представляет собой развитую форму, которая обеспечивает эффективный способ обработки данных, находя зависимости, которые недоступны при использовании простых алгоритмов, в тестировании ПО. Обработка естественного языка представляет собой методику анализа речи, применяемую в тестировании систем, взаимодействующих с пользователем через текстовые запросы. Эта технология улучшает взаимодействие, увеличивает точность распознавания запросов. Внедрение подобных методов расширяет возможности автоматизации тестирования, ускоряет диагностику, повышает эффективность работы с данными, снижает затраты на разработку, поддержание программного обеспечения [6]. Таким образом, внедрение технологий в процессы тестирования открывает новые возможности для разработчиков, тестировщиков, что позволяет автоматизировать задачи, повысить точность работы с данными. Ручное тестирование программного обеспечения выполняет важную функцию, но сталкивается с рядом ограничений, которые влияют на точность результатов. Так как этот процесс требует временных затрат, а также вовлечения большого числа сотрудников, что тем самым повышает вероятность ошибок. Такие условия приводят к ограниченному охвату функционала системы, что вызывает расхождения между ожидаемыми, а также фактическими результатами. Автоматизация в данном случае представляет собой эффективное решение этих проблем. Алгоритмы машинного обучения позволяют оперативнее разрабатывать тестовые сценарии, что ускоряет процесс. Этот подход снижает вероятность пропуска дефектов, что улучшает точность тестирования [7]. Использование искусственного интеллекта расширяет возможности тестирования программного обеспечения. Методы машинного обучения повышают точность тестов, включая предсказательные функции. Модели способны выявлять участки кода, где возможны дефекты, что позволяет направить усилия на наиболее уязвимые части, что способствует улучшению качества конечного продукта [8]. Системы, основанные на ИИ, отслеживают поведение приложения, выявляя неисправности, что ускоряет процесс реагирования на возникающие проблемы. В настоящее время существуют различные алгоритмы машинного обучения, применяемые в тестировании, основные из которых включают следующие разновидности: Байесовский классификатор основывается на теореме Байеса с предположением о независимости признаков. Для каждого класса рассчитывается апостериорная вероятность, объект относится к классу с наибольшей вероятностью. В контексте тестирования программного обеспечения выделяют два класса: с дефектами, без дефектов. Рассчитывая вероятность принадлежности объекта к типу, принимаются во внимание как фактические данные, так и вероятность появления признаков, характерных для данного класса. Для повышения точности при малых вероятностях применяется логарифм вероятности, что предотвращает потерю значащих разрядов. Метод демонстрирует точность, требует минимального объема данных для обучения, что делает его конкурентоспособным с более сложными алгоритмами. Метод опорных векторов применяется для классификации объектов, когда необходимо разделить их на два класса. Каждый объект представлен как вектор в многомерном пространстве, задача состоит в нахождении гиперплоскости, которая разделяет два класса. Для линейной разделимости используется метод Лагранжа, что приводит к разрешению задачи квадратичного программирования. Также стоит отметить, что в данных часто встречается не линейная разделимость, что требует применения дополнительных методов, таких как, например, ядерные функции, изменяющие пространство признаков в высокоразмерное, при этом делая задачу линейно разделимой. Деревья решений используются для классификации объектов, они представляют собой структуру с узлами, содержащими условия для проверки признаков, листьями, которые демонстрируют конечные решения. В данном случае процесс обучения включает настройку условий для минимизации возникающих ошибок в процессе классификации. Однако модель способна переобучиться, если она становится сложной, что требует применения методов, предотвращающих излишнюю сложность, а также учета баланса классов в обучении. Далее рассмотрим бустинг, который представляет собой метод, использующий ансамбли слабых моделей для улучшения предсказаний, обучение в рассматриваемом способе происходит поэтапно, с проведением корректировки весов ошибочно классифицированных. В настоящее время популярными алгоритмами данного способа являются адаптивный и градиентный бустинг, где в первом случае коррекция происходит на основе ошибок, во втором оптимизация функции потерь осуществляется при помощи градиентного спуска. Ниже в таблице 2 будут обобщены результаты исследований [9].
Таблица 2.
Обобщение результатов работы алгоритмов [9]
|
Метрики Алгоритмы |
Accuracy (точность) |
Precision (точность) |
Recall (полнота) |
F-measure (F-мера) |
|
Наивный байесовский классификатор |
0.795 |
0.845 |
0.803 |
0.849 |
|
Метод опорных векторов |
0.841 |
0.901 |
0.879 |
0.902 |
|
Дерево решений |
0.823 |
0.845 |
0.878 |
0.889 |
|
Алгоритм случайного леса |
0.847 |
0.903 |
0.883 |
0.903 |
|
Градиентный бустинг |
0.845 |
0.859 |
0.863 |
0.890 |
|
Адаптивный бустинг |
0.835 |
0.858 |
0.861 |
0.889 |
Как видно из данных, отраженных в таблице 2 алгоритм случайного леса демонстрирует лучшие результаты по всем меткам, что подтверждает его эффективность для данной задачи. Модели бустинга, несмотря на различия в показателях, также демонстрируют хорошие результаты, что подтверждает их потенциал в схожих условиях [10], использование ансамблевых методов, гибкость настройки параметров во время обучения позволяет этим алгоритмам решать разнообразные задачи. Внедрение технологий в тестирование программного обеспечения открывает новые возможности в процессе обнаружения дефектов, последующей минимизации рисков, что обусловлено сокращением времени разработки. Использование этих решений повышает производительность за счет способности алгоритмов работать с массивами данных, выявлять скрытые закономерности[11]. Таким образом применение описанных технологий способствует улучшению автоматизации тестирования, что необходимо для разработки программного обеспечения, включающего несколько этапов, каждый из которых требует проверки. Инструменты тестирования программного обеспечения, основанные на алгоритмах искусственном интеллекте, такие как ACCELQ, облегчают процесс тестирования благодаря своей бескодовой структуре, что делает его универсальным. Ниже в таблице 3 будут описаны преимущества и недостатки данного инструмента.
Таблица 3.
Преимущества и недостатки ACCELQ [12]
|
Преимущества |
Недостатки |
|
Удобство использования благодаря понятному интерфейсу |
Ограниченная поддержка интеграции с Java требует использования встроенного редактора для специфических методов |
|
Отсутствие необходимости в программировании, что экономит время |
Высокая стоимость использования, что является барьером на начальном этапе |
|
Эффективная автоматизация тестирования, обеспечивающая надежность, точность результатов |
Недостаточный объем данных, что затрудняет использование инструмента |
SeleniumBase также представляет собой инструмент, использующий технологии искусственного интеллекта для совершенствования процессов автоматизированного тестирования. Ниже в таблице 4 будут отражены преимущества и недостатки данного инструмента.
Таблица 4.
Преимущества и недостатки SeleniumBase [13]
|
Преимущества |
Недостатки |
|
Интеллектуальные ожидания повышают стабильность тестов. |
Возможны ложные срабатывания. |
|
Самовосстанавливающиеся тесты уменьшают количество нестабильных тестов. |
Необходимость интеграции дополнительных инструментов для полной функциональности. |
|
Подробная отчетность упрощает анализ , устранение проблем. |
|
Katalon Studio начал внедрять функции искусственного интеллекта в 2020 году, что позволило повысить эффективность тестирования, за счет автоматизации тестирования. Далее в таблице 5 будут отражены преимущества и недостатки, присущие данному инструменту.
Таблица 5.
Преимущества и недостатки Katalon Studio [13]
|
Преимущества |
Недостатки |
|
Smart Wait управляет задержками, улучшая стабильность тестов. |
Сложность настройки некоторых функций для достижения оптимальных результатов. |
|
Самовосстанавливающиеся тесты снижают количество ошибок в случае изменений в интерфейсе. |
Существует риск ложного срабатывания, что требует корректировки. |
|
Рекомендации в тестах способствуют сокращению времени необходимого на проведение тестирования |
Использование инструментов, в основе которых лежат алгоритмы ИИ увеличивают стоимость. |
TestComplete использует искусственный интеллект с 2018 года, что привело к улучшению возможностей автоматизации тестирования. В нем технологии ИИ используется для улучшения взаимодействия с пользовательским интерфейсом, а также расширения возможностей тестирования [13]. В таблице 6 будут представлены преимущества и недостатки.
Таблица 6.
Преимущества и недостатки SmartBear (TestComplete) [13]
|
Преимущества |
Недостатки |
|
OCR позволяет тестировать контент без применения идентификаторов. |
ИИ способен неправильно интерпретировать изменения в интерфейсе, что приводит к ложным срабатываниям. |
|
Самовосстанавливающиеся тесты повышают стабильность автоматизации. |
Ограниченная поддержка специфических технологий требует дополнительной настройки. |
|
Распознавание образов улучшает тестирование нестандартных элементов интерфейса. |
Необходимы высокие затраты на внедрение, а также последующую настройку AI-функций для крупных проектов. |
Инструменты, использующие алгоритмы искусственного интеллекта, изменяют методы тестирования программного обеспечения, ускоряя его выполнение, повышая эффективность. Организации, внедряющие такие решения, получают возможность снизить затраты на ресурсы, что оказывает влияние на их операционную деятельность. Одним из направлений является интеграция искусственного интеллекта в системы тестирования, способных адаптироваться к изменениям в коде. Они способны корректировать тестовые сценарии в зависимости от изменений. Такой подход снижает риски пропуска ошибок, улучшая стабильность, а также качество продукта. Инструменты искусственного интеллекта также помогают выявлять уязвимости в различных частях кода. Машинное обучение, анализируя исторические данные, выделяет участки, где вероятность появления багов высока, что позволяет заранее устранить проблемы [14]. Развитие искусственного интеллекта в тестировании открывает новые перспективы для совершенствования процессов разработки программного обеспечения. Эти изменения следует рассматривать как шаг в трансформации индустрии, предоставляющий возможности для автоматизации, последующего повышения точности тестирования.
Заключение
Таким образом искусственный интеллект изменяет привычные подходы к тестированию программного обеспечения, открывая новые возможности для автоматизации процессов, повышения точности диагностики, улучшения качества конечного продукта. Использование ИИ позволяет внедрить предсказательную аналитику, которая выявляет уязвимости в коде, направляя внимание на проблемные участки. В условиях конкурентной среды, где важны не только скорость разработки, но и надежность программного обеспечения, эти технологии становятся необходимым элементом успеха. Интеграция искусственного интеллекта в процессы тестирования требует материальных и кадровых ресурсов, что затруднительно для малых организаций. В свою очередь сам процесс интеграции предполагает подготовку, грамотное управление, обеспечение безопасности данных, конфиденциальности, прозрачности решений, принимаемых системой. Дальнейшие же перспективы ИИ в тестировании программного обеспечения связаны с развитием адаптивных систем, которые способны будут корректировать тестовые сценарии, реагировать на изменения в коде, что в конечном счете ускорит процесс проверки кода.
Список литературы:
- Логачева Н. В., Ладонычева М. Л., Пузырева К. С. Важность тестирования программного обеспечения в процессе разработки программного обеспечения //Инновационная наука. – 2022. – №. 2-2. – С. 23-26.
- Рэшка Д. Тестирование программного обеспечения //М.: ЛОРИ. – 2018. – Т. 616.
- Галимова Е. Ю., Ходанович А. И. Современные направления интеллектуализации в сфере тестирования программного обеспечения //Региональная информатика и информационная безопасность. – 2022. – С. 572-574.
- Соломинский А. В. и др. Внедрение искусственного интеллекта в средства автоматизации //Вестник науки и образования. – 2023. – №. 8 (139). – С. 17-21.
- Фатыхов А.И., Салтанаева Е.А. Использование искусственного интеллекта для автоматизации процесса тестирования в информационных системах // Вестник науки. - 2024. - №5 (74) том 4. - С. 1556 - 1561.
- Пальмов С. В., Веретина С. Д., Сацкая А. А. Использование искусственного интеллекта в инновациях //Инновационная экономика: информация, аналитика, прогнозы. – 2025. – №. 1. – С. 153-158.
- Braiek H. B., Khomh F. On testing machine learning programs //Journal of Systems and Software. – 2020. – Т. 164. – С. 110542.
- Данилов А. Д., Мугатина В. М. Применение аппарата искусственных нейронных сетей в задаче оптимизации процесса тестирования программного обеспечения //Вестник Воронежского государственного технического университета. – 2018. – Т. 14. – №. 2. – С. 7-14.
- Климов И.С. Методы машинного обучения для обнаружения дефектов программного обеспечения. [Электронный ресурс] Режим доступа: https://na-journal.ru/4-2023-informacionnye-tekhnologii/4737-metody-mashinnogo-obucheniya-dlya-obnaruzheniya-defektov-programmnogo-obespecheniya (дата обращения 23.08.2024).
- Соловьев А. В. Безопасность. управление. искусственный интеллект //Безопасность. – 2022. – Т. 1. – №. 1. – С. 35-41.
- Как ИИ революционизирует тестирование ПО и ускоряет выпуск продуктов. [Электронный ресурс] Режим доступа: https://www.itweek.ru/ai/article/detail.php?ID=229855 (дата обращения 23.08.2024).
- 10 AI tools for Software Testing 2024. [Электронный ресурс] Режим доступа: https://www.geeksforgeeks.org/ai-tools-for-software-testing (дата обращения 23.08.2024).
- AI уже тут: в какие инструменты тестирования уже интегрирован искусственный интеллект. [Электронный ресурс] Режим доступа: https://habr.com/ru/articles/819573/(дата обращения 23.08.2024).
- Климов А. И. Искусственный интеллект: прогноз развития на 2022 год //Международный студенческий научный вестник. – 2022. – №. 1.