SoapUI é uma ferramenta open source escrita em Java cuja principal função é consumir e testar Web Services. Web Service é uma tecnologia baseada em XML e HTTP cuja principal função é disponibilizar serviços interativos na WEB que podem ser acessados (ou consumidos) por qualquer outra aplicação independente da linguagem ou plataforma em que a aplicação foi construída. O SOAP (Simple Object Access Protocol) é o padrão universal utilizado para a troca de mensagens entre as aplicações consumidoras e o Web Service. O Web Service expõe as suas operações por meio de um tipo de esquema XML chamado WSDL (Web Service Description Language). Neste contexto, o SoapUI facilita todo o processo de criação e depuração dos testes por meio de uma interface gráfica visual e intuitiva. Dentre as suas principais características, podemos destacar as seguintes:

  • Importação e geração automática das requisições descritas no WSDL;
  • Capacidade de gerenciar um número ilimitado de requisições para cada operação;
  • Gerenciamento de múltiplo endpoints para cada Web Service;
  • Validação das requisições e respostas contra as suas definições no WSDL;
  • Testes funcionais, carga e stress;
  • Execução de diversos testes em paralelo;
  • Editores com syntax highlight e formatação automática;
  • Suporta expressões XPATH;
  • Suporta criação de testes complexos utilizando scripts Groovy;
Saiba mais sobre Testes com Soap UI

Criando um novo projeto

Para iniciar a utilização do SoapUI, você deverá criar um novo projeto. Para tal tarefa, você deverá clicar no menu "File>New WSDL Project", como pode ser visto na Figura 1. O SoapUI abrirá um diálogo solicitando o nome do novo projeto. Você também precisará informar em qual pasta o projeto será salvo. Cabe lembrar que, durante modificação do seu projeto, o SoapUI se encarregará de salvar as modificações automaticamente. No entanto, se você desejar, você poderá forçar o salvamento das modificações a qualquer momento por meio do menu "File>Save all" ou pelo atalho "Ctrl+S".

Criação de um novo projeto do SoapUI
Figura 1. Criação de um novo projeto do SoapUI

Para efeitos didáticos e de entendimento, os exemplos apresentados nas próximas seções vão realizar os testes de um suposto Web Service chamado "EchoService". Este Web Service expõe uma operação chamada "HelloEcho" cujo único propósito será ecoar o texto enviado, ou seja, se você enviar "Olá Mundo!" a resposta será "Olá Mundo!".

Dando continuidade, assim que o projeto for criado, ele aparecerá listado na árvore de projetos localizada na área esquerda da janela principal do SoapUI. Em seguida, devemos importar o WSDL a fim de que o SoapUI seja capaz de conhecer todas as operações expostas pelo nosso Web Service "EchoService". Em resumo, para realizar esta tarefa, você deverá clicar com o botão direito do mouse sobre o nome do projeto e escolher a opção "Add WSDL from file", como pode ser visto na Figura 2. Lembre-se de confirmar a criação das Requisições Default para todas as operações quando for solicitado.

Importação das interfaces via um arquivo WSDL
Figura 2. Importação das interfaces via um arquivo WSDL

Ao final do processo de importação do WSDL, o SoapUI incluirá um novo item abaixo do nome do projeto representando o WSDL importado. Clicando-se duas vezes sobre este novo item, você abrirá a janela "Interface Viewer". Por meio dessa janela você poderá ver o conteúdo do WSDL recém importado. Adicionalmente, o SoapUI criará uma Requisição Default (Request 1) para cada operação exposta pelo Web Service "EchoService", como pode ser visto na Figura 3.

Importação das interfaces via um arquivo WSDL
Figura 3. Interface Viewer

As Requisições Default são criadas para facilitar a criação dos Test Cases. Para testar o acesso ao Web Service você deverá clicar com o botão direito do mouse sobre a Requisição Default da operação que você desejar e, em seguida, escolher a opção "Open Request Editor". No nosso cenário, você deverá abrir a Requisição Default da operação "HelloEcho". A janela "Request Editor" deverá ser exibida. Nesta janela, aparecerá automaticamente no lado esquerdo a requisição SOAP que será enviada ao nosso Web Service "EchoService". Você deverá preencher os campos desta requisição conforme os tipos definido no WSDL. Para consumir a operação "HelloEcho" exposta pelo Web Service "EchoService", devemos apenas fornecer uma string no único parâmetro disponível e, então, submeter a requisição. A resposta da desta requisição é imediatamente exibida no lado direito do "Request Editor", como pode ser visto na Figura 4.

Importação das interfaces via um arquivo WSDL
Figura 4. Submetendo uma requisição ao Web Service

Criando um test case

Assim que o projeto for criado, você poderá criar um novo Test Case. Para tal tarefa, clique com o botão direito do mouse sobre a Requisição Default da operação que você desejar e escolha a opção "Add to TestCase". No nosso caso, devemos selecionar a Requisição Default "Request 1". Durante a criação do Test Case, você também deverá informar o nome da Test Suite, o nome do Test Case e o nome do Test Step (no nosso exemplo, chamaremos de "Testes Básicos", "Test 1" e "Envia string Hello World", respectivamente). Em tempo, uma Test Suite serve para agrupar um conjunto de Test Cases com características em comum e cada Test Case é composto por um ou mais Test Steps.

