$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Архитектура системы и краткое описание прототипа:
В данном исследовании представлена усовершенствованная и адаптируемая прототипная система PreventativeTestPro, которая демонстрирует проактивный подход к инженерии качества, использующий данные наблюдаемости и крупные языковые модели (LLM) для дальнейшего улучшения решения проблем поддержки. Система стремится решать современные проблемы доставки программного обеспечения, автоматизируя обнаружение аномалий, анализ первопричин, а также интеллектуальное выполнение и разработку тестовых случаев для нерешённого покрытия с использованием синтетического мониторинга, данных наблюдаемости и интеграции с GenAI. Архитектура модульна и состоит из трёх основных компонентов: сборщика и анализатора данных наблюдаемости, слоя интеллекта, управляемого GenAI, и движка оркестрации и исполнения тестов, как подробно указано на рисунке 1.

Рисунок 1: Вход-выход предлагаемой системы. Данные о наблюдаемости, а также выходные данные наблюдателей, тестовый репозиторий и правила картирования, предоставляются в качестве входных данных вместе с тестовыми стендами BHRAMARI, которые создают тестовые стенды на базе ИИ для повышения устойчивости тестовых случаев. Предлагаемая система генерирует инструментирование аномалий, рекомендации, генерируемые ИИ, выполнение соответствующих тестовых случаев, документацию и отчетность, а также выявление и создание отсутствующих тестовых случаев. Пожалуйста, нажмите здесь, чтобы увидеть увеличенную версию этой фигуры.
Рисунок 2 показывает архитектуру предлагаемого подхода. На рисунке показаны ввод, обработка и вывод системы. Также даётся всестороннее описание системы, которое затем переводится в объяснение для лучшего понимания основных особенностей.

