Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Testes em sistemas orientados a eventos — TDC P...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →

Testes em sistemas orientados a eventos — TDC Porto Alegre

Estratégias de teste para arquiteturas orientadas a eventos: mensageria, processamento assíncrono, idempotência e garantia de entrega. Apresentado no TDC Porto Alegre (2020) por Flávio Pimenta.

Flávio Pimenta PRO

September 11, 2026

Transcript

19 slides
  1. Agenda • Caso de uso: o problema! • Overview sobre

    arquitetura de eventos • Arquitetura proposta • Abordagem dos casos de teste
  2. Desejo do cliente: Desenvolver um processo de atualização de dados

    para o novo sistema de CRM que está entrando em produção com apenas 3 passos! 01 Extração 02 Envio 03 Consulta Status
  3. O que é um evento? TDC é um evento :p

    Em Arquitetura, um evento está relacionado à ações que geram mudança de estado e que afetam o negócio.
  4. Desejo do cliente: Desenvolver um processo de atualização de dados

    para o novo sistema de CRM que está entrando em produção com apenas 3 passos! 01 Extração 02 Envio 03 Consulta Status
  5. Arquitetura: Extração Características: • Ler de várias origens • Gravar

    em formato csv (requisito da API do SalesForce) • Limite de registros/tamanho por arquivo • Paginação • Execução paralelizada Texto
  6. Arquitetura: Envio Características: • Inicia com um evento indicando que

    há um arquivo novo • Dependência de entidades • Garantir entrega • Execução paralelizada, respeitando dependências Texto
  7. Arquitetura: Status Características: • Inicia com um evento contendo o

    lote de jobs a ser verificado • Busca status de cada job no SalesForce (API) usando “pooling” • Quando job possui status de concluído grava resultado. Texto
  8. Arquitetura: Controle Características: • Gera identificador do lote • Dispara

    mensagem que originará os envios • Dispara mensagem para a função de controle • Execução agendada Texto
  9. Tecnologias • Banco de dados relacional (engine PostgreSQL) • Linguagem:

    Python • File Storage com suporte a eventos (S3) • Serverless (lambda) • Custo: Menos de USD 1.00 / mês
  10. Testes unitários Como fazer um teste de unidade quando eu

    uso um serviço Cloud? Resposta: Use Mock!
  11. Testes de serviço Necessidade de escrever código integrando os serviços

    cloud para validar o uso dos mesmos. Exemplo: extração paginada. • Executo o método principal da classe de Extração com uma massa de dados de 10 registros e paginação = 3 registros/página • Espero 4 arquivos gerados sendo que 3 possuem 3 registros e 1 possui apenas 1 registro
  12. Testes End to End Como a “timeline” de execução é

    totalmente imprevisível, a única estratégia que adotamos até o momento foi a ideia de implementar “pooling” e verificar o status de cada etapa até que a verificação seja feita e o teste possa prosseguir.

More Decks by Flávio Pimenta

Other Decks in Programming