O que é teste SOA? Tutorial com exemplo
O que é teste SOA?
SOA (Orientado a Serviços Archi(O teste de arquitetura é um 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 em 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.
Na Engenharia de Software, SOA proporciona agilidade e flexibilidade aos processos de negócios. As alterações no processo ou aplicação 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, 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 liga/solicita o serviço Gateway de pagamento. 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 reconfigurar componentes.
- Os serviços podem ser comparados a blocos de construção. Eles podem construir qualquer aplicativo necessário. É fácil adicioná-los e removê-los do aplicativo ou processo de negócios.
- Os serviços são definidos mais pela função de negócios que desempenham do que por blocos de código.
Serviços web
Os serviços da Web são componentes de aplicativos independentes, 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 web específico no Registro de Serviços Web
- Uma URL e o WSDL do serviço da web necessário são retornados. Utilizando o WSDL e a URL, a comunicação entre o provedor de serviços e o solicitante acontece através de mensagens SOAP.
- Quando um consumidor chama um serviço web, uma conexão HTTP será 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. Esta resposta HTTP é o formato de dados compreensível pelo aplicativo consumidor.
Exemplo
A página inicial de um site e um mecanismo de pesquisa exibem boletins meteorológicos diários. Em vez de codificar toda a seção do boletim meteorológico, um serviço de boletim meteorológico pode ser adquirido de um fornecedor e integrado às páginas.
Teste SOA
SOA consiste em várias tecnologias. Os aplicativos construídos usando SOA possuem vários serviços que são fracamente acoplados.
O teste SOA deve se concentrar em 3 camadas do sistema
Camada de Serviços
Esta camada consiste nos 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
- Blood Pressure Tracker
Os rastreadores 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 –
- 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 fazer parte da interface do usuário (por exemplo, um mecanismo de pesquisa), parte de uma ferramenta ETL (para obter dados do banco de dados).
O foco principal nesta camada estará nas interfaces e processos do usuário.
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 compreende principalmente interfaces de usuário.
Com base na camada, 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
- A abordagem Top Down é usada para design de teste.
- A abordagem Bottom Up é usada para execução de teste.
Estratégia para testes SOA
Abordagem de planejamento de teste,
- A arquitetura completa da aplicação deve ser compreendida pelos testadores SOA.
- A aplicação precisa ser dividida em serviços independentes (Serviço, que possui estrutura própria de solicitação e resposta e não depende de nenhum outro serviço para formar 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 traçados.
- Os cenários de negócios devem ser classificados como cenários comuns e cenários específicos de aplicação.
- A Matriz de rastreabilidade devem ser preparados e todos os casos de teste devem ser atribuídos 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 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 Web da aplicação
- 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 modo a cobrir também os cenários de ponta a ponta.
2) Esboços
- Interfaces fictícias serão criadas para testar serviços.
- Várias entradas podem ser fornecidas através dessas interfaces e as saídas podem ser validadas.
- Quando uma aplicação utiliza 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
- Teste de regressão na aplicação deve ser feito quando houver múltiplos lançamentos para garantir a estabilidade e 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
O teste de nível de serviço inclui testar o componente quanto à funcionalidade, segurança, desempenho e interoperabilidade.
Todo e qualquer serviço precisa primeiro ser testado de forma independente.
5) Teste Funcional
O teste funcional deve ser feito em cada serviço para
- Certifique-se de que o serviço forneça a resposta correta 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 ocorrer um erro no nível do servidor, cliente ou 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 web é um aspecto importante durante o teste de nível de serviço da aplicação 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 pelos testes WS-Security deve ser respeitado pelo serviço Web.
- As medidas de segurança devem funcionar perfeitamente.
- Criptografia de dados e Digiassinaturas tal 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:
- 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 da aplicação ao qual está 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 da CPU e da memória
- para prever escalabilidade
8) 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 focando principalmente nas interfaces.
- Esta fase cobre todos os cenários de negócios possíveis.
- Os testes não funcionais da aplicação deverão ser feitos 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 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 o aplicativo atenda aos requisitos de negócios tanto funcional quanto não funcionalmente.
Os itens abaixo são garantidos para serem testados durante o 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 SOA
- Falta de interfaces para serviços
- O processo de teste abrange vários sistemas, criando assim necessidades complexas de dados
- O aplicativo é uma coleção de vários componentes que tende a mudar. A necessidade de Testes 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 complicado o planejamento dos testes de desempenho.
- SOA é uma coleção de tecnologias heterogêneas. O teste de uma aplicação SOA requer pessoas com diferentes conjuntos de habilidades, o que por sua vez aumenta 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 cota de problemas. A validação da autenticação e autorização é bastante difícil.
Ferramentas de teste SOA
Existem muitas ferramentas de teste SOA disponíveis no mercado para ajudar os testadores a testar aplicativos SOA. Aqui estão alguns dos populares Ferramentas de teste 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 invocados.
- Também pode ser usado para testes de carga, Teste de automaçãoe testes de segurança
- Stubs podem ser criados por MockServices
- Solicitações e testes de serviços web podem ser gerados automaticamente por meio de seu cliente de serviços web.
- Tenha 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 testes de regressão, integração, carga e 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 UI e serviços compartilhados
- O teste funcional e de desempenho dos serviços pode ser feito por um único script.
- Integrado com HP QC.
- A enorme quantidade de serviços e dados pode ser gerenciada.
- Suporta testes de interoperabilidade simulando ambientes de clientes JEE, AXIS e DotNet.
- Desenvolvido pela HP.
4) Teste Parasoft SOA
SOA Test é um conjunto de ferramentas de teste e análise desenvolvido para testes de API e aplicativos API.
- Suporta tecnologias Web Services, REST, JSON, MQ, JMS, TIBCO, HTTP, XML.
- Testes funcionais, unitários, de integração, de regressão, de segurança, de interoperabilidade, de conformidade e de desempenho são possíveis.
- Stubs podem ser criados usando o Parasoft Virtualize, que é mais inteligente que a UI SOAP.
- Desenvolvido por ParaSoft
Casos de uso de teste 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 do teste SOA, ou seja, Fase de Estratégia de Teste, o aplicativo é dividido em Serviços e funções de negócios.
Consideremos abaixo os serviços do 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 iguais às funções do Site.
Nota: O documento de estratégia de teste conteria a lista do serviço e das funções que devem ser testadas.
FASE 2
Fase de planejamento de testes. 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 < quantidade disponível.
- Crie um pedido com o produto disponível com quantidade do pedido > quantidade disponível.
- Crie um pedido com vários itens
- Cancele um pedido completamente.
- Cancelar pedido parcialmente.
- Nível de integração. Os casos de teste são escritos para 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 é menor que o valor do pedido.
- Verifique se o status do pedido exibido na UI é o mesmo do banco de dados.
- Cancele o pedido e verifique se o status do pedido foi modificado no banco de dados.
- No primeiro pagamento, verifique se os detalhes de 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 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 no pedido < Quantidade no banco de dados. |
3 | Criar número de pedido 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 do Teste
A execução de testes 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 nível de serviço. Teste de ponta a ponta.
1) Nível de serviço
Vamos considerar que Soapui ferramenta é considerada para testar o aplicativo.
A wsdl e 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, são criadas solicitações para cada caso de teste.
Caso de teste | SOLICITAÇÃO | Resposta esperada |
---|---|---|
Criar pedido. Nº de itens = 1Quantidade no pedido <Quantidade no banco de dados | x2 2 | o3251 Bem-sucedido |
Criar pedido.Não. de itens > 1Quantidade no pedido <Quantidade no banco de dados | y1 1 y2 3 | o3251 Bem-sucedido |
Criar número de pedido de itens = 1Quantidade no pedido> Quantidade no banco de dados | x23 200 | nulo Mal sucedido |
Verifique o status do pedidoStatus no banco de dados = Ativo | o9876 | Ativo Bem-sucedido |
Verifique o status do pedidoStatus no banco de dados = Enviado | o9656 | Enviado Bem-sucedido |
Verifique o status do pedidoID do pedido = inválido | y5686 | nulo Mal sucedido |
Verifique a disponibilidade do produtoQuantidade do produto >0 | d34 | 34 sim Bem-sucedido |
Verifique a disponibilidade do produtoQuantidade do produto =0 | 34 | 0 não Bem-sucedido |
Verifique a disponibilidade do produtoID 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.
- Vai fazer um pedido.
- Seleciona um produto e uma quantidade válidos e salva o pedido.
- Uma mensagem informando que o pedido foi feito com sucesso deverá ser exibida.
- Um usuário abre o banco de dados e verifica se os dados 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.
- Consulta sobre um produto válido e a quantidade adiciona-o ao carrinho.
- Outros produtos válidos são adicionados com quantidades válidas e o pedido é salvo. O pagamento é feito através de um novo método de pagamento e o pedido é feito.
- Uma mensagem dizendo “Pedido realizado com sucesso” deverá ser exibida.
- Um testador deve validar se todo o fluxo é feito sem distorção de dados.
Conclusão
Ao esboçar a estratégia correta de testes, recursos, ferramentas e conformidade para fornecer um bom serviço, os testes SOA podem fornecer aplicativos testados completa e perfeitamente.