Рисунок 2: Архитектура системы предлагаемой системы с сборщиком и анализатором данных наблюдаемости, слоем интеллекта на базе GenAI, а также движком оркестрации и выполнения тестов . Этот рисунок иллюстрирует внутреннюю архитектуру системы PreventativeTestPro, разделённую на три слоя: Уровень Observability Collector агрегирует данные из нескольких источников, включая события браузера, логи, HAR-файлы, логи бэкенда, метрики и трассы. Generative AI Intelligence Layer использует эти данные для анализа первопричин, приоритизирования аномалий и автономного создания тестовых случаев (UI, API, руководства) и документации с помощью LLM. Модуль BHARAMARI также создаёт новые испытательные стенды. Engine Test Orchestration and Execution отображает расхождения с тестовыми случаями, выполняет тесты одновременно, оценивает результаты и информирует инженерные команды, системы тикетов и панели управления для контроля и мониторинга разрешений в реальном времени. Пожалуйста, нажмите здесь, чтобы увидеть увеличенную версию этой фигуры.
Модуль Observability Data Collector and Analyzer служит сенсорной системой платформы, непрерывно собирая данные о оцениваемом приложении в большом масштабе, с несколькими аспектами. В случае фронтенд-мониторинга для мониторинга событий на стороне браузера внедряются синтетические агенты мониторинга, такие как структуры Document Object Model (DOM), действия пользователей, такие как клики, ховеры и входы, а также HAR-файлы, захватывающие информацию о запросах и ответах сети и API. PreventativeTestPro также встроен в OBSERVER для расширения возможностей браузеров. Бэкенд-мониторинг нацелен на анализ логов, при котором запрашивается и обрабатывается информация о наблюдаемости на стороне сервера, включая журналы приложений, сообщения об ошибках, информационные и отладочные сообщения, логи трассировки стека и исключений, метрики производительности, такие как время отклика, и трассировку с использованием технологий, таких как OpenTelemetry или New Relic. Система будет работать с синтетическими агентами, имитирующими пользовательский трафик и взаимодействие, а сборщики журналов конденсируют поступающие данные в реальном времени. Собранные данные затем нормализуются в структурированные форматы и передаются другим вычислительным блокам для дальнейшего анализа.
Суть PreventativeTestPro — это уровень интеллекта, управляемый GenAI, который использует крупные языковые модели (LLM), такие как GPT, для чтения и анализа наблюдаемых данных, а также контекстуализации и генерации ответов. Модуль занимается анализом корневой причины: процессом интерпретации логов и трассировок корневой причины для объяснения технических ошибок с помощью понятных терминов, таких как NullPointerException на определённой строке кода и предполагаемая причина проблемы, например, неинициализированная переменная. При генерации тестовых случаев система использует автотесты, которые генерируются путём преобразования шаблонов исключений или последовательности событий в исполняемые тестовые скрипты, например, тесты Selenium или API, а также создаёт читаемые человеком тестовые процедуры, которые могут запускать сотрудники службы контроля качества. Тесты API эволюционировали за счёт преобразования журналов HAR и трассировки в последовательность запросов API с ожидаемыми утверждениями, а все сгенерированные тестовые случаи дополнительно усовершенствованы эффективными тестовыми стендами за счёт интеграции с BHRAMARI. В системе рекомендаций предлагаются дальнейшие улучшения, расширение покрытия тестов и возможности интеграции CI/CD, в зависимости от поведения анализируемой системы. Движок ИИ использует структурированные данные наблюдаемости с помощью инженерии подсказок и обогащения контекста для представления лог-контекста с помощью шаблонов подсказок, которые передают структурированные запросы в LLM, а затем генерирует результаты в функциональной форме, такие как фрагменты кода, спецификации тестового случая и документация на естественном языке.
Модуль Test Orchestration and Execution Engine управляет приоритетом тестирования, планированием и выполнением, обеспечивая автоматическую валидацию на основе деталей покрытия изменений кода, тегов и отображения аномалий. Отображение и выбор теста включает связывание аномалий в картах или инструментальных паттернах с известными тестовыми случаями с помощью движка правил отображения, а затем выполнение тестовых случаев в соответствии с установленным отображением. Возможности одновременного выполнения тестов позволяют одновременно запускать различные типы тестов, таких как функциональные, производительные или безопасные тесты в различных средах, а также координировать использование Selenium, JMeter и ZAP в качестве инструментов в конвейерах автоматизации. Реализация цикла обратной связи гарантирует, что результаты выполнений ведутся в журнал, а в случае неудачи тестирования изменения передаются поддерживающим системам, включая Jira и Azure DevOps, для их отслеживания и устранения.
Гипотеза:
H1 (операционная эффективность): Считается, что объединение данных наблюдаемости и интеллекта, управляемого ИИ, улучшит операционные показатели, особенно за счёт снижения среднего времени на разрешение (H1a), среднего времени на анализ (H1b), среднего времени обнаружения производственных проблем (H1c) и среднего времени развертывания исправлений в производстве (H1d). Эти изменения должны упростить выполнение требований Соглашения об уровне обслуживания (SLA) (H1e), ускоряя обнаружение, анализ и развертывание, при этом минимизируя простои системы.
H2 (Эффективность тестирования): Также считается, что эффективность тестирования программного обеспечения повысится за счёт увеличения охватов тестов (H2a), параллельного проведения тестовых случаев (H2b) и интеллектуального приоритетирования тестов (H2c). Ожидается, что рекомендации, созданные ИИ (H2D), также помогут как в тестировании, так и в операционных рабочих процессах. Это поможет быстрее выявлять ошибки, ускорять обратную связь и поддерживать профилактические и долговечные практики обеспечения качества.
Тематика и аудитория:
Этот прототип показывает общий дизайн системы, основную идею и пошаговое задание фреймворка PreventativeTestPro. Также подробно объясняется, как настроить правильные тестовые стенды/входные данные для выборок и дают советы по решению проблем. Материал предназначен для инженеров по качеству программного обеспечения, которые уже знают основы Java и хотят научиться использовать профилактическое тестирование для повышения надёжности и эффективности программного обеспечения.
Настройка среды:
Дополнительный файл 1 содержит пошаговое описание и программу, необходимые для общения с PreventativeTestPro. Это включает инструкции по установке необходимой среды, как запускать и останавливать сервисы инструмента, а также чёткое объяснение основного использования инструмента. Чтобы получить более подробную документацию, а также инструкции по использованию продвинутых инструментов, инструкции по настройке и другие организационные детали, обратитесь к официальным источникам GitHub, посвящённым проекту: конкретная страница Wiki в адрес https://github.com/sohambpatel/PreventativeTests/wiki и основной README в https://github.com/sohambpatel/PreventativeTests?tab=readme-ov-file/readme.
Примеры входных данных:
Примеры входных файлов можно найти в репозитории GitHub: https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/Inputs. Фреймворк может сразу запускать заранее заданные тестовые случаи и наборы данных этих файлов. Они используются как опорные входы для проверки настройки среды и получения тех же результатов, что описаны в этом протоколе.
Выходы выборок:
Репозиторий GitHub (https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/SampleOutputs) содержит конкретные образцы выходных данных профилактического тестового фреймворка в сыром виде. С помощью этих файлов пользователи могут напрямую просматривать структуру и детали сгенерированных отчётов и метрик, демонстрируя результаты, достигнутые инструментом в ходе работы. Это руководство важно для изучения конвейера данных и подтверждения ожидаемого поведения фреймворка при воссоздании экспериментального процесса.
Прототип исполнения:
В этом разделе представлено подробное, пошаговое руководство по использованию фреймворка PreventativeTestPro. Чтобы помочь пользователям воспроизвести рабочий процесс, каждый этап описывается в порядке. В этом разделе представлены этапы выполнения в структурированном формате, чтобы облегчить воспроизведение результатов, указать важные контрольные точки и обеспечить последовательное использование фреймворка PreventativeTestPro в различных экспериментальных или операционных условиях.
На этом этапе PreventativeTestPro GUI можно использовать для выбора лучшего рабочего процесса профилактического тестирования. На рисунке 3 показано пять вариантов, каждый из которых представляет собой отдельный этап процесса тестирования: параллельный запуск тестов, создание тестового набора на основе мониторингового результата путём приоритизации существующих тестовых случаев, создание ручных тестовых случаев, автоматизированное тестирование и поиск коренной причины. Когда пользователь делает выбор, запускается назначенный рабочий процесс. После этого на следующих этапах могут быть добавлены дополнительные режимы (такие как генерация тестовых случаев с помощью ИИ или анализ первопричинных причин). Этот хорошо организованный интерфейс позволяет проводить профилактические испытания, которые можно повторить и разбить на более мелкие части.

