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

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

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

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.

Avatar for Flávio Pimenta

Flávio Pimenta PRO

September 11, 2026

More Decks by Flávio Pimenta

Other Decks in Programming

Transcript

  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.