Pular para conteúdo

Arquitetura

O Probato foi projetado com uma arquitetura modular e altamente extensível para suportar a automação de testes em nível funcional de forma eficiente e escalável. A arquitetura adota conceitos modernos de design de software, como o Page Object Model (POM) e a injeção de dependências via anotações, permitindo a criação de scripts reutilizáveis, fáceis de manter e evoluir.

Essa abordagem garante separação clara de responsabilidades, previsibilidade de execução e flexibilidade para adaptação a diferentes cenários de automação.

Princípios arquiteturais

A arquitetura do Probato é baseada em:

  • Modularidade
  • Isolamento de responsabilidades
  • Reutilização de componentes
  • Extensibilidade sem impacto no núcleo
  • Integração transparente com ferramentas externas

Esses princípios orientam todas as camadas do framework.

Camadas arquiteturais e isolamento de responsabilidades

A arquitetura do Probato é composta por múltiplas camadas, cada uma com responsabilidades bem definidas, facilitando a manutenção, evolução e diagnóstico de falhas.

Camada de interação (Page Object Model)

  • Implementa o padrão Page Object Model (POM), encapsulando a lógica de interação com a interface do usuário.
  • Cada página, tela ou componente é representado como um objeto contendo métodos para interações possíveis (cliques, inserção de dados, validações etc.).
  • Promove reutilização de código e facilita a manutenção quando a interface da aplicação é alterada.

Camada de testes (Scripts e Procedimentos)

Os testes são organizados em scripts, compostos por ações subdivididas em:

  • Pré-condições
  • Procedimentos
  • Pós-condições

Essa separação permite isolar falhas e identificar com precisão em qual etapa ocorreu o erro.

Camada de injeção de massa de dados

  • Permite o uso flexível e dinâmico de dados de entrada.
  • Suporta injeção de dados via arquivos CSV.
  • Possui previsão de suporte futuro para JSON, YAML e bancos de dados por meio de plugins personalizados.

Camada de persistência e conectores em bancos de dados

  • Disponibiliza um executor SQL e NoSQL integrado capaz de conectar-se a múltiplas bases de dados.
  • Permite definir pré-condições de banco, alterar estados dinamicamente antes dos testes e restaurar estados após a execução.

Injeção de dependências com anotações

  • Adota um modelo de injeção de dependências via anotações Java, promovendo Inversão de Controle (IoC).
  • Simplifica configurações manuais, permitindo que objetos necessários sejam injetados automaticamente.
  • Promove modularidade, desacoplamento e reutilização de componentes.

Modelo de execução baseado no JUnit 5

O Probato integra-se ao ciclo de vida do JUnit 5, utilizando testes dinâmicos e a anotação @TestFactory para geração de casos de teste em tempo de execução.

Ciclo de vida de execução

Probato Life Cycle

  • BeforeAll
    Carrega pontos de extensão, configurações e executa validações de código e ambiente. Também cria testes dinâmicos do JUnit 5.

  • BeforeEach
    Carrega conjuntos de dados e scripts necessários e inicia a execução dos cenários de teste.

  • TestFactory
    Gera testes dinamicamente com base em scripts, procedimentos e Page Objects. Suporta data-driven testing, permitindo múltiplas execuções com diferentes conjuntos de dados.

  • AfterEach
    Submete os dados coletados ao Probato Manager e armazena imagens e vídeos no armazenamento configurado.

  • AfterAll
    Calcula métricas de qualidade do software e notifica os colaboradores sobre a conclusão da execução.

Suporte à execução multibrowser

  • Construído sobre APIs do Selenium e Playwright, permitindo automação em múltiplos navegadores.
  • Suporte extensível para novos browsers, sistemas operacionais e contextos de execução.

Extensibilidade e plugins

O framework foi projetado para ser altamente extensível, permitindo a adição de funcionalidades sem alterações no núcleo.

Suporte a plugins para:

  • Novos drivers de browser
  • Formatos adicionais de dados de entrada
  • Novos tipos de validação
  • Executores SQL ou NoSQL personalizados

Gerenciamento de execuções e coleta de dados

Durante a execução dos testes, o Probato captura e processa dados como:

  • Logs de execução
  • Capturas de tela
  • Vídeos
  • Passos executados

Esses dados são enviados para uma aplicação web integrada, que oferece:

  • Monitoramento centralizado das execuções
  • Geração de relatórios detalhados
  • Rastreamento de bugs
  • Análise por versionamento

A arquitetura do Probato permite a integração com ferramentas externas de gestão de testes e defeitos, como TestLink e Mantis Bug Tracker, por meio de seus pontos de extensibilidade. Essas integrações podem ser implementadas como plugins, sem necessidade de alterações no núcleo do framework.

Configurações e personalizações avançadas

O Probato oferece opções avançadas de configuração para:

  • Definição de timeouts e intervalos entre ações
  • Ajuste de qualidade de imagens e vídeos
  • Controle de execução em múltiplos monitores

Notificações e integração contínua

  • Envio automático de notificações aos colaboradores após cada execução.
  • Integração com ferramentas de CI/CD, como Jenkins, permitindo automação completa do processo de testes no ciclo de desenvolvimento.