O que é teste de SOA?
O Teste de SOA (Arquitetura Orientada a Serviços) é um Teste do estilo de arquitetura SOA no qual os componentes do aplicativo são projetados para se comunicar por meio de protocolos de comunicação, normalmente em uma rede.
Neste tutorial, você aprenderá-
- O que é SOA?
- O que é serviço?
- Teste SOA
- Estratégia para teste de SOA
- Métodos de teste SOA
- Desafios em testes de SOA
- Ferramentas de teste de SOA
- Casos de uso de teste de SOA
O que é SOA?
SOA é um método de integração de aplicativos e processos de negócios para atender às necessidades de negócios.
Em Engenharia de Software, SOA oferece agilidade e flexibilidade aos processos de negócios. As alterações no processo ou aplicativo podem ser direcionadas a um componente específico sem afetar todo o sistema.
Os desenvolvedores de software em SOA desenvolvem ou compram blocos de programas chamados SERVIÇOS.
O que é serviço?
- Os serviços podem ser uma unidade funcional de aplicativo ou processo de negócios, que pode ser reutilizada ou repetida por qualquer outro aplicativo ou processo.
(Por exemplo, na imagem acima, Payment Gateway é um serviço que pode ser reutilizado por qualquer site de e-commerce. Sempre que for necessário efetuar um pagamento, o site de e-commerce liga / Solicita o serviço de Payment Gateway. Após o pagamento ser feito em um gateway, uma resposta é enviada ao site de comércio eletrônico)
- Os serviços são fáceis de montar e fáceis de reconfigurar os componentes.
- Os serviços podem ser comparados a blocos de construção. Eles podem construir qualquer aplicativo necessário. Adicioná-los e removê-los do aplicativo ou processo de negócios é fácil.
- Os serviços são definidos mais pela função de negócios que desempenham, e não como blocos de código.
Serviços web
Os serviços da Web são componentes de aplicativos independentes, que estão disponíveis na web.
Eles podem ser publicados, encontrados e usados na web. Eles podem se comunicar pela internet.
- O Provedor de Serviços publica o serviço na Internet.
- O cliente procura um serviço da web específico no Registro de serviço da web
- Um URL e o WSDL para o serviço da web necessário são retornados.
>> Utilizando o WSDL e a URL, a comunicação entre o provedor de serviço e o solicitante ocorre por meio de mensagens SOAP. <<
- Quando um consumidor chama um serviço da 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 da web necessária.
- A resposta recebida do provedor é uma mensagem SOAP que será incorporada à resposta HTTP. Essa resposta HTTP é o formato de dados que pode ser compreendido pelo aplicativo consumidor.
Exemplo
A página inicial de um site e um mecanismo de pesquisa exibe boletins meteorológicos diários. Em vez de codificar toda a seção de boletins meteorológicos, um Serviço de boletins meteorológicos pode ser comprado de um fornecedor e integrado nas páginas.
Teste SOA
SOA consiste em várias tecnologias. Os aplicativos desenvolvidos com SOA têm vários serviços fracamente acoplados.
O teste de SOA deve se concentrar em 3 camadas de sistema
Camada de Serviços
Essa camada consiste em serviços, serviços expostos por um sistema derivado de funções de negócios.
Por exemplo -
Considere um site de bem-estar que consiste em
- Rastreador de peso
- Rastreador de açúcar no sangue
- Rastreador de pressão arterial
Os rastreadores exibem os respectivos dados e data em que foram inseridos. A camada de serviços consiste nos serviços que obtém os respectivos dados do banco de dados
- Serviço de monitoramento de peso
- Serviço de rastreador de açúcar no sangue
- Serviço de rastreador de pressão arterial
- Serviço de Login
Camada de Processo
A camada de processo consiste nos processos, conjunto de serviços que fazem parte de uma única funcionalidade.
Os processos podem ser uma parte da interface do usuário (por exemplo, um mecanismo de busca), uma parte de uma ferramenta ETL (para obter dados do banco de dados).
O foco principal nesta camada será nas interfaces do usuário e no processo.
A interface do usuário do rastreador de peso e sua integração com o banco de dados é o foco principal.
As funções abaixo serão levadas em consideração
- Adicionando novos dados
- Editando dados existentes
- Criando novo rastreador
- Excluindo dados
Camada do Consumidor
Esta camada é composta principalmente por interfaces de usuário.
Com base na camada, o teste de um aplicativo SOA é distribuído em três níveis.
- Nível de serviço
- Nível de interface
- Nível de ponta a ponta
- A abordagem de cima para baixo é usada para o projeto de teste.
- A abordagem Bottom Up é usada para a execução do teste.
Estratégia para teste de SOA
Abordagem de planejamento de teste,
- A arquitetura completa do aplicativo deve ser entendida pelos Testadores de SOA.
- A aplicação precisa ser dividida em serviços independentes (Serviço, que tem sua própria estrutura de solicitação e resposta e não depende de nenhum outro serviço para formar a resposta).
- A estrutura do aplicativo precisa ser reorganizada em três componentes - dados, serviços e aplicativos front-end.
- Todos os componentes precisam ser analisados cuidadosamente e os cenários de negócios devem ser marcados com giz.
- Os cenários de negócios devem ser classificados como cenários comuns e cenários específicos de aplicativos.
- Uma Matriz de Rastreabilidade deve ser preparada e todos os casos de teste devem ser rastreados para cenários de negócios.
Abordagem de execução de teste
- Cada componente do serviço deve ser testado.
- O teste de integração dos componentes do serviço deve ser feito para validar o fluxo de dados por meio dos serviços e a integridade dos dados.
- O teste de sistema do modelo completo deve ser feito para validar o fluxo de dados entre o aplicativo 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 baseados em cenários de negócios,
- Vários aspectos de negócios relacionados ao sistema devem ser analisados.
- Os cenários devem ser desenvolvidos com base na integração de
- Vários serviços da Web do aplicativo
- Serviços e aplicativos da Web.
- A configuração dos dados deve ser feita com base nos cenários acima.
- A configuração dos dados deve ser feita de forma a abranger também cenários de ponta a ponta.
2) Stubs
- Interfaces fictícias serão criadas para testar serviços.
- Várias entradas podem ser fornecidas por meio dessas interfaces e as saídas podem ser validadas.
- Quando um aplicativo usa uma interface para um serviço externo, que não está em teste (serviço de terceiros), um stub pode ser criado durante o Teste de Integração.
3) Teste de regressão
- O teste de regressão no aplicativo deve ser feito quando houver várias liberações para garantir a estabilidade e disponibilidade dos sistemas.
- Um conjunto abrangente de testes de regressão será criado cobrindo os serviços que formam uma parte importante do aplicativo.
- Este conjunto de testes pode ser reutilizado em várias versões do projeto.
4) Teste de Nível de Serviço
O Teste de Nível de Serviço inclui o teste do componente quanto à funcionalidade, segurança, desempenho e interoperabilidade.
Cada serviço deve ser testado de forma independente.
5) Teste Funcional
O teste funcional deve ser feito em cada serviço para
- Garanta que o serviço forneça a resposta certa para cada solicitação.
- Erros corretos são recebidos para solicitações com dados inválidos, dados incorretos, etc.
- Verifique cada solicitação e resposta para cada operação que o serviço deve realizar em tempo de execução.
- Valide as mensagens de falha quando ocorre um erro no servidor, cliente ou nível de rede.
- Valide se as respostas recebidas estão no formato correto.
- Valide se os dados recebidos na resposta correspondem aos dados solicitados.
6) Teste de Segurança
O teste de segurança do serviço da web é um aspecto importante durante o teste de nível de serviço do aplicativo SOA; isso garante a segurança da aplicação.
Os seguintes fatores precisam ser cobertos durante o teste:
- O Padrão da Indústria definido pelo teste WS-Security deve ser obedecido pelo Web Service.
- As medidas de segurança devem funcionar perfeitamente.
- Criptografia de dados e assinaturas digitais nos documentos
- Autenticação e autorização
- SQL Injection, Malware, XSS, CSRF e outras vulnerabilidades devem ser testadas no XML.
- Ataques de negação de serviço
7) Teste de Desempenho
O teste de desempenho do serviço precisa ser feito, pois os serviços são reutilizáveis e vários aplicativos podem estar usando o mesmo serviço.
Os seguintes fatores são considerados durante o teste:
- 8) O desempenho e a funcionalidade do serviço precisam ser testados sob carga pesada.
- O desempenho do serviço precisa ser comparado ao trabalhar individualmente e dentro do aplicativo, ele é acoplado.
- O teste de carga do serviço deve ser realizado
- para verificar o tempo de resposta
- para verificar se há gargalos
- para verificar a utilização de CPU e memória
- para prever escalabilidade
9) Teste de nível de integração
- O teste de nível de serviço garante o funcionamento adequado apenas dos serviços individualmente, não garante o funcionamento dos componentes acoplados.
- O Teste de Integração é feito com foco principalmente nas interfaces.
- Esta fase cobre todos os cenários de negócios possíveis.
- O teste Não Funcional do aplicativo deve ser feito mais uma vez nesta fase. Segurança, conformidade e testes de desempenho garantem a disponibilidade e estabilidade do sistema em todos os aspectos.
- Os protocolos de comunicação e rede devem ser testados para validar a consistência da comunicação de dados entre os serviços.
10) Teste de ponta a ponta
Esta fase garante que o aplicativo confirme os requisitos do negócio funcionalmente e não funcionalmente.
Os itens abaixo são garantidos para serem testados durante o teste de ponta a ponta
- Todos os serviços funcionando como esperado após a integração
- Manipulação de exceção
- Interface do usuário do aplicativo
- Fluxo de dados adequado por meio de todos os componentes
- Processo de negócio
Desafios em testes de SOA
- Falta de interfaces para serviços
- O processo de teste se estende por vários sistemas, criando assim necessidades de dados complexas
- O aplicativo é uma coleção de vários componentes que tendem a mudar. A necessidade de teste de regressão é mais frequente.
- Devido à arquitetura multicamadas, é difícil isolar defeitos.
- Como o serviço será usado em interfaces diferentes, é difícil prever a carga, tornando o planejamento do teste de desempenho complicado.
- SOA é uma coleção de tecnologias heterogêneas. O teste de um aplicativo SOA requer pessoas com diferentes conjuntos de habilidades que, por sua vez, aumentam os custos de planejamento e execução.
- Como o aplicativo é uma integração de vários serviços, os testes de segurança têm sua própria parcela de problemas. A validação da autenticação e autorização é muito difícil.
Ferramentas de teste de SOA
Existem muitas ferramentas de teste de SOA disponíveis no mercado para ajudar os testadores a testar os aplicativos de SOA. Aqui estão algumas das populares ferramentas de teste de SOA :
1) IU SOAP
"SOAP UI" é uma ferramenta de teste funcional de código aberto para serviços e teste de API.
- Aplicativo de desktop
- Suporta vários protocolos - SOAP, REST, HTTP, JMS, AMF, JDBC
- Os serviços da Web podem ser desenvolvidos, inspecionados e chamados.
- Também pode ser usado para teste de carga, teste de automação e teste de segurança
- Stubs podem ser criados por MockServices
- Solicitações e testes de serviço da web podem ser gerados automaticamente por meio de seu cliente de serviço da web.
- Ter ferramentas de relatórios integradas
- Desenvolvido por SmartBear
2) iTKO LISA
"LISA" é um conjunto de produtos que fornece uma solução de teste funcional para sistemas distribuídos como SOA.
- Também pode ser usado para regressão, integração, carga e teste de desempenho.
- Desenvolvido por iTKO (CA Technologies)
- Pode ser usado para projetar e executar testes.
3) Teste de serviço HP
"Service Test" é uma ferramenta de teste funcional, que oferece suporte a testes de IU e de serviços compartilhados
- Tanto o teste funcional quanto o de desempenho dos serviços podem ser feitos por um único script.
- Integrado com HP QC.
- A enorme quantidade de serviços e dados pode ser gerenciada.
- Oferece suporte a testes de interoperabilidade simulando ambientes de cliente JEE, AXIS e DotNet.
- Desenvolvido pela HP.
4) Teste Parasoft SOA
SOA Test é um conjunto de ferramentas de teste e análise desenvolvido para teste de aplicativos API e API.
- Suporta tecnologias de Web Services, REST, JSON, MQ, JMS, TIBCO, HTTP, XML.
- São possíveis testes funcionais, unitários, de integração, regressão, segurança, interoperabilidade, conformidade e desempenho.
- Os stubs podem ser criados usando Parasoft Virtualize, que são inteligentes do que SOAP UI.
- Desenvolvido por ParaSoft
Casos de uso de teste de SOA
Considere um site de comércio eletrônico, que contém as funções e subfunções abaixo:
processamento de pedido
FASE 1
Na primeira fase de teste de SOA, ou seja, fase de estratégia de teste, o aplicativo é dividido em serviços e funções de negócios.
Vamos considerar abaixo os Serviços do aplicativo.
- Criar pedido
- Verifique o status do cliente
- Alterar o status do pedido
- Verifique o status da ordem
- Verificar estoque
As funções de negócios são iguais às funções do site.
Nota: O documento de estratégia de teste conteria a lista do serviço e as funções que devem ser testadas.
FASE 2
Fase de planejamento de teste. Os 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 de negócios e fluxo.
Abaixo estão os exemplos de casos de teste
- Crie um pedido com o usuário ativo.
- Crie um pedido com um usuário inativo.
- Crie um pedido com o produto disponível com quantidade do pedido
- Crie um pedido com o produto disponível com a quantidade do pedido> quantidade disponível.
- Crie um pedido com vários itens
- Cancele um pedido completamente.
- Cancele o pedido parcialmente.
- Nível de integração. Casos de teste são escritos para integração de banco de dados e interface de 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 é inferior ao valor do pedido.
- Verifique se o status do pedido exibido na IU é o mesmo do banco de dados.
- Cancele o pedido e verifique se o status do pedido foi modificado no banco de dados.
- Para o primeiro pagamento, verifique se os detalhes do pagamento inseridos na IU estão 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 de pedido |
---|---|---|
1 | Criar pedido. Nº de itens = 1 | Quantidade no pedido |
2 | Criar pedido. Nº de itens> 1 | Quantidade no pedido |
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 de produto = 0 |
10 | Verifique a disponibilidade do produto | Id do produto = inválido |
FASE 3 - Execução do Teste
A execução do teste usa uma abordagem ascendente, ou seja, o teste de nível de serviço é feito primeiro, depois o nível de integração e, por último, o teste de ponta a ponta.
1) Nível de serviço
Vamos considerar que a ferramenta Soapui é considerada para testar o aplicativo.
O WSDL e o URL são navegados na janela de teste do SOAP.
A solicitação de cada serviço será exibida na janela de solicitação.
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º de itens = 1 Quantidade no pedido |
|
|
Criar Order.No. of Items> 1Quantity on Order |
|
|
Crie OrderNo. of Items = 1Quantity on Order> Quantity on db |
|
|
Verifique o status do pedido; Status no banco de dados = Ativo |
|
|
Verifique o status do pedido; Status no banco de dados = Enviado |
|
|
Verifique o status do pedido, id do pedido = inválido |
|
|
Verifique a disponibilidade do produto; Quantidade do produto> 0 |
|
|
Verifique a disponibilidade do produto; Quantidade do produto = 0 |
|
|
Verifique a disponibilidade do produto Id do produto = inválido |
|
|
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.
- Vai fazer um pedido.
- Seleciona um produto e quantidade válidos e salva o pedido.
- Uma mensagem dizendo que o pedido foi feito com sucesso deve ser exibida.
- Um usuário abre o banco de dados e verifica se os detalhes do pedido são iguais aos 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 um site.
- Vai fazer um pedido.
- Pergunta sobre um produto e quantidade válidos os adiciona ao carrinho.
- Outros produtos válidos são adicionados com quantidades válidas e o pedido é salvo. O pagamento é feito através de uma nova forma de pagamento e o pedido é feito.
- Uma mensagem dizendo "Pedido feito com sucesso" deve ser exibida.
- Um testador deve validar se todo o fluxo é feito sem distorção de dados.
Conclusão:
Ao esboçar a estratégia certa de teste, recursos, ferramentas e conformidade para fornecer um bom serviço, o teste de SOA pode fornecer aplicativos testados de forma completa e perfeita.