$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Arquitetura do sistema e resumo do protótipo:
Esta pesquisa apresenta um sistema protótipo aprimorado e adaptável, o PreventivtativeTestPro, que exemplifica uma abordagem proativa de engenharia de qualidade utilizando dados de observabilidade e grandes modelos de linguagem (LLMs) para melhorar ainda mais a resolução de problemas de suporte. O sistema busca enfrentar problemas modernos de entrega de software, automatizando a detecção de anomalias, análise de causa raiz e a execução e desenvolvimento inteligentes de casos de teste para cobertura não abordada, utilizando monitoramento sintético, dados de observabilidade e integração GenAI. A arquitetura é modular e compreende três componentes principais: Coletor e Analisador de Dados de Observabilidade, Camada de Inteligência Orientada por GenAI e Motor de Orquestração e Execução de Testes, conforme especificado detalhadamente na Figura 1.

Figura 1: A entrada-saída do sistema proposto. Dados de observabilidade, juntamente com a saída do observador, repositório de testes e regras de mapeamento, são fornecidos como entrada junto com os bancos de teste BHRAMI, que constroem bancos de teste impulsionados por IA para aumentar a robustez dos casos de teste. O sistema proposto gera instrumentação de anomalias, recomendações geradas por IA, execução de casos de teste pertinentes, documentação e relatórios, bem como a identificação e criação de casos de teste ausentes. Por favor, clique aqui para ver uma versão ampliada desta figura.
A Figura 2 mostra a arquitetura da abordagem sugerida. A figura ilustra a entrada, processamento e saída do sistema. Também fornece uma descrição abrangente do sistema, que é então traduzida em uma explicação para aprimorar a compreensão das características subjacentes.

