Blog > Automação de Testes em WebServices com SoapUI (Parte 1): Introdução

07/fev

Neste post abordaremos introdutoriamente a ferramenta SoapUI, utilizada para a criação de testes funcionais, segurança, performance e simulação de serviços em APIs. Também veremos algumas diferenças entre a versão paga e gratuita, além de um exemplo prático de criação de um teste em um Web Service SOAP.

Introdução

SoapUI é uma ferramenta utilizada para automação de testes funcionais em APIs (SOAP, REST, etc), de maneira prática e ágil. É possível utilizar o SoapUI também para execução de testes de segurança e simulação de serviços.

APIs SOAP trabalham com requisições e respostas XML, em um formato padrão, definido pelo W3C, já as APIs REST, trabalham com requisições URI e respostas no formato JSON. Como vimos, o SoapUI consegue testar APIs nestes dois formatos. Para que estes testes sejam realizados, é necessário que o testador tenha conhecimento em manipulação destas requisições e interpretação das respostas, uma vez que APIs não possuem interface gráfica.

O SoapUI, versão Pro, torna testes em API mais simples. Ele identifica os parâmetros contidos nos métodos que serão testados e apresenta um formulário contendo estes parâmetros em forma de campos, que podem ser preenchidos conforme o tipo do parâmetro. Tornando mais fácil a criação de uma requisição. Imagine que você precisa testar um método addCliente, e este método possui os parâmetros nome, nascimento e salário. No SoapUI Pro, quando criamos um teste para validar este método, a ferramenta apresentará um formulário contendo 3 campos, o primeiro será um campo de texto livre onde será informado o nome, o segundo, um campo para seleção da data de nascimento a partir de um calendário, e o terceiro, um campo onde será informado um número, referente ao salário. Sem utilizar o SoapUI Pro, esta ação teria que ser feita através da escrita de uma requisição em XML.

O SoapUI está disponível em duas versões: SoapUI (Versão gratuita) e SoapUI Pro (Versão paga).

Principais características disponíveis na versão gratuita (SoapUI)

  • Testes em APIs dos principais protocolos (SOAP/WSDL, REST, JMS, AMF, JDBC e HTTP)
  • Testes funcionais, testes de performance e de segurança em APIs
  • Suporte a integração contínua
  • Execução via linha de comando
  • Simulação de serviços (Mocking)
  • Integração com LoadUI
  • Testes de segurança (Scanner de limites, SQL Injection, XPath Injection, Cross Site Scripting, etc)
  • Escrita de testes através de scripts em Groovy ou Javascript

Principais características disponíveis na versão paga (SoapUI Pro)

  • Data-driven tests (Testes dirigidos a dados)
  • Análises de cobertura de testes
  • Relatórios de execução (PDF, HTML, RTF, Excel, XML, etc)
  • Geração de dados dinamicamente
  • Gerenciamento de requisitos
  • Entradas de parâmetros à requisições via interface gráfica (formulários e árvore)
  • Gerenciamento de ambientes de teste
  • Depuração de testes
  • A versão paga contém todos os recursos da versão gratuita.

Veja a tabela comparativa completa clicando na URL abaixo:

http://www.soapui.org/Go-Pro/compare-soapui-and-soapui-pro.html

Criando um teste

Neste exemplo, faremos um teste em um webservice fornecido pelo W3Schools como exemplo de WSDL. Este serviço possui dois métodos, um converte Celsius para Fahrenheit e o outro faz o contrário. Em nosso teste, iremos tentar converter 37 Celsius para Fahrenheit, esperando que a resposta seja 98.6.

Apenas para informação, segundo o Wikipedia:

"A Web Services Description Language (WSDL) é uma linguagem baseada em XML utilizada para descrever Web Services funcionando como um contrato do serviço. Trata-se de um documento escrito em XML que além de descrever o serviço, especifica como acessá-lo e quais as operações ou métodos disponíveis”.

O primeiro passo a ser realizado dentro da ferramenta é a criação de um projeto (Control + N), e para isto é necessário informar a URL da API, neste caso, utilizei uma API criada pelo site W3Schools, disponível para testes:

http://www.w3schools.com/webservices/tempconvert.a...


Após a criação do projeto, a seguinte estrutura é criada:

Vemos que existem dois métodos, um que converte de Celsius para Fahrenheit, que é o método que iremos utilizar, e o segundo que faz o inverso.

Por padrão, o SoapUI cria uma requisição, é possível manipula-la e depois a enviar, para isso, clique duas vezes sobre ela, altero o símbolo “?” pelo valor que desejo converter, neste caso, usaremos “37”, correspondente a 37 graus Celsius:

Agora clico na seta verde (Submit request), no topo da janela de requisição, para enviar a requisição:

E assim, recebo a resposta à requisição que acabei de enviar, especificamente na tag CelsiusToFahrenheitResult:

O próximo passo, agora que já obtivemos as interfaces desta API SOAP, é criar os testes, no SoapUI existem quatro itens primordiais, são eles:

  • Test Suite: Suite de testes, um agrupamento de vários testes;
  • Test Case: Caso de teste, um agrupamento de um os mais passos que serão executados;
  • Test Step: Passo do teste, um passo que será executado quando executarmos o teste;
  • Assertion: Verificação que validará se o teste passou ou não.

Para criar um Test Suite basta clicar com o botão direito do mouse na interface da API, neste caso “CelsiusToFahrenheit”, e então selecionar a opção “Generate Test Suite”:

Vemos que foi criado o Test Suite e dois Test Cases, um para testar a operação Celsius To Fahrenheit e outro para testar a operação Fahrenheit to Celsius:

Dentro de Test Steps, contido no Test Case CelsiusToFahrenheit, vemos que um passo já foi adicionado para testar o método CelsiusToFahrenheit, então agora podemos manipular a requisição, informando o valor que iremos utilizar neste teste, fazemos isto clicando duas vezes sobre o passo CelsiusToFahrenheit e alterando o valor “?” para “37”:

Quando a suite de testes é executada o SoapUI simula o envio das requisições aos webservices e aguarda a resposta a estas requisições, uma vez que a resposta é obtida, o SoapUI exibe a resposta, geralmente em formato XML, JSON ou Raw.

Obter a resposta apenas não confirma se o teste passou ou se falhou, uma vez que, por padrão, os métodos contidos em webservices enviam respostas quando as requisições obtém sucesso e também quando obtém falha.

Para que possamos validar se o teste passou ou não iremos utilizar asserções, neste caso, uma asserção que verifique se o valor 98.6 (resultado da conversão de 37 graus Celsius para Fahrenheit), foi apresentado na resposta obtida após a requisição ser enviada. Para isso, clicamos em “Add Assertion”, localizado ao lado do botão “Submit requests", e selecionamos qual tipo de asserção iremos utilizar, neste caso, Property Contents > Contains, conforme imagem abaixo:

Após clicar em “Add”, indico qual o texto deseja verificar se foi apresentado na resposta: 98.6:

Para executar os testes contidos em uma suite basta dar um duplo clique sobre a mesma e pressionar o botão “Run selected test cases”. Ao executar a suite de testes, terei um resultado positivo ou negativo da execução de cada um dos casos de teste:

Conclusão


O SoapUI pode auxiliar muito nos testes funcionais, de performance e segurança em APIs, desde que o testado conheça os recursos necessários para tal. O projeto baseia-se na URL onde a API encontra-se hospedada e através de sua interface e métodos é possível criar Suites, Casos e Passos de teste, além de verifica-los através de asserções. Ao fim, temos um resultado organizado de como foi a execução dos testes.

A Qualister é revendedora oficial do SoapUI no Brasil, e oferece treinamentos para turmas abertas EAD, Presenciais e In Company. Para conhecer a ementa do curso acesse o link do curso na URL abaixo:

http://www.qualister.com.br/cursos/automacao-de-testes-de-webservices-com-soapui

Downloads

Fontes

POSTS RELACIONADOS

AGENDA

CURSOS RELACIONADOS