Barramento de integração para o Bank SOYUZ (AO): projeto e teste automático



É difícil superestimar a importância dos testes, especialmente quando se trata de uma plataforma de integração para a interação de sistemas de transporte de crédito. Neste artigo, queremos falar sobre como nossa equipe projetou esse ônibus pela primeira vez e, em seguida, lançou testes automáticos para ele.

O que é uma plataforma de integração e por que é necessária?

Em grandes sistemas corporativos, geralmente há problemas de interação entre subsistemas internos. Devido a intermináveis ​​conexões e solicitações, esse emaranhado ao longo do tempo se torna cada vez mais confuso e complicado. Torna-se difícil relaxar para mantê-lo e gerenciá-lo.

Cada subsistema tem seu próprio ciclo de lançamento: alguns são atualizados uma vez por ano e outros - uma vez por semana. Essas mudanças também precisam ser levadas em consideração e integradas à tela geral do sistema. Para fazer isso, você precisa de um intermediário que troque dados entre todos os subsistemas da empresa. Esse intermediário é a plataforma de integração.

Em busca de um artista para o seu desenvolvimento, o cliente preparou uma tarefa de teste que precisava ser implementada e protegida. Era uma descrição de tarefa bastante simples com vários sistemas selecionados: banco de dados, serviço, diretórios de arquivos etc. Em uma semana, foi necessário criar e demonstrar uma solução tolerante a falhas, além de descrever a plataforma de desenvolvimento. Na implementação de tais projetos, adquirimos experiência decente e, de acordo com os resultados da defesa, fomos escolhidos como executores.

Naquela época, na maioria dos casos, o cliente usava um esquema de integração ponto a ponto: cada sistema integrado a outro. Era inconveniente e difícil de manter. Temos três tarefas:

  1. substituir a integração existente por meio de uma plataforma de integração;
  2. integrar novos sistemas bancários;
  3. Automatize a troca de dados entre eles.

Depois de passar com êxito na tarefa de teste, iniciamos o projeto. Sua fase foi determinada da seguinte maneira:

  • realizar uma auditoria;
  • encontre funcionários de clientes que entendam o estado de destino dos processos de negócios (e não apenas o atual);
  • formular requisitos de negócios para sistemas de TI e fornecer um roteiro para a transição para o estado de destino dos processos de negócios.

Implementação


Para implementação, eles escolheram a plataforma de integração modular Red Hat JBoss Fuse.


Arquitetura de fusíveis do JBoss

Um pouco mais sobre as ferramentas básicas que estão prontas para uso:

O Apache Camel , construído em modelos de integração corporativa (EIP), fornece roteamento de mensagens, possui um grande número de adaptadores prontos para trabalhar com sistemas externos: bancos de dados, arquivos, intermediários de mensagens, serviço de diretório, correio etc.

O Apache ActiveMQ , que organiza a troca de mensagens, e também garante sua transmissão e armazenamento até que o assinante as recolha.

O próprio processo de integração (fluxo) é um conjunto de ações seqüenciais. Por exemplo: para receber uma mensagem do sistema de origem por meio de um adaptador desenvolvido / existente, converta os dados da mensagem, adicione, filtre e transmita ainda mais aos sistemas receptores por meio de seus adaptadores.


Processo de integração

Ao mesmo tempo, verificação dos dados, entrega garantida, tratamento de erros com a capacidade de coletar um sistema de monitoramento, informando os executores responsáveis ​​sobre erros, etc.

Exemplo


Tome o processo de emissão de empréstimos em um banco. Um cliente no banco da Internet preenche um aplicativo, envia os dados do formulário e aguarda o resultado. O que acontece dentro disso: através do restante da API fornecida ao banco da Internet, o barramento aceita a solicitação com os dados principais. Além disso, ele solicita informações adicionais sobre o cliente através da interface soap no sistema MDM, combina as informações recebidas em um conjunto comum e as transfere através da fila dedicada do ActiveMQ para o sistema RTDM para formular uma oferta dentro da estrutura dos produtos de empréstimo existentes. Em seguida, o resultado do RTDM é retornado em retorno, e o barramento transmite a oferta do cliente de volta ao banco da Internet.

Teste


Quando o barramento de integração passou para os testadores, inicialmente a questão do teste do produto foi decidida manualmente. No entanto, no processo, foi decidido automatizar todo o processo e criar uma plataforma de teste.

Escrevemos emuladores para todos os sistemas bancários. Os clientes nem sempre fornecem acesso para testes de dados e sistemas em funcionamento de uma só vez; portanto, os emuladores foram desenvolvidos para cada projeto separadamente. A complexidade deste trabalho é comparável ao desenvolvimento da própria solução de integração. A plataforma de teste tinha uma tarefa: coletar, implantar, executar o teste e enviar os resultados para o TestRail.

Criamos dois conjuntos de scripts que foram executados durante cada compilação (CI / CD). Segundo o commit, a montagem foi iniciada e implantada no estande. Após o procedimento de implantação, um script curto (teste de fumaça) foi executado, informando que nenhuma interação foi interrompida.

Estávamos perseguindo um cenário extenso para assembléias noturnas, o que nos deu uma resposta completa para a pergunta: o que há com o ônibus e como ele interage com sistemas externos? No relatório da manhã, vimos testes ou problemas bem-sucedidos que apareceram. No entanto, não automatizamos os testes da plataforma de integração com sistemas externos, pois é muito difícil verificar os resultados desses testes. Portanto, eles deixaram o teste manual: os funcionários do cliente realizaram testes de aceitação de seus sistemas e nosso especialista verificou por logs se as informações foram passadas corretamente.

Como resultado, foi possível obter 100% de automação de teste em emuladores. Ao atualizar um dos sistemas externos, o barramento assumiu a tarefa de manter a operacionalidade do processo de negócios e, portanto, foram feitas alterações diretamente nele. Isso permitiu que você teste rapidamente quaisquer alterações.

Em vez de uma conclusão


Após todas as etapas, nossa equipe construiu processos rápidos e transparentes com contratados e clientes, e os processos de desenvolvimento, teste, implementação e suporte continuaram com simplicidade. Como resultado, 12 processos de negócios foram automatizados, o que em sua essência combinou o trabalho dos principais sistemas do banco: ABS, MDM, processamento, RTDM, etc. Em tais projetos, sempre tentamos apenas com testes automatizados, praticamente sem envolver testadores funcionais. Isso reduz o custo final do desenvolvimento e integração do projeto, reduz o tempo de colocação no mercado e nivela o fator humano.

Alexander Sadykov, Chefe Adjunto do Departamento de Testes, Centro de Soluções de Software, Jet Infosystems

Pavel Ivanov, Líder da equipe de desenvolvimento, Centro de soluções de software, Jet Infosystems

Source: https://habr.com/ru/post/pt479316/


All Articles