Рисунок 3: Пользовательский интерфейс 1 системы. На рисунке показан пользовательский интерфейс PreventativeTestPro, который позволяет выбрать один из пяти различных способов проведения профилактического тестирования: 1. Профилактический тест, параллельное выполнение: начать тестирование, 2. Профилактический тест, финализация набора тестов на основе мониторинга синтетических приложений, 3. Профилактический тест, генерирующий ручные тестовые случаи с помощью GenAI, 4. Профилактический тест, генерирующий автоматизированные тестовые случаи с помощью GenAI, 5. Профилактический тест, Анализ коренных причин с помощью GenAI. В раз можно выбрать только один вариант. Модульный дизайн облегчает проведение профилактических тестов и добавляет создание и диагностику тестов на базе искусственного интеллекта. Пожалуйста, нажмите здесь, чтобы увидеть увеличенную версию этой фигуры.
На рисунке 4 показан интерфейс Parallel Execution фреймворка. На этом этапе пользователь вводит URL приложения, которое хочет протестировать, и абсолютный путь к файлу свойств с настройками конфигурации. После настройки входных данных пользователь может одновременно запускать тесты, нажав кнопку Start Testing, которая также отслеживает тестируемый сайт и генерирует журналы безопасности, производительности, консоли и JavaScript. Можно остановить текущее выполнение, нажав кнопку «Остановить тестирование». Кнопка «Получить рекомендацию» позволяет получать инсайты с помощью ИИ из записанных логов. Такой дизайн обеспечивает одновременное выполнение нескольких категорий тестов (функциональных, производительных и безопасных), что облегчает поиск задач и быстрее.

Рисунок 4: Пользовательский интерфейс 2 системы. На рисунке показан режим параллельного выполнения фреймворка PreventativeTestPro. Пользователь указывает URL целевого приложения и путь к файлу свойств с деталями конфигурации. Опции включают Start Testing (для параллельного запуска функциональных, безопасных и производительных тестов и записи журналов), Stop Testing (для остановки выполнения) и Get Recommendation (для получения AI-ориентированных аналитических данных из логов и метрик). Пожалуйста, нажмите здесь, чтобы увидеть увеличенную версию этой фигуры.
На рисунке 5 показан интерфейс финализации тестирования на основе мониторинга фреймворка PreventativeTestPro. На этом этапе пользователь задаёт путь для выходного файла мониторинга, запрос JSON-пути для получения узлов ошибок или исключений, а путь тестового репозитория — для сохранения созданных случаев. После настройки входных данных пользователь сначала может получить имена класса и метода, которые к ним подходят, а затем отсортировать тестовые случаи по тест-пулу по найденному классу и методу. Этот этап приоритизации показывает, как использовать данные мониторинга для эффективного ранжирования тестовых случаев.

Рисунок 5: Пользовательский интерфейс 3 системы. На этом рисунке показано, как приоритизировать тестовый набор в фреймворке PreventativeTestPro с использованием синтетических результатов мониторинга. Пользователь вводит путь к выходному файлу мониторинга, путь JSON для получения исключений/ошибок и путь к тестовому репозиторию (офлайн). Опции Get Class/Method Name и Get Test Cases можно использовать, чтобы превратить аномалии сопоставления в тестовые случаи, которые можно запускать. Это гарантирует, что задачи во время выполнения включены в процесс тестирования. Пожалуйста, нажмите здесь, чтобы увидеть увеличенную версию этой фигуры.
На рисунке 6 показан интерфейс ручной генерации тестовых случаев PreventativeTestPro. На этом этапе пользователь указывает программе, где найти файл трассы стека, отображающий аномалию, предоставляя абсолютный путь к файлу трассы стека и путь к файлу свойств конфигурации. После настройки входных данных можно запустить опцию Generate Test Cases, которая превратит аномалию в структурированные ручные тестовые случаи. Это гарантирует, что ранее произошедшие ошибки во время выполнения всегда включаются в процесс тестирования. Фреймворк облегчает создание тестовых случаев за счёт автоматизации процесса. Это сокращает ручную работу, улучшает покрытие тестов и делает тесты более надёжными, а также предотвращает повторение той же проблемы. Этот шаг — очень важная связь между поиском проблем и обеспечением качества до их возникновения.

Рисунок 6: пользовательский интерфейс 3 системы. На этом рисунке показано интерфейс генерации тестовых случаев PreventativeTestPro. Он превращает трассировки стека аномалий в ручные тестовые случаи в Behavior-Driven Development (BDD), которые можно использовать. Пользователь указывает пути к файлу трассы стека и файлу свойств, затем нажимает «Generate Test Cases», чтобы автоматически создать случаи, соответствующие обнаруженному сбою. Это гарантирует, что задачи во время выполнения всегда превращаются в регрессионные тесты, которые можно повторять. Пожалуйста, нажмите здесь, чтобы увидеть увеличенную версию этой фигуры.
На рисунке 7 показан интерфейс автоматизированной генерации тестовых случаев PreventativeTestPro. На этом этапе пользователь указывает абсолютный путь к выходному файлу JSON observability и путь к конфигурационному файлу свойства. При нажатии кнопки Generate Automated Test Cases система обрабатывает мониторинговые данные и создаёт тестовые случаи, которые можно запускать, чтобы показать те же проблемы, что и раньше.

Рисунок 7: Пользовательский интерфейс 4 системы. На этом рисунке показана автоматизированный интерфейс генерации тестовых случаев PreventativeTestPro, который создаёт тесты, которые можно запускать с использованием данных наблюдаемости. Пользователь указывает путь к файлу свойств и выходному файлу JSON наблюдаемости. Затем они нажимают «Generate Automated Test Cases», чтобы создать скрипты, которые можно запускать (в форматах Selenium и TestNG). Пожалуйста, нажмите здесь, чтобы увидеть увеличенную версию этой фигуры.

Рисунок 8: Пользовательский интерфейс 5 системы. На этом рисунке показана интерфейс инструментирования аномалий PreventativeTestPro для анализа коренных причин (RCA). Пользователь указывает путь к файлу свойств и файлу трассировки стека, затем выбирает RCA для запуска анализа на основе ИИ. Этот этап превращает обнаруженные аномалии в структурированные диагностические инсайты, что гарантирует устранение неисправностей таким образом, который можно повторять и быть специфичным для конкретной задачи. Пожалуйста, нажмите здесь, чтобы увидеть увеличенную версию этой фигуры.
Устранение неполадок:
Таблица 1 показывает самые важные точки устранения неполадок, касающиеся только кода приложения. Эти пункты — быстрый способ вспомнить, как исправлять проблемы на уровне кода, возникающие при запуске фреймворка PreventativeTestPro. Документация проекта содержит дополнительную информацию и пошаговые инструкции для читателей, желающих помочь с устранением неполадок, влияющих на общую функциональность приложения. Полный ресурс можно получить по ссылке: https://github.com/sohambpatel/PreventativeTests/wiki/How-to-use%3F. Этот дополнительный справочник гарантирует, что пользователи не только решают проблемы с кодированием, но и учатся устранять функции, что позволяет им эффективнее использовать фреймворк.
| Поведение ошибок | Коренная причина | Как это исправить? |
| Подача заявки не начинается | Java Path не задаётся | В переменной Окружение установите JAVA_HOME |
| Сервер выходит из строя при запуске | Порт 8080/9090 используется (в частности, при использовании Docker) | Обновление отображения портов Docker |
| Контент GenAI не является нулевым | Возможно, токен истёк | Сгенерируйте токен и обновите config.properties перед тем, как предоставлять его в качестве входных данных |
| Экземпляр браузера, сгенерированный фреймворком, не подключается к сети | Либо сервер ZAP не работает, либо учетные данные ZAP некорректны | Включите ZAP перед запуском приложения, если оно работает и проблема сохраняется, обновите учетные данные ZAP в config.properties перед тем, как вводить их |
Таблица 1: Распространённые предложенные ошибки системы и быстрые исправления. В этой таблице показаны распространённые ошибки, устранение неполадок и быстрые исправления, которые можно применить для их устранения.