Skip to content

RicardoOliver/api-test-automation-restassured-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API Test Framework – Enterprise Grade

Java · JUnit 5 · RestAssured · Allure · GitHub Actions


Arquitetura em Camadas

src/
├── main/java/com/qateam/
│   ├── client/        ApiClient          → RequestSpec / ResponseSpec centralizados
│   ├── config/        ConfigManager      → Multi-ambiente via OWNER (dev/hml/prod)
│   ├── model/         User, Post         → POJOs com Lombok + Jackson
│   ├── service/       UserService        → Abstração HTTP por recurso
│   │                  PostService
│   └── utils/         AuthUtils          → Bearer Token / OAuth2
│                      RetryUtils         → Retry automático para flaky tests
│                      JsonSchemaUtils    → Validação de contratos JSON Schema
│
└── test/java/com/qateam/
    ├── base/          BaseTest           → @BeforeAll/@AfterAll, WireMock, Allure
    │                  AllureReportExtension
    ├── builder/       UserBuilder        → Data Builder Pattern com Faker
    │                  PostBuilder
    ├── factory/       DataFactory        → Factory Pattern: cenários nomeados
    ├── listener/      (extensível)
    └── tests/
        ├── user/      UserCrudTest       → GET/POST/PUT/PATCH/DELETE
        │              UserContractTest   → JSON Schema contract validation
        ├── post/      PostCrudTest       → CRUD completo com retry
        └── auth/      AuthSecurityTest   → 401 / 403 / 400 / 404

Execução Rápida

# Instalar dependências
mvn install -DskipTests

# Smoke tests (dev) – ~2 min
mvn test -Psmoke

# Regression completa (dev)
mvn test -Pregression

# Ambiente específico
mvn test -Phml -Dtags=smoke
mvn test -Pprod -Dtags=smoke

# Tag específica com threads
mvn test -Dtags=contract -Dthreads=8

# Relatório Allure local
mvn allure:serve

Injeção de Token

Prioridade Mecanismo Exemplo
1 System property -Dapi.token=eyJhb...
2 Env var (CI/CD) API_BEARER_TOKEN=eyJhb...
3 OAuth2 client_credentials Configurado em {env}.properties

Tags Disponíveis

Tag Descrição Quando usar
smoke Caminho crítico (~10 testes) Cada push / deploy
regression Suite completa Merge para main / nightly
contract JSON Schema validation Antes de releases
security Auth negativa, 401/403/400 Revisão de segurança

Feature Toggles (por ambiente)

Flag dev hml prod
feature.contract.testing
feature.performance.assertions
mock.enabled

Pipelines CI/CD

Push / PR  →  Validate  →  Smoke (paralelo)
                               │
                    (main / nightly)
                               ↓
                    Regression Matrix
                    [user] [post] [auth]
                               │
                               ↓
                    Allure Report → GitHub Pages
                               │
                    Falhou? → Slack Notification

Adicionar Novo Recurso

  1. Criar model em model/
  2. Criar builder em builder/ com Faker
  3. Adicionar cenários em factory/DataFactory
  4. Criar service em service/ estendendo os métodos HTTP
  5. Criar JSON Schemas em src/test/resources/schemas/
  6. Criar test class em tests/{recurso}/ estendendo BaseTest

Dependências Principais

Lib Versão Papel
RestAssured 5.4.0 HTTP client + assertions
JUnit 5 5.10.2 Test runner + parallelism
Allure JUnit5 2.27.0 Reporting
Jackson 2.17.0 JSON serialization
Lombok 1.18.32 Boilerplate elimination
JavaFaker 1.0.2 Dynamic test data
Log4j2 2.23.1 Structured logging
WireMock 3.5.4 Mock server
Owner 1.0.12 Type-safe config properties
AssertJ 3.25.3 Fluent assertions