portfólio

Automação de regressão de billing (Oracle BRM)

Shell Script Oracle BRM SQL

Papel: SDET / engenheiro de automação de testes
Contexto: sistemas de billing e revenue management da Globo, via NTConsult
Período: set/2021 – out/2023

O problema

A plataforma de billing processa assinaturas, faturamento e eventos contábeis. O ciclo de regressão era o gargalo do processo de release: qualquer mudança numa regra de cobrança exigia revalidar os cenários de negócio que atravessam o catálogo de ofertas, as formas de pagamento, os ciclos de cobrança recorrente e a contabilidade.

Testar um sistema assim não é testar uma tela. É afirmar que, dada uma combinação de oferta, forma de pagamento e momento do ciclo de vida da assinatura, os lançamentos contábeis gerados são exatamente os esperados — nem um a mais, nem um a menos.

Como conduzi

Atuei na camada de automação de regressão da plataforma, em duas frentes.

Biblioteca de planos de teste

Planos declarativos descrevendo cenários de negócio ponta a ponta: contratação nova, upgrade e downgrade de oferta, troca de forma de pagamento, cancelamento, reativação, cobrança recorrente e provisionamento entre produtos. Cada plano é uma sequência de passos com asserções sobre o estado resultante — o cenário é descrito como dado, não escrito como script.

Biblioteca de funções de validação

As funções reutilizáveis que os planos consomem: validação de eventos contábeis, situação de fatura, histórico de assinatura, provisão para devedores duvidosos e parcelamento. É onde a regra de negócio de fato mora, e onde concentrei a maior parte do esforço de consolidação.

Como apoio: consultas SQL que sustentam a validação, massas de teste, templates de configuração multiambiente, testes unitários das próprias funções de validação e servidores de mock para simular integrações externas em cenários de erro.

Decisões técnicas

Regra de negócio centralizada num único arquivo. Variáveis de situação e regras que estavam espalhadas por planos individuais passaram para um arquivo central de regras de negócio. O ganho não é cosmético: quando uma situação muda no sistema, a correção acontece num lugar só, em vez de ser repetida plano a plano.

Constantes nomeadas no lugar de números mágicos. Códigos de evento contábil e de tipo de pagamento apareciam como literais soltos dentro das validações. Nomeá-los transformou diffs ilegíveis em diffs revisáveis.

Testei a própria ferramenta de teste. Escrevi testes unitários para as funções de validação. Uma suíte de regressão que ninguém valida é fonte de falsa confiança — um falso negativo numa função de validação esconde um defeito de produção por tempo indeterminado.

Tratei a mensagem de erro como interface. Quando a suíte roda de madrugada e falha, a mensagem é a única coisa que o time tem na manhã seguinte. Uma mensagem ruim transfere para a pessoa o trabalho de descobrir o que a suíte já sabia.

O que isso demonstra

  • Domínio de um sistema corporativo de billing complexo, incluindo seu modelo contábil
  • Automação em escala real e sustentada — contribuição contínua a um sistema vivo ao longo de todo o período, não um projeto de vitrine
  • Refatoração incremental de base legada sem interromper a operação
  • Preocupação com a manutenibilidade da própria automação, que é o problema que derruba a maioria das suítes de teste

Stack

  • Shell Script — orquestração e automação sobre o BRM
  • Oracle BRM — a plataforma de billing e revenue management sob teste
  • SQL — consultas de validação contra o modelo de dados contábil e de assinaturas
  • DSL proprietária de planos de teste — linguagem interna usada para escrever os planos declarativos
  • Mocks HTTP — servidores simulando integrações externas em cenários de erro