Blog > Automação de Testes em Webservices com SoapUI (Parte 3): MockService

17/ago

Mocks são objetos que imitam o comportamento de outros objetos ainda não construídos ou difíceis de testar. Neste post aprenderemos como trabalhar com o elemento MockService do SoapUI, usado para criar Mocks e auxiliar seus testes automatizados em serviços REST e SOAP.

Introdução

Segundo o Wikipedia, Mock objects ou somente Mock em desenvolvimento de software são objetos que simulam o comportamento de objetos reais de forma controlada. São normalmente criados para testar o comportamento de outros objetos.

O SoapUI Pro possui um elemento chamado MockService, que pode ser utilizado para WebServices SOAP e REST. Através dele conseguimos simular o comportamento de outros objetos, esse recurso é muito importante e muito utilizado, uma vez que em alguns momentos precisamos testar métodos contidos em APIs de forma isolada ou mesmo testar métodos que dependem de outros ainda não finalizados.

A utilização deste recurso é bem simples, necessita apenas que a definição do serviço (WADL ou WSDL) exista e esteja declarada dentro do projeto, a idéia é basear-se na definição para criar o Mock.

Veremos no tópico seguinte um passo a passo, demonstrando a forma de utilização do elemento MockService em uma API REST.

Passo a passo

Passo 1: Importando o projeto REST

Vamos criar um novo projeto REST e utilizaremos um arquivo WADL, que é a definição do webservices que queremos testar, denominado QuickLoja:

Vemos que o WADL possui dois resources: Usuário e Frete. Frete depende diretamente do método "Buscar Token” do resource Usuário, pois para inserir um Frete é necessário informar o ID do usuário e seu Token, informações obtidas ao executar o método "Buscar Token”, além dos dados do frete que será adicionado (Valor do Frete e UF).

Em nosso exemplo, o método “Inserir Frete” já está pronto, mas o método "Buscar Token” ainda não foi finalizado. Desta forma, teremos que criar um Mock para simular o comportamento do método "Buscar Token”, este Mock, quando requisitado, retornará um ID e Token válidos.

Passo 2: Criando o MockService do resource Usuário

Neste passo, criaremos um MockService para simular o comportamento do Resource “Usuário”:

Uma vez que adicionamos um método à um MockService este é iniciado e como vimos no tutorial começa a rodar na porta 8080 do servidor local (http://localhost:8080).

O método "/qklrest/usuarios/token” usa POST para envio da requisição e por enquanto ainda não retorna nenhuma resposta quando executado. Através do SoapUI podemos configurar quais serão as respostas obtidas através deste método.

Passo 3: Configurando respostas

Iremos agora configurar qual ou quais são as respostas que serão enviadas quando o método “Buscar Token” do MockService for executado. Vemos a seguir a configuração de duas respostas no formato JSON:

A primeira será uma resposta de sucesso (200), contendo o ID e o Token do usuário:

A segunda será uma resposta de erro (503), contendo o status “falha":

Como criamos duas respostas e apenas uma pode ser respondida por vez, as respostas serão alternadas sequencialmente, isso porquê o “Dispach” selecionado no Resource “Token” foi “SEQUENCE”.

Passo 4: Criando respostas dinâmicas

É possível criar respostas dinâmicas através de scripts Groovy, veremos a seguir um exemplo onde a resposta “Erro” e “Sucesso” são apresentadas dependendo dos parâmetros enviados na requisição. Se a requisição possuir os valores “julio.lima” e “123” responderemos “Sucesso” caso contrário, teremos “Erro” como resposta:

Observação: Caso o script Groovy não execute a regra “return” então a resposta será a indicada no combo “Default Response”

Passo 5: Criando um TestCase e TestSteps para validar as Resources Reais e Mocks

Vamos criar um caso de teste que fará duas requisições, uma para buscar o Token e ID do usuário e outro para inserir um frete, para isso, criarem um TestSuite, um TestCase e dois TestSteps baseados nas requisições contidas no serviço, conforme o passo a passo a seguir:

Agora vamos apontar o primeiro TestStep para o MockService (http://localhost:8080) e executar a TestStep e verificar se o resultado é “Erro” quando usamos dados válidos, e “Sucesso” quando usamos dados válidos:

E agora vamos configurar os dados da inserção do frete, incluindo o ID e Token contidos na resposta da requisição “Buscar Token”:

Passo 6: Adicionando Asserções ao TestCase

Para garantir que o frete foi adicionado é necessário validar que o Estado, valor e Usuário são exibidos na resposta após envio da mesma, por isso, vamos agora adicionar três asserções de conteúdo para validar que o frete foi adicionado com sucesso:

Passo 7: Executando o TestCase

Por fim, vamos executar o TestCase, e verificar que a adição do frete está funcionando conforme esperado:

Conclusão

Através de Mocks podemos agilizar os testes em webservices não necessitando aguardar até que todos os métodos e resources sejam criados.

A criação dos mocos dependem apenas de conhecermos as respostas que podem ser obtidas através deles.

A Qualister fornece treinamento voltado a ferramenta SoapUI, para saber mais acesse nosso menu de cursos e conheça a ementa:

http://www.qualister.com.br/cursos

Referências

http://pt.wikipedia.org/wiki/Mock_Object

POSTS RELACIONADOS

AGENDA

CURSOS RELACIONADOS