Criando um Test Case
Figura 5. Criando um Test Case

Por sua vez, cada Test Step representa uma requisição que será enviada ao Web Service. Após a conclusão da criação do Test Case, o SoapUI incluirá um novo item abaixo do nome do projeto representando a Test Suite e o Test Case, respectivamente. Clicando-se duas vezes sobre o ícone da Test Suite, você abrirá a janela "Test Suite Runner". Por meio desta janela você poderá iniciar a execução de todos os Test Cases que estiverem dentro desta Test Suite, como pode ser visto na Figura 6.

Edição dos Test Steps
Figura 6. Edição dos Test Steps

Para editar ou depurar os Test Steps, dê um duplo clique sobre o nome do Test Step. O SoapUI abrirá a janela "Test Step Editor". Por meio desta janela, você poderá editar a requisição e inspecionar a resposta da requisição, como pode ser visto na Figura 6.

Criando asserções

Por meio da janela "Test Step Editor", você também poderá definir asserções (ou verificações) que serão executadas contra a resposta da requisição. Você poderá adicionar uma asserção clicando com o botão direito do mouse na aba "Assertions" localizada na parte inferior da janela "Test Step Editor" (Figura 7). Atualmente, o SoapUI oferece cinco tipos diferentes de asserções (ou verificações) para validar a resposta de uma requisição, como pode ser visto na Tabela 1.

Adicionando asserções
Figura 7. Adicionando asserções

AsserçãoDescrição
Schema ComplianceValida as respostas das requisições contra o xml-schema definido no WSDL
Simple ContainsVerifica a existência de uma string nas respostas das requisições
Simple NotContainsVerifica a não existência de uma string nas respostas das requisições
SOAP FaultVerifica se a resposta da requisição não contém um soap-fault
XPath MatchCompara o conteúdo das respostas das requisições contra uma expressão XPATH
Tabela 1. Asserções fornecidas pelo SoapUI

Basicamente, as asserções são validações que são feitas para confirmar se a resposta de uma requisição contém as informações esperadas. Se as asserções falharem, o Test Step e o Test Case indicarão um status de falha, como pode ser visto na Figura 8.

Asserções
Figura 8. Asserções

Depurando os Test Cases

À medida que se queira depurar Test Cases mais complexos e com uma grande quantidade de Test Steps, você deverá analisar os logs de execução dos Test Steps. Para tal tarefa, dê um duplo clique no Test Step desejado na seção "Test Log" localizada na parte inferior da janela "Test Suite Runner", como pode ser observado na Figura 9.

Depurando Test Cases complexos por meio do Test Log
Figura 9. Depurando Test Cases complexos por meio do Test Log

Adicionando novos Test Steps ao Test Case

Conforme mencionamos anteriormente, cada Test Step é criado a partir de uma operação exposta pelo Web Service. No entanto, o SoapUI fornece outros tipos de Test Steps para nos ajudar a criar testes mais complexos. Para adicionar um novo Test Step, clique com o botão direito do mouse na seção "Test Steps" localizada na parte superior da janela "Test Step Editor" e selecione a opção "Insert Step", como pode ser visto na Figura 10. Atualmente, o SoapUI oferece cinco tipos diferentes de Test Steps que podem ser adicionados ao Test Case, conforme descrito na Tabela 2.

Adicionando novos Test Steps no Test Case
Figura 10. . Adicionando novos Test Steps no Test Case

Test StepDescrição
Groovy ScriptLinguagem de script baseada em Java para criar Test Cases e Asserções complexas
Conditional GotoFornece a possibilidade de mudar o fluxo de execução dos Test Steps de acordo com alguma condição
PropertiesArmazena propriedades que podem ser utilizadas entre os Test Steps como se fossem variáveis
DelayPermite a simulação de uma espera de acordo com o tempo determinado por você
Property TransferTransfere dados entre os Test Steps
Tabela 2. Test Steps suportados pelo SoapUI

Criando testes de carga e stress

Entre outras características, o SoapUI também fornece a possibilidade de executar testes de carga e stress contra os Web Services. Basicamente, a ideia é executar os Test Cases contra um Web Service durante um período de tempo. A estratégia para medir a performance, pode incluir a configuração da quantidade de acessos simultâneos que serão realizados contra o Web Service, o período de tempo, entre outras configurações.

Testes de carga e stress
Figura 11. Testes de carga e stress

Você também poderá criar asserções para identificar se o Web Service está atendendo determinado requisito de performance de acordo com as suas necessidades, como pode ser observado na Figura 11. O SoapUI também exibe os gráficos com as estatísticas da execução dos testes para facilitar a leitura e a análise dos resultados, conforme apresentado na Figura 12.

Gráfico com as estatísticas dos testes de carga
Figura 12. Gráfico com as estatísticas dos testes de carga

Para saber mais…

SoapUI Home Page
http://www.soapui.org/

Groovy Home Page
http://groovy.codehaus.org