Figura 2: Arquitetura do sistema proposto com coletor e analisador de dados de observabilidade, camada de inteligência orientada por GenAI e motor de orquestração e execução de testes. Esta figura ilustra a arquitetura interna do sistema PreventativeTestPro, segmentada em três camadas: A Camada Coletora de Observabilidade agrega dados de múltiplas fontes, incluindo eventos do navegador, logs, arquivos HAR, logs backend, métricas e traços. A Camada de Inteligência de IA Generativa utiliza esses dados para realizar análises de causa raiz, priorizar anomalias e criar de forma autônoma casos de teste (UI, API, manual) e documentação por meio do uso de LLMs. O módulo BHARAMARI também estabelece novos bancos de teste. O Motor de Orquestração e Execução de Testes mapeia discrepâncias para casos de teste, executa testes simultaneamente, avalia resultados e informa equipes de engenharia, sistemas de tickets e dashboards para supervisão em tempo real e monitoramento de resolução. Por favor, clique aqui para ver uma versão ampliada desta figura.
O módulo Observability Data Collector and Analyzer serve como um sistema sensorial da plataforma, coletando continuamente dados da aplicação em avaliação em grande escala, com múltiplos aspectos. No caso do monitoramento frontend, agentes sintéticos de monitoramento são implantados para monitorar eventos do lado do navegador, como estruturas do Modelo de Objetos de Documento (DOM), ações do usuário, como cliques, hovers e entradas, e arquivos HAR capturando informações de rede e resposta de rede e API. O PreventativeTestPro também está incorporado ao OBSERVER para aumentar a capacidade dos navegadores. O monitoramento backend mira a análise de logs, na qual informações de observabilidade do lado do servidor são solicitadas e processadas, incluindo logs de aplicação, mensagens de erro, informações e depuração, logs de rastreamento de pilha e exceções, métricas de desempenho como tempos de resposta e rastreamento usando tecnologias como OpenTelemetry ou New Relic. O sistema funcionará com agentes sintéticos que simulam tráfego e interação dos usuários, e coletores de logs condensam dados em tempo real recebidos. Os dados coletados são então normalizados em formatos estruturados e entregues a outras unidades de processamento para análise posterior.
A essência do PreventativeTestPro é uma Camada de Inteligência Orientada por GenAI que utiliza Grandes Modelos de Linguagem (LLMs), como o GPT, para ler e analisar dados de observabilidade e contextualizar e gerar respostas. O módulo realiza a análise da causa raiz: o processo de interpretar logs e traços da causa raiz para explicar falhas técnicas em termos que possam ser compreendidos, como uma NullPointerException em uma linha de código específica e a causa assumida do problema, como uma variável não inicializada. Na geração de casos de teste, o sistema utiliza auto-testes gerados pela conversão de padrões de exceção ou uma sequência de eventos em scripts de teste executáveis, por exemplo, testes de Selenium ou API, mas também produz procedimentos de teste legíveis por humanos que a equipe de Garantia de Qualidade pode executar. Os testes de API evoluíram por meio da transformação de HAR e logs de traços em uma sequência de requisições de API com as asserções esperadas, e todos os casos de teste gerados são ainda mais aprimorados com bancos de teste eficazes ao se integrarem ao BHRAMARI. Melhorias adicionais, aprimoramentos na cobertura de testes e oportunidades de integração CI/CD são sugeridos no sistema de recomendação, dependendo do comportamento do sistema analisado. A Engine de IA utiliza dados estruturados de observabilidade via engenharia de prompts e enriquecimento de contexto para apresentar o contexto do log com templates de prompts que encaminham consultas estruturadas para o LLM, e finalmente gera saída em forma funcional, como trechos de código, especificações de casos de teste e documentação em linguagem natural.
O módulo Test Orchestration and Execution Engine gerencia prioridade de teste, escalonamento e execução, permitindo validação automatizada baseada em detalhes de cobertura de alterações de código, tags e mapeamento de anomalias. O mapeamento e a seleção do teste envolvem associar anomalias em mapas ou padrões de instrumentação com casos de teste conhecidos usando um Motor de Regras de Mapeamento, e então executar os casos de teste de acordo com o mapeamento estabelecido. As funcionalidades da execução concorrente de testes permitem executar diversos tipos de testes simultaneamente, como testes funcionais, de desempenho ou de segurança em diferentes ambientes, além de coordenar o uso de Selenium, JMeter e ZAP como instrumentos nos pipelines de automação. A implementação do ciclo de feedback garante que os resultados das execuções sejam registrados e, em caso de falha no teste, as alterações são comunicadas aos sistemas de suporte, incluindo Jira e Azure DevOps, para rastreá-las e resolvê-las.
Hipótese:
H1 (Eficiência Operacional): Postula-se que a fusão de dados de observabilidade e inteligência impulsionada por IA aprimorará as métricas operacionais, especialmente ao diminuir o tempo médio para resolver (H1a), o tempo médio para analisar (H1b), o tempo médio para detectar problemas de produção (H1c) e o tempo médio para implantar correções em produção (H1d). Essas mudanças devem facilitar o cumprimento dos requisitos do Acordo de Nível de Serviço (SLA) (H1e), acelerando a detecção, análise e implantação, mantendo o tempo de inatividade do sistema ao mínimo.
H2 (Eficácia dos Testes): Também se acredita que a eficácia dos testes de software melhorará com mais cobertura de teste (H2a), execução de casos de teste em paralelo (H2b) e priorização inteligente de testes (H2c). Recomendações geradas por IA (H2d) também devem ajudar tanto nos testes quanto nos fluxos de trabalho operacionais. Isso ajudará a identificar bugs mais rapidamente, acelerar os ciclos de feedback e apoiar práticas preventivas e duradouras de garantia de qualidade.
Escopo e público:
Este protótipo mostra o design geral do sistema, a ideia principal e como configurar e rodar o framework PreventivatTestPro passo a passo. Também detalha como configurar os bancos de teste/entradas de amostra corretos e dá dicas de como resolver problemas. O conteúdo é para engenheiros de qualidade de software que já conhecem o básico do Java e querem aprender a usar testes preventivos para tornar o software mais confiável e eficiente.
Configuração do ambiente:
O Arquivo Suplementar 1 contém uma descrição passo a passo e um programa necessários para se comunicar com o PreventivatTestPro. Isso inclui instruções para instalar o ambiente necessário, como iniciar e parar os serviços da ferramenta, e uma explicação clara do uso fundamental da ferramenta. Para obter uma documentação mais detalhada, juntamente com instruções sobre como usar ferramentas avançadas, instruções de configuração e outros detalhes organizacionais, consulte as fontes oficiais do GitHub dedicadas ao projeto: a página específica da Wiki no local do https://github.com/sohambpatel/PreventativeTests/wiki e o principal README na https://github.com/sohambpatel/PreventativeTests?tab=readme-ov-file/readme.
Exemplos de entradas:
Os arquivos de entrada de exemplo podem ser encontrados no repositório do GitHub: https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/Inputs. O framework pode executar os casos de teste pré-definidos desses arquivos e conjuntos de dados imediatamente. Eles são usados como entradas de referência para verificar a configuração do ambiente e obter os mesmos resultados descritos neste protocolo.
Exemplos de saídas:
O repositório GitHub (https://github.com/sohambpatel/PreventativeTests/tree/main/preventativetestframework/SampleOutputs) contém amostras concretas dos dados de saída do framework de teste preventivo em formato bruto. Por meio desses arquivos, os usuários podem visualizar diretamente o layout e os detalhes dos relatórios e métricas gerados, demonstrando os resultados alcançados pela ferramenta durante seu funcionamento. Este guia é relevante para conhecer o pipeline de dados e confirmar o comportamento previsto do framework na recriação do processo experimental.
Protótipo de execução:
Esta seção oferece um guia detalhado passo a passo sobre como usar o framework PreventivatTestPro. Para ajudar os usuários a reproduzir o fluxo de trabalho, cada etapa é descrita em ordem. Esta seção apresenta as etapas de execução em um formato estruturado para facilitar a reprodução dos resultados, apontar pontos de verificação importantes e garantir que o framework PreventivatTestPro possa ser usado de forma consistente em diferentes ambientes experimentais ou operacionais.
Nessa etapa, a interface gráfica do PreventivtativeTestPro pode ser usada para escolher o melhor fluxo de trabalho de testes preventivos. A Figura 3 mostra cinco opções, cada uma representando uma etapa diferente no processo de testes: executar testes em paralelo, criar o conjunto de testes a partir do monitoramento da saída priorizando casos de teste existentes, criar casos de teste manuais, criar casos de teste automatizados e encontrar a causa raiz. Quando o usuário faz uma escolha, o fluxo de trabalho designado começa. Depois disso, modos adicionais (como geração de casos de teste impulsionada por IA ou análise de causa raiz) podem ser adicionados em estágios posteriores. Essa interface bem organizada oferece uma forma de realizar estudos de testes preventivos que podem ser repetidos e divididos em partes menores.

Figura 3: Interface do usuário 1 do sistema. Esta figura mostra a interface do usuário PreventivaTestPro, que permite escolher entre cinco maneiras diferentes de realizar testes preventivos: 1. Teste Preventivo, Execução Paralela: Início do Teste, 2. Teste Preventivo, Finalização do Conjunto de Testes Baseado em Monitoramento de Aplicativos Sintéticos, 3. Teste Preventivo, Gerando Casos de Teste Manuais usando GenAI, 4. Teste Preventivo, Gerando Casos de Teste Automatizados usando GenAI, 5. Teste Preventivo, Análise de Causa Raiz usando GenAI. Apenas uma opção pode ser escolhida por vez. O design modular facilita a realização de testes preventivos e adiciona a criação e diagnóstico de testes com IA. Por favor, clique aqui para ver uma versão ampliada desta figura.
A Figura 4 mostra a interface de Execução Paralela do framework. Nessa etapa, o usuário insere a URL do aplicativo que deseja testar e o caminho absoluto até o arquivo de propriedades que contém as configurações de configuração. Após os inputs serem definidos, o usuário pode começar a executar testes ao mesmo tempo clicando no botão Iniciar Testes, que também monitora o site em teste e gera os logs de segurança, desempenho, console e JavaScript. É possível interromper a execução em andamento clicando no botão Parar o Teste. O botão Obter Recomendação permite obter insights baseados em IA a partir dos registros registrados. Esse design garante que múltiplas categorias de teste (funcionais, de desempenho e de segurança) rodem ao mesmo tempo, o que facilita a identificação de problemas mais rapidamente.

Figura 4: Interface do usuário 2 do sistema. Esta figura mostra o modo de Execução Paralela do framework PreventivatTestPro. O usuário especifica a URL da aplicação de destino e o caminho para um arquivo de propriedades contendo detalhes de configuração. As opções incluem Start Testing (para executar testes funcionais, de segurança e de desempenho em paralelo e registrar os logs), Stop Testing (para interromper a execução) e Get Recommendation (para obter insights baseados em IA a partir de logs e métricas). Por favor, clique aqui para ver uma versão ampliada desta figura.
A Figura 5 mostra a interface de Finalização de Testes baseada em Monitoramento do framework PreventivTestPro. Nessa etapa, o usuário define o caminho para o arquivo de saída de monitoramento, a consulta do caminho JSON para obter nós de erro ou exceção, e o caminho do repositório de teste para salvar os casos criados. Depois que as entradas são definidas, o usuário pode primeiro obter os nomes da classe e do método que as acompanham e então ordenar os casos de teste do pull de teste com base na classe e método encontrados. Essa etapa de priorização mostra como usar os dados de monitoramento para classificar os casos de teste de forma eficaz.

Figura 5: Interface do usuário 3 do sistema. Esta figura mostra como priorizar um conjunto de testes no framework PreventivatTestPro usando resultados sintéticos de monitoramento. O usuário digita o caminho para o arquivo de saída de monitoramento, o caminho JSON para obter exceções/erros e o caminho para o repositório de teste (offline). As opções Get Class/Method Name e Get Test Cases podem ser usadas para transformar anomalias de mapeamento em casos de teste que podem ser executados. Isso garante que problemas em tempo de execução estejam incluídos no processo de teste. Por favor, clique aqui para ver uma versão ampliada desta figura.
A Figura 6 mostra a interface Manual de Geração de Casos de Teste do PreventivatTestPro. Nessa etapa, o usuário informa ao programa onde encontrar o arquivo de rastreamento de pilha que mostra a anomalia, fornecendo o caminho absoluto para o arquivo de traço de pilha e o caminho para o arquivo de propriedades de configuração. Uma vez que as entradas são definidas, pode-se executar a opção Generar Casos de Teste, que transformará a anomalia em casos de teste manuais estruturados. Isso garante que erros de execução que já ocorreram antes estejam sempre incluídos no processo de teste. O framework facilita a criação de casos de teste ao automatizar o processo. Isso reduz o trabalho manual, melhora a cobertura dos testes e torna os testes mais confiáveis, além de evitar que o mesmo problema volte a acontecer. Essa etapa é um elo muito importante entre encontrar problemas e garantir que a qualidade seja boa antes que isso aconteça.

Figura 6: interface do usuário 3 do sistema. Esta figura mostra a interface de geração de casos de teste do PreventivatTestPro. Ele transforma rastreamentos de pilha de anomalias em casos de teste manuais no Desenvolvimento Orientado por Comportamento (BDD) que podem ser usados. O usuário fornece os caminhos para o arquivo de rastreamento da pilha e o arquivo de propriedades e então clica em "Gerar Casos de Teste" para criar automaticamente casos que correspondem à falha encontrada. Isso garante que problemas em tempo de execução sejam sempre transformados em testes de regressão que podem ser repetidos. Por favor, clique aqui para ver uma versão ampliada desta figura.
A Figura 7 mostra a interface automatizada de geração de casos de teste do PreventivatTestPro. Nessa etapa, o usuário fornece o caminho absoluto para o arquivo de saída JSON de observabilidade e o caminho para o arquivo de configuração da propriedade. Quando o botão Generar Casos de Teste Automatizados é clicado, o sistema processa os dados de monitoramento e cria casos de teste que podem ser executados para mostrar os mesmos problemas que foram vistos.

Figura 7: Interface do usuário 4 do sistema. Esta figura mostra a interface automatizada de geração de casos de teste do PreventivatTestPro, que realiza testes que podem ser executados usando dados de observabilidade. O usuário fornece o caminho para o arquivo de propriedades e para o arquivo de saída JSON de observabilidade. Depois, eles clicam em "Gerar Casos de Teste Automatizados" para criar scripts que podem ser executados (nos formatos Selenium e TestNG). Por favor, clique aqui para ver uma versão ampliada desta figura.

Figura 8: Interface do usuário 5 do sistema. Esta figura mostra a interface de instrumentação de anomalias do PreventivoTestPro para Análise da Causa Raiz (RCA). O usuário fornece o caminho para o arquivo de propriedades e para o arquivo de traço da pilha, então escolhe o RCA para iniciar a análise conduzida por IA. Essa etapa transforma anomalias detectadas em insights diagnósticos estruturados, garantindo que falhas possam ser corrigidas de forma repetida e específica para o problema. Por favor, clique aqui para ver uma versão ampliada desta figura.
Solução de Problemas:
A Tabela 1 mostra os pontos de solução de problemas mais importantes que se referem apenas ao código da aplicação. Esses pontos são uma forma rápida de lembrar como corrigir problemas em nível de código que surgem ao executar o framework PreventivTestPro. A documentação do projeto fornece mais informações e instruções passo a passo para leitores que desejam mais ajuda para solucionar problemas que afetam a funcionalidade geral da aplicação. O recurso completo pode ser obtido no link: https://github.com/sohambpatel/PreventativeTests/wiki/How-to-use%3F. Essa referência extra garante que os usuários não apenas corrigam problemas de programação, mas também aprendam a diagnosticar funções, permitindo que utilizem o framework de forma mais eficaz.
| Comportamento de Erro | Causa Raiz | Como consertar? |
| A inscrição não está começando | O caminho do Java não está definido | Na variável Ambiente, defina a JAVA_HOME |
| Servidor falha na inicialização | Porta 8080/9090 em uso (especificamente durante o uso do Docker) | Atualizar o mapeamento de portas do Docker |
| O conteúdo do GenAI é nulo | O token pode ter expirado | Gerar o token e atualizar o config.properties antes de fornecer isso como entrada |
| A instância do navegador gerada pelo framework não está conectando à rede | Ou o servidor ZAP não está rodando ou as credenciais ZAP estão incorretas | Ligue o ZAP antes de rodar o aplicativo, caso ele esteja rodando e o problema ainda persista, atualize as credenciais ZAP no config.properties antes de fornecer isso como entrada |
Tabela 1: Erros comuns de sistema propostos e correções rápidas. Esta tabela mostra os erros comuns específicos de aplicação, solução de problemas e correções rápidas que podem ser aplicadas para corrigir os problemas.