O que é teste SOA? Tutorial com exemplo

⚡ Resumo Inteligente

Os testes SOA validam uma arquitetura orientada a serviços. ArchiArquitetura na qual serviços fracamente acoplados trocam mensagens através de uma rede, verificando cada serviço individualmente, as integrações entre eles e o fluxo de negócios completo de ponta a ponta.

  • 🔘 Architextura: Serviços são funções de negócios reutilizáveis ​​que qualquer aplicativo pode chamar, montar ou substituir de forma independente.
  • ☑️ Camadas: Os testes têm como alvo a camada de serviços, a camada de processos e a camada de consumo da aplicação.
  • Níveis: Os testes de nível de serviço, de nível de interface e de ponta a ponta, em conjunto, abrangem a conformidade.tracts, fluxo de dados e cenários de negócios.
  • 🧪 Métodos: Testes de dados orientados a cenários, protótipos, verificações funcionais, de segurança, de desempenho, de integração e de regressão são aplicados em todos os níveis.
  • 🛠️ Ferramentas: SoapUIVirtualização de serviços da Broadcom, OpenText UFT O One e o Parasoft SOAtest abrangem testes funcionais, virtuais e de carga.
  • ⚠️ desafios: Interfaces ausentes, isolamento de defeitos em múltiplas camadas, carga imprevisível e tecnologias heterogêneas aumentam o custo do planejamento.

Teste SOA

O que é teste SOA?

SOA (Orientado a Serviços Archi(textura) Testando É o teste do estilo arquitetônico SOA, no qual os componentes do aplicativo são projetados para se comunicar por meio de protocolos de comunicação, normalmente através de uma rede.

O que é SOA?

SOA é um método de integração de aplicativos e processos de negócios para atender às necessidades de negócios.

In Engenharia de SoftwareA Arquitetura Orientada a Serviços (SOA) proporciona agilidade e flexibilidade aos processos de negócios. Uma alteração em um processo ou aplicativo pode ser direcionada a um componente específico sem afetar todo o sistema.

Os desenvolvedores de software que trabalham em SOA desenvolvem ou compram partes de programas chamadas Serviços.

O que é Serviço?

O diagrama abaixo mostra um gateway de pagamento publicado como um serviço que vários sites de comércio eletrônico podem utilizar.

Gateway de pagamento publicado como um serviço SOA reutilizável, chamado por uma aplicação de comércio eletrônico.

  • Um serviço pode ser uma unidade funcional de uma aplicação ou processo de negócio, que pode ser reutilizada ou repetida por qualquer outra aplicação ou processo. (Por exemplo, na imagem acima, o Gateway de Pagamento é um serviço que pode ser reutilizado por qualquer site de comércio eletrônico. Sempre que um pagamento precisa ser feito, o site de comércio eletrônico chama ou solicita o serviço de Gateway de Pagamento. Após a conclusão do pagamento no gateway, uma resposta é enviada de volta para o site de comércio eletrônico.)
  • Os serviços são fáceis de montar e reconfigurar componentes.
  • Os serviços podem ser comparados a blocos de construção. Eles podem construir qualquer aplicação necessária, e adicioná-los ou removê-los da aplicação ou do processo de negócios é fácil.
  • Os serviços são definidos mais pela função comercial que desempenham do que como blocos de código.

Serviços web

A maioria dos serviços SOA são expostos como serviços web, portanto, vale a pena definir a mecânica de uma chamada de serviço web antes das camadas de teste.

Serviço web que atua como um componente de aplicação independente disponível na web.

Serviços Web São componentes de aplicativos independentes que estão disponíveis na web.

Eles podem ser publicados, encontrados e usados ​​na web, e se comunicam pela internet. A sequência abaixo mostra como um provedor, um registro e um consumidor interagem.

Publicar, localizar e vincular sequências entre um provedor de serviços, um registro de serviços web e um consumidor.

  • O Provedor de Serviços publica o serviço na Internet.
  • O cliente pesquisa um serviço web específico no Registro de Serviços Web.
  • A URL e wsdl Os dados para o serviço web necessário são retornados. Usando o WSDL e o URLA comunicação entre o provedor de serviços e o solicitante ocorre por meio de mensagens SOAP.
  • Quando um consumidor acessa um serviço web, uma conexão HTTP é estabelecida com o provedor.
  • Uma mensagem SOAP é criada para instruir o provedor a invocar a lógica de serviço web necessária.
  • A resposta recebida do provedor é uma mensagem SOAP incorporada na resposta HTTP. Essa resposta HTTP é o formato de dados compreensível pela aplicação consumidora.

Exemplo

A captura de tela abaixo mostra uma previsão do tempo fornecida por um serviço externo e incorporada na página inicial de um mecanismo de busca.

Serviço de previsão do tempo adquirido de um fornecedor e incorporado à página inicial de um site.

A página inicial de um site e um mecanismo de busca exibem uma previsão do tempo diária. Em vez de programar a seção de previsão do tempo do zero, um serviço de previsão do tempo pode ser adquirido de um fornecedor e integrado às páginas.

Camadas de teste SOA

A SOA consiste em várias tecnologias, e os aplicativos construídos usando SOA possuem vários serviços que são fracamente acoplados. O diagrama abaixo mapeia as três camadas que um plano de teste deve abranger.

Três camadas de teste SOA empilhadas como camada de serviços, camada de processos e camada de consumidores.

Os testes de SOA devem se concentrar em 3 camadas do sistema.

Camada de Serviços

Esta camada consiste nos serviços expostos por um sistema, derivados de funções de negócio.

Por exemplo, considere um site de bem-estar que consiste em:

  • Peso Tracker
  • Açúcar Sanguíneo Tracker
  • Pressão arterial Tracker

TracOs servidores exibem os respectivos dados e a data em que foram inseridos. A camada de serviços consiste nos serviços que obtêm os respectivos dados do banco de dados:

  • Peso Tracserviço ker
  • Açúcar Sanguíneo Tracserviço ker
  • Pressão arterial Tracserviço ker
  • Serviço de login

Camada de Processo

A camada de processos consiste nos processos, o conjunto de serviços que fazem parte de uma única funcionalidade.

Os processos podem fazer parte de uma interface de usuário (por exemplo, um mecanismo de busca) ou de uma ferramenta ETL que extrai dados do banco de dados.

O foco principal nesta camada está nas interfaces e processos do usuário. A interface do usuário do peso. tracO foco principal é o ker e sua integração com o banco de dados.

As seguintes funções devem ser consideradas:

  • Adicionando novos dados
  • Editando dados existentes
  • Criando um novo tracker
  • Excluindo dados

Camada do Consumidor

Esta camada é composta principalmente por interfaces de usuário, como ilustra a tela abaixo.

Interface de usuário da camada de consumo do site de bem-estar que acessa a camada subjacente. tracserviços ker

Com base nessas camadas, o teste de uma aplicação SOA é distribuído em três níveis:

  • Nível de serviço
  • Nível de interface
  • Nível de ponta a ponta

As duas abordagens diferem: uma abordagem de cima para baixo é usada para o projeto de testes, enquanto uma abordagem de baixo para cima é usada para a execução de testes.

Estratégia para testes SOA

Abordagem de planejamento de testes

  • Os testadores de SOA devem compreender a arquitetura completa da aplicação.
  • A aplicação precisa ser dividida em serviços independentes (um serviço que possui sua própria estrutura de requisição e resposta e não depende de nenhum outro serviço para formar uma resposta).
  • A estrutura da aplicação precisa ser reorganizada em três componentes: dados, serviços e aplicações front-end.
  • Todos os componentes precisam ser cuidadosamente analisados ​​e cenários de negócios devem ser elaborados.
  • Os cenários de negócios devem ser classificados como cenários comuns e cenários específicos da aplicação.
  • A TracMatriz de Habilidades devem ser preparados, e todos os casos de teste devem ser tracadaptado a cenários de negócios.

Abordagem de execução de teste

  • Cada componente de serviço deve ser testado.
  • Teste de integração dos componentes de serviço deve ser feito para validar o fluxo de dados através dos serviços e a integridade dos dados.
  • Teste do sistema É necessário realizar uma simulação completa do modelo para validar o fluxo de dados entre a aplicação front-end e o banco de dados.
  • Teste de Desempenho deve ser feito para ajuste fino e desempenho ideal.

Métodos de teste SOA

1) Testes baseados em dados e orientados por cenários de negócios

  • Diversos aspectos comerciais relacionados ao sistema devem ser analisados.
  • Os cenários devem ser desenvolvidos com base na integração dos diversos serviços web da aplicação, e dos serviços web com a aplicação.
  • A configuração dos dados deve ser feita com base nos cenários acima.
  • A configuração dos dados também deve abranger cenários de ponta a ponta.

2) Esboços

  • Interfaces fictícias são criadas para testar serviços.
  • Várias entradas podem ser fornecidas através dessas interfaces e as saídas podem ser validadas.
  • Quando um aplicativo usa uma interface para um serviço externo que não está sendo testado (um serviço de terceiros), um stub pode ser criado durante o teste de integração.

3) Teste de regressão

  • Teste de regressão A atualização do aplicativo deve ser feita quando houver várias versões, para garantir a estabilidade e a disponibilidade dos sistemas.
  • Será criado um conjunto abrangente de testes de regressão cobrindo os serviços que constituem uma parte importante da aplicação.
  • Este conjunto de testes pode ser reutilizado em várias versões do projeto.

4) Teste de nível de serviço

Os testes de nível de serviço incluem testar o componente quanto à funcionalidade, segurança, desempenho e interoperabilidade. Cada serviço precisa ser testado individualmente primeiro.

5) Teste Funcional

Teste funcional deve ser feito em cada serviço para:

  • Garantir que o serviço forneça a resposta correta para cada solicitação.
  • Garantir que os erros corretos sejam recebidos para solicitações com dados inválidos ou incorretos.
  • Verificar cada solicitação e resposta para cada operação que o serviço precisa executar em tempo de execução.
  • Valide as mensagens de falha quando ocorrer um erro no servidor, no cliente ou na rede.
  • Valide se as respostas recebidas estão no formato correto.
  • Verifique se os dados recebidos na resposta correspondem aos dados solicitados.

6) Teste de segurança

Os testes de segurança do serviço web são um aspecto importante durante os testes de nível de serviço da aplicação SOA, pois garantem a segurança da aplicação.

Os seguintes fatores precisam ser cobertos durante o teste:

  • O serviço web deve seguir o padrão da indústria definido pelo WS-Security.
  • As medidas de segurança devem funcionar perfeitamente.
  • Criptografia de dados e assinaturas digitais nos documentos.
  • Autenticação e autorização.
  • Injeção de SQL, malware, XSS, CSRF e outras vulnerabilidades serão testadas no XML.
  • Ataques de negação de serviço.

7) Teste de desempenho

É necessário realizar testes de desempenho do serviço, pois os serviços são reutilizáveis ​​e várias aplicações podem estar utilizando o mesmo serviço.

Os seguintes fatores são considerados durante o teste:

  • O desempenho e a funcionalidade do serviço precisam ser testados sob carga pesada.
  • O desempenho do serviço precisa ser comparado quando ele funciona individualmente e quando está integrado à aplicação.
  • Teste de carga Testes de desempenho do serviço devem ser realizados para verificar o tempo de resposta, identificar gargalos, verificar a utilização da CPU e da memória e prever a escalabilidade.

8) Teste de nível de integração

  • Os testes de nível de serviço garantem o funcionamento adequado dos serviços individualmente; não garantem o funcionamento dos componentes acoplados.
  • Os testes de integração são realizados com foco principal em: interfaces de.
  • Esta fase cobre todos os cenários de negócios possíveis.
  • Nesta fase, devem ser realizados mais um teste não funcional da aplicação. Os testes de segurança, conformidade e desempenho garantem a disponibilidade e a estabilidade do sistema em todos os seus aspectos.
  • Os protocolos de comunicação e de rede deverão ser testados para validar a consistência da comunicação de dados entre os serviços.

9) Teste de ponta a ponta

Esta fase garante que a aplicação esteja em conformidade com os requisitos de negócio, tanto funcionais quanto não funcionais.

Os itens abaixo serão testados durante o período de teste. teste de ponta a ponta:

  • Todos os serviços funcionando conforme esperado após a integração
  • Manipulação de exceção
  • Interface do usuário do aplicativo
  • Fluxo de dados adequado através de todos os componentes
  • Processo de negócio

Desafios nos testes de SOA

Aplicar esses métodos raramente é simples, e as dificuldades descritas abaixo são recorrentes em quase todos os programas de SOA (Avaliação Orientada a Serviços).

  • Falta de interfaces para serviços.
  • O processo de teste abrange vários sistemas, o que cria necessidades complexas de dados.
  • A aplicação é uma coleção de vários componentes que tendem a mudar, portanto a necessidade de testes de regressão é mais frequente.
  • Devido à arquitetura multicamadas, é difícil isolar os defeitos.
  • Como um serviço é utilizado por diferentes interfaces, a carga é difícil de prever, o que torna o planejamento de testes de desempenho complexo.
  • A Arquitetura Orientada a Serviços (SOA) é um conjunto de tecnologias heterogêneas. Testar uma aplicação SOA exige pessoas com diferentes conjuntos de habilidades, o que, por sua vez, aumenta os custos de planejamento e execução.
  • Como o aplicativo integra vários serviços, os testes de segurança apresentam seus próprios desafios. Validar a autenticação e a autorização é difícil.

Ferramentas de teste SOA

Existem muitas ferramentas de teste SOA disponíveis no mercado para auxiliar os testadores na avaliação de aplicações SOA. Aqui estão algumas das ferramentas de teste SOA mais populares.

1) SoapUI

SoapUI é uma ferramenta de teste funcional de código aberto para serviços e Teste de API.

  • Aplicativo de desktop
  • Suporta múltiplos protocolos — SOAP, REST, HTTP, JMS, AMF, JDBC
  • Os serviços web podem ser desenvolvidos, inspecionados e invocados.
  • Também pode ser usado para testes de carga. Teste de automaçãoe testes de segurança
  • Stubs podem ser criados por MockServices
  • As solicitações e os testes de serviços web podem ser gerados automaticamente por meio de seu cliente de serviço web.
  • Possui ferramentas de relatório integradas
  • Desenvolvido pela SmartBear, que envia ambos os produtos. de código aberto SoapUI distribuição e comercialização ReadyAPI edição

2) Virtualização de serviços da Broadcom (anteriormente iTKO LISA)

LISA é um conjunto de produtos que oferece uma solução de teste funcional para sistemas distribuídos, como SOA. O produto passou da iTKO para a CA Technologies e hoje é comercializado como Broadcom Service Virtualization.

  • Também pode ser usado para testes de regressão, integração, carga e desempenho.
  • Pode ser usado para projetar e executar testes.

3) UFT Um (anteriormente HP Service Test)

O Service Test é uma ferramenta de teste funcional que oferece suporte a testes de interface do usuário e de serviços compartilhados. Sua funcionalidade de teste de API foi incorporada ao Unified Functional Testing, agora comercializado pela [nome da empresa/organização]. OpenText as UFT Um.

  • É possível realizar testes funcionais e de desempenho de serviços com um único script.
  • Integrado ao Quality Center, agora vendido como OpenText ALM / Quality Center.
  • É possível gerenciar uma quantidade enorme de serviços e dados.
  • Suporta testes de interoperabilidade simulando ambientes de clientes JEE, AXIS e DotNet.

4) Teste SOA da Parasoft

O Parasoft SOAtest é um conjunto de ferramentas de teste e análise desenvolvido para testes de API e aplicações orientadas a API.

  • Suporta serviços web, REST, JSON, MQ, JMS, TIBCO, HTTP e tecnologias XML.
  • São possíveis testes funcionais, de unidade, de integração, de regressão, de segurança, de interoperabilidade, de conformidade e de desempenho.
  • É possível criar stubs usando Virtualização Parasoft, que são mais capazes do que SoapUI Serviços simulados.

Casos de uso de teste SOA

O exemplo prático abaixo aplica a estratégia, os métodos e as ferramentas acima a um único site de comércio eletrônico, fase por fase.

Considere um site de comércio eletrônico que contenha as funções e subfunções abaixo.

processamento de pedido

O gráfico abaixo divide o processamento de pedidos nas subfunções que se tornam serviços.

O processamento de pedidos é dividido em subfunções, como criar pedido, verificar estoque e alterar o status do pedido.

FASE 1

Na primeira fase de testes de SOA, a fase de estratégia de testes, a aplicação é dividida em serviços e funções de negócio.

Vamos analisar os serviços listados abaixo no aplicativo.

  • Criar pedido
  • Verifique o status do cliente
  • Alterar status do pedido
  • Verificar o estado do pedido
  • Verificar estoque

As funções comerciais são as mesmas que as funções do site.

Nota: O documento de estratégia de testes conterá a lista dos serviços e das funções que devem ser testadas.

FASE 2

Esta é a fase de planejamento do teste. Casos de teste são escritos para cada nível.

Nível de ponta a ponta. Os casos de teste são escritos para cada caso de uso e fluxo de negócio. Abaixo estão exemplos de casos de teste.

  • Criar um pedido com um usuário ativo.
  • Crie um pedido com um usuário inativo.
  • Crie um pedido com um produto disponível, cuja quantidade seja inferior à quantidade disponível.
  • Crie um pedido com um produto disponível, cuja quantidade seja maior que a quantidade disponível.
  • Criar um pedido com vários itens.
  • Cancele um pedido completamente.
  • Cancelar um pedido parcialmente.

Nível de integração. Os casos de teste são elaborados para a integração do banco de dados e da interface do usuário. Abaixo estão exemplos de casos de teste.

  • Crie um novo pedido com um único item. Verifique se o pedido foi criado no banco de dados.
  • Crie um novo pedido com um único item. Verifique se o preço calculado para o pedido está correto.
  • Crie um novo pedido com um único item. Verifique se a quantidade do produto disponível foi reduzida pelo valor do pedido.
  • Verifique se o status do pedido exibido na interface do usuário é o mesmo que o registrado no banco de dados.
  • Cancele o pedido e verifique se o status do pedido foi modificado no banco de dados.
  • Para pagamentos realizados pela primeira vez, verifique se os dados de pagamento inseridos na interface do usuário foram salvos no banco de dados.
  • Para devolver pagamentos, verifique se os detalhes do pagamento no banco de dados são exibidos na IU.

Nível de serviço. Cada serviço é testado para todas as condições de dados. Abaixo estão alguns exemplos.

Não. Detalhes do pedido Condição do pedido
1 Criar pedido. Nº de itens = 1 Quantidade no pedido < Quantidade no banco de dados
2 Criar pedido. Nº de itens > 1 Quantidade em pedido < Quantidade no banco de dados
3 Criar pedido. Nº de itens = 1 Quantidade no pedido > Quantidade no banco de dados
4 Verifique o status da ordem Status no banco de dados = Ativo
5 Verifique o status da ordem Status no banco de dados = Enviado
6 Verifique o status da ordem Status no banco de dados = Cancelado
7 Verifique o status da ordem ID do pedido = inválido
8 Verifique a disponibilidade do produto Quantidade de produto >0
9 Verifique a disponibilidade do produto Quantidade do produto =0
10 Verifique a disponibilidade do produto ID do produto = inválido

FASE 3 — Execução de Testes

A execução dos testes utiliza uma abordagem de baixo para cima: primeiro são realizados os testes em nível de serviço, depois os testes em nível de integração e, por último, os testes de ponta a ponta.

1) Nível de serviço

Vamos considerar que o SoapUI A ferramenta é usada para testar a aplicação. O WSDL e URL são navegados para a janela de teste de SoapUIE a solicitação para cada serviço é exibida na janela de solicitações. Ao modificar os dados de acordo com os casos de teste de nível de serviço, as solicitações são criadas para cada caso de teste.

Caso de teste SOLICITAÇÃO Resposta esperada
Criar pedido. Número de itens = 1, Quantidade no pedido < Quantidade no banco de dados x2 2 o3251 Bem-sucedido
Criar pedido. Número de itens > 1, Quantidade no pedido < Quantidade no banco de dados y1 1 y2 3 o3251 Bem-sucedido
Criar pedido. Número de itens = 1, Quantidade no pedido > Quantidade no banco de dados x23 200 nulo Mal sucedido
Verificar o status do pedido. Status no banco de dados = Ativo o9876 Ativo Bem-sucedido
Verifique o status do pedido. Status no banco de dados = Enviado o9656 Enviado Bem-sucedido
Verificar status do pedido. ID do pedido = Inválido y5686 nulo Sem sucesso
Verificar disponibilidade do produto. Quantidade do produto >0 d34 34 sim Bem-sucedido
Verificar disponibilidade do produto. Quantidade do produto = 0 34 0 não Bem-sucedido
Verificar disponibilidade do produto. ID do produto = inválido sder Mal sucedido

2) Nível de integração

Os casos de teste de nível de integração são executados na interface do usuário e no banco de dados. Crie um pedido com um único item:

  • Um usuário abre o site.
  • O usuário vai fazer um pedido.
  • O usuário seleciona um produto e uma quantidade válidos e salva o pedido.
  • Deverá ser exibida uma mensagem informando que o pedido foi realizado com sucesso.
  • O usuário acessa o banco de dados e verifica se os detalhes do pedido são os mesmos que os inseridos no site.

3) Nível de ponta a ponta

Os fluxos de negócios e casos de uso são executados na interface do usuário. Crie um pedido com vários itens:

  • Um usuário abre o site.
  • O usuário vai fazer um pedido.
  • O usuário consulta sobre um produto e quantidade válidos e os adiciona ao carrinho.
  • Outros produtos válidos são adicionados com as quantidades corretas e o pedido é salvo. O pagamento é feito através de um novo método de pagamento e o pedido é finalizado.
  • Uma mensagem dizendo “Pedido realizado com sucesso” deverá ser exibida.
  • O testador deve validar se todo o fluxo é concluído sem distorção dos dados.

Perguntas Frequentes

Os níveis são os mesmos, mas os serviços SOA são mais grosseiros e geralmente roteados por meio de um barramento de serviços corporativo (ESB), portanto, os testes de integração têm como alvo o barramento. Os microsserviços são mais granulares e podem ser implantados independentemente, o que desloca a ênfase para a configuração.tract e testes de resiliência.

ComtracO teste t verifica se um provedor ainda respeita o formato de solicitação e resposta que seus consumidores esperam, geralmente comparando-o com o WSDL ou o esquema. Ele se situa entre o nível de serviço e o nível de integração e detecta alterações que causam problemas antes da execução completa da integração.

Um stub escrito manualmente é suficiente para uma resposta fixa. A virtualização justifica o custo da licença quando a dependência é medida, limitada por taxa ou com estado, pois reproduz latência realista, códigos de erro e variações de dados que um stub estático não consegue reproduzir.

Sim. As camadas e os níveis são independentes de protocolo. Os serviços SOAP são validados com base no WSDL e nas regras WS-Security, enquanto os serviços REST são validados com base em uma definição OpenAPI, códigos de status e autenticação baseada em token. A maioria dos conjuntos de ferramentas lida com ambos.

Os modelos de aprendizado de máquina geram cargas úteis de requisição a partir de um esquema, classificam os serviços por histórico de defeitos para que os conjuntos de regressão executem primeiro os mais arriscados e agrupam respostas de erro em diferentes camadas para restringir a origem de uma falha em uma arquitetura multicamadas.

O Copilot elabora payloads de requisição a partir de um WSDL ou esquema, escreve código de asserção, cria serviços simulados e gera etapas de pipeline. Um testador ainda precisa fornecer as regras de negócio, as condições de dados negativas e as mensagens de falha esperadas que o modelo não consegue inferir.

Code A cobertura raramente está disponível em serviços heterogêneos, portanto, as equipes medem a cobertura operacional (todas as operações executadas), a cobertura de mensagens (cada caminho de falha e sucesso) e a cobertura de cenários de negócios. traced através da matriz construída durante o planejamento do teste.

Ler payloads WSDL, XSD e XML ou JSON, escrever SQL para verificar dados em repouso, trabalhar confortavelmente com um cliente de API e compreender o middleware de mensagens em uso. Conhecimentos básicos de script são úteis, pois a maioria dos conjuntos de ferramentas acaba sendo automatizada.

Resuma esta postagem com: