1. Automação de Testes com
SoapUI
Fundamentos
Mateus Caletti
linkedin.com/in/mateuscaletti/
github.com/mateuscaletti
slideshare.net/mateuscaletti
2. Criando um projeto...
O projeto é onde você organizará os
seus testes.
Passo-a-passo:
• Tenha a URL que contenha o WSDL que deseja testar
• Vá em “File -> New SOAP Project”
• Insira um nome para o projeto e a URL com o WSDL
do serviço
• Pronto, deverá aparecer algo como:
3. Criando uma Suíte de Teste...
A Suíte de Teste (TestSuite) é um
conjunto de cenários de teste.
Passo-a-passo:
• Clique com botão direito sobre o nome do seu
projeto anteriormente criado e vá em “New
TestSuite”
• Nomeie o seu TestSuite
• Uma janela com o seu TestSuite deverá aparecer na
tela:
4. Criando um cenário de teste...
O cenário de teste (TestCase) é onde
você configurará os passos necessários
para a execução do seu teste.
Passo-a-passo:
• Clique com botão direito sobre o nome do seu
TestSuite e vá em “New TestCase”
• Nomeie o seu TestCase
• Uma janela com o seu TestCase deverá ser aberta:
5. Criando os passos dos seu teste...
Todo TestCase requer que sejam incluídos os
passos (TestStep) para sua execução. São as
tarefas automatizadas para que o teste seja
concluído.
Passo-a-passo:
• Expanda a árvore do seu TestCase e clique com botão direito sobre
“Test Steps” e vá em “Add Step”
• Uma lista de opções será apresentada. Cada qual representa um
tipo de tarefa que pode ser adicionada.
• Para este exemplo, iremos incluir uma atividade mais básica em
teste de serviço que é o “SOAP Request”
• Nomeie a sua atividade
• Escolha a operação do serviço que você importou lá no início
deste tutorial e clique em “OK”
• Aparecerá uma janela para confirmar a criação da tarefa, clique
em “OK” novamente.
... continua ...
6. Criando os passos dos seu teste...
Todo TestCase requer que sejam incluídos
os passos (TestStep) para sua execução.
São as tarefas automatizadas para que o
teste seja concluído.
Passo-a-passo:
• Agora você precisará configurar o request do seu
serviço Soap
• Você poderá testar normalmente a requisição até que
ela esteja OK
• Pronto! Seu TestStep está criado!
Obs.: Mais adiante, iremos tratar dos principais tipos de TestSteps!
... continua ...
7. Criando suas asserções...
Para automatizar um teste, você precisará estabelecer quais
são as condições para que o teste conclua com sucesso ou
falha. Neste caso, você irá precisar trabalhar com
“Assertions”, que são condições que você entende que
devem ser verdadeiras, caso contrário, o teste estará
falhando.
Passo-a-passo:
• Na janela do seu “TestStep”, haverá um menu na barra inferior chamado
“Assertions”, clique sobre este botão
• Uma lista de “Assertions” será aberta. Por padrão, em um “SOAP Request”, estará
criada um “SOAP Request – VALID”
• Vamos criar um novo... Clique no sinal de + na barra superior desta lista
• Uma janela com várias opções será aberta. Na versão gratuita do SoapUI, apenas
algumas opções estão disponíveis. Vamos utilizar uma bem simples em “Property
Content -> Not Contains” e clique em “Add”
• Adicione a trecho do retorno que você deseja que não contenha no retorno.
• Por que usaremos este? Como nosso objetivo do teste é validar o “Cenário
Positivo”, isto é, que eu obtenha o valor da série indicada. Então, quando o
serviço retorna erro, ele apresenta algo como a imagem ao lado. Nossa condição
é que “Não contenha” a string “<faultstring>”. Caso tenha, o teste falhará.
... continua ...
8. Criando suas asserções...
Para automatizar um teste, você precisará
estabelecer quais são as condições para
que o teste conclua com sucesso ou falha.
Neste caso, você irá precisar trabalhar
com “Assertions”, que são condições que
você entende que devem ser verdadeiras,
caso contrário, o teste estará falhando.
Passo-a-passo:
• Instantaneamente, o teste falhará, pois a string
“<faultstring>” estará contida no retorno (response),
pois incluímos, nos parâmetros de entrada, um código
que não existe no banco de dados do BCB.
• Para que o teste passe, vamos alterar o parâmetro de
entrada que a gente sabe que existe.
9. Vamos rodar o teste...
Podemos rodar o teste conforme o escopo.
Escopo: TestStep
Podemos rodar apenas uma tarefa para validá-la. Para isso, basta dar
duplo-clique sobre o TestStep desejado e clicar no botão “Play”.
Escopo: TestCase
Podemos rodar o TestCase inteiro. Neste caso, ele irá rodar todos
os TestSteps na sequência em que você configurou. Apresentará
uma tela contendo o resumo e o log da execução.
Para isso, basta dar duplo-clique sobre o TestStep desejado e
clicar no botão “Play”.
Escopo: TestSuite
Podemos rodar o TestSuite inteiro. Neste caso, ele irá rodar todos
os TestCase na sequência em que você configurou. Apresentará
uma tela contendo o resumo e o log da execução.
Para isso, basta dar duplo-clique sobre o TestSuite desejado e
clicar no botão “Play”.
10. Automação de Testes com
SoapUI
Tópicos Avançados:
Conhecendo as Custom Properties
Trabalhando com Propriedades de Ambiente
11. (Custom Properties)
Propriedades Personalizadas
Existem três tipos de propriedades
personalizadas que podem ser
configuradas.
1. No nível do “Projeto”
2. No nível do “TestSuite”
3. No nível do “TestCase”
Para visualizá-los e manipulá-las, você
deve selecionar o nível desejado. Na
parte inferior esquerdo, uma aba
“Custom Properties” será apresentada.
... continua ...
12. (Custom Properties)
Propriedades Personalizadas
Mas para que serve?
Podem ser utilizadas para a definição de
dados que poderão ser acessadas nos
TestSteps que estiverem dentro do seu
escopo.
Elucide um exemplo, por favor!
Na versão gratuita, não há funcionalidade
que permita definirmos os “Ambientes” em
que será rodado os testes, isto é, caso eu
precise rodar o teste no ambiente de
“Teste” e, posteriormente, no ambiente de
“Homologação”. Uma forma de contornar
isso é utilizando as propriedades.
A seguir iremos apresentar como...
... continua ...
13. (Custom Properties)
Propriedades Personalizadas
Mãos na massa...
1. No nível do Projeto, iremos definir a variável
“urlWsdl” conforme a imagem ao lado;
2. Iremos criar um TestStep de “SOAP Request” para
exemplificar;
3. No campo em que está o “endpoint”, iremos
substituir a URL pela tag “${#Project#urlWsdl}”
4. Aperte no play e verá que ele utilizará o valor que
estiver definido na variável. Caso seja necessário
alternar entre ambientes, basta alterar esta variável.
Outros escopos...
Você poderá utilizar as propriedades personalizadas nos
escopos mencionados, bastando referenciá-las da seguinte
maneira:
1. Projeto = ${#Project#nomeDaPropriedade}
2. TestSuite = ${#TestSuite#nomeDaPropriedade}
3. TestCase = ${#TestCase#nomeDaPropriedade}
14. Automação de Testes com
SoapUI
Tópicos Avançados:
Explorando os diferentes tipos de TestStep
Trabalhando com Properties
15. Properties
Trabalhando com Propriedades
Este TestStep serve para carregar
variáveis de propriedades que
poderão ser consumidas por outros
TestStep subsequentes.
Existem duas formas:
1. Incluir variáveis manualmente e
mantendo os valores por dentro
da interface do SoapUI
2. Informar um arquivo no formato
.properties para carregar as
variáveis e seus valores
... continua ...
16. Properties
Trabalhando com Propriedades
Manualmente
1. Clique sobre + na barra superior da
janela para adicionar uma nova
variável
2. Adicione o nome da variável e seu
respectivo valor
3. Repita o processo para tantas
variáveis desejar
4. Para editar os valores, basta dar
duplo-clique sobre o campo
desejado
... continua ...
17. Properties
Trabalhando com Propriedades
Via arquivo .properties
1. Crie um diretório chamado “resources” dentro
do diretório em que está salvo o seu projeto
2. Crie um arquivo no formato .properties no
diretório recém criado
3. Vamos adicionar um novo TestStep chamado
“PropertiesArquivo”
4. Ao lado do campo “Load from:”, clique no ícone
para selecionar o arquivo
5. Selecione o arquivo criado
6. O SoapUI irá perguntar se deseja criar as
variáveis. Clique em “Sim”
7. Pronto! As variáveis foram criadas e seus
valores serão recarregadas sempre que rodar
seu teste.
... continua ...
18. Properties
Trabalhando com Propriedades
Via arquivo .properties
1. Mas temos um problema! Caso você
precise movimentar o diretório do seu
projeto, os apontamentos do arquivo
.properties se perderão.
2. Para resolver isso, configure o “Resource
Root” para ser o diretório do seu projeto.
3. Agora retorne para o TestStep
“PropertiesArquivo” e coloque:
“resources/Soap.properties”
4. Rode novamente o seu teste
5. Pronto! Agora o caminho do properties
será relativo ao diretório do seu projeto.
19. Automação de Testes com
SoapUI
Tópicos Avançados:
Explorando os diferentes tipos de TestStep
Transferindo dados para dentro das propriedades
20. Property Transfer
Transferindo dados para dentro das propriedades
Agora já sabemos trabalhar com o
TestStep de propriedades, podemos
realizar alguns usos deste recurso.
Digamos que queremos transferir um
valor retornado de um TestStep
“SOAP Request” para ser utilizado
mais adiante.
Para isso, iremos utilizar o TestStep
de Property Transfer.
21. Property Transfer
Transferindo dados para dentro das propriedades
No nosso exemplo, iremos realizar uma
requisição SOAP para descobrir a cotação de
uma moeda em um determinado dia e
queremos que este valor seja transferido para
uma propriedade.
Para isso, siga o passo-a-passo:
1. Antes de tudo, crie uma variável em algum
TestStep para que você possa ter para onde
transferir o valor neste exemplo
2. Adicione o TestStep “Property Transfer”
3. Nomeie ele para um nome que faça sentido
no teste
4. Uma janela de configuração será
apresentada
... continua ...
22. Property Transfer
Transferindo dados para dentro das propriedades
5. Para nosso exemplo, criamos um TestStep
chamado “CotacaoResult”
6. Adicione uma nova instrução de transferência
7. Nomeie de uma maneira que faça sentido no
teste.
8. Para configurar, iremos estabelecer dois pontos:
• Origem (source): para a origem, iremos informar o TestStep
“SOAP Request” e sua “Property” chamada “Response”. Isso
indicará ao SoapUI para que trabalhemos com o retorno da
chamada do serviço. Iremos aplicar um comando XPath para
extrair a informação desejada
• Destino (target): para o destino, iremos informar o TestStep
“CotacaoResult” e sua “Property” chamada “resultCotacao”,
conforme variável criada anteriormente.
9. Podemos clicar em play para verificar qual valor
foi transferido
10. Pronto! Seu comando de transferência foi
realizado!
... continua ...
23. Property Transfer
Transferindo dados para dentro das propriedades
É muito importante o conhecimento
em XPath para o uso deste TestStep.
Com ele, conseguimos obter
resultados incríveis com pouca linha
de comando.
No nosso exemplo, apesar do retorno
da requisição SOAP ter uma alta
complexidade, com apenas um
comando, obtivemos exatamente o
valor desejado.
... continua ...
24. Automação de Testes com
SoapUI
Tópicos Avançados:
Explorando os diferentes tipos de TestStep
Trabalhando com HTTP Request
25. HTTP Request
Trabalhando com HTTP Requests
Com o TestStep “HTTP Request” é possível
realizar uma chamada à uma URL na Web. É
bastante útil para acionar API’s em Rest ou
simplesmente verificar o resultado em uma
determinar página.
O SoapUI permite a execução de comandos
GET, POST, PUT, DELETE, ...
Vamos adicionar então...
1. Adicione o TestStep “HTTP Request”
2. Nomeie de uma forma que faça sentido
no seu teste
3. Informe o endpoint que deseja acessar,
bem como forneça os parâmetros
necessários e escolha o método de
requisição
... continua ...
26. HTTP Request
Trabalhando com HTTP Requests
4. Clique em play e verifique o
resultado
5. Agora podemos inserir “Assertions”
para garantir que o retorno esteja
OK
6. Dado que o retorno está numa
estrutura JSON, iremos aplicar um
assertion do tipo “JsonPath Match”
7. Iremos configurar para que seja
testado se o status seja “ok”
8. Pronto! Veremos que o teste passou!
27. Automação de Testes com
SoapUI
Tópicos Avançados:
Explorando os diferentes tipos de TestStep
Trabalhando com JDBC Request
28. JDBC Request
Trabalhando com JDBC Requests
O TestStep “JDBC Request” permitirá
que você realize acessos diretos ao seu
banco de dados, para a execução de
consultas.
Para isso, é necessário baixar os drivers
de conexão do seu banco de dados e
configurá-los no SoapUI.
1. Acesse e baixe
https://www.soapui.org/jdbc/refere
nce/jdbc-drivers.html
2. Coloque o arquivo .jar dentro do
diretório binext da sua instalação
do SoapUI
... continua ...
29. JDBC Request
Trabalhando com JDBC Requests
Posto que configuração do seu JDBC
Driver esteja feita, iremos adicionar o
TestStep e testá-lo.
1. Adicione o TestStep “JDBC Request”
2. Você deverá informar o “Driver” e a
“Connection String”
3. Clique em “TestConnection” para
verificar se a conexão está
corretamente configurada
4. Informe uma “SQL Query” para ser
realizada no banco de dados
5. Visualize o retorno no lado esquerdo
6. Pronto! Você conseguiu acessar os
dados de banco de dados! ... continua ...
30. JDBC Request
Trabalhando com JDBC Requests
Os drivers e as Connection Strings
podem ser consultadas no site
https://www.soapui.org/jdbc/referen
ce/jdbc-drivers.html
31. Automação de Testes com
SoapUI
Tópicos Avançados:
Explorando os diferentes tipos de TestStep
Trabalhando com SOAP Request
32. SOAP Request
Trabalhando com SOAP Requests
O TestStep “SOAP Request” permitirá
que você realize testes funcionais em
chamadas de webservices expostos
em SOAP.
Conforme explicado no início, você
precisará da URL contendo o WSDL
de seu serviço.
... continua ...
33. SOAP Request
Trabalhando com SOAP Requests
Primeiramente, você deverá garantir
que o seu serviço já não se encontra
carregado em seu Projeto SoapUI.
Para isso, você poderá navegar nos
itens com setas duplas invertidas.
Caso haja algum cadastrado, dê um
duplo-clique e verifique o endereço
do serviço.
... continua ...
34. SOAP Request
Trabalhando com SOAP Requests
Caso não exista, você poderá
facilmente adicionar seguindo os
passos abaixo:
1. Clique com botão direito sobre o
nome do seu Projeto SoapUi
2. Vá em “Add WSDL”, adicione a
URL em “WSDL Location” e clique
em “OK”
3. Pronto! Seu serviço está pronto
para ser chamado dentro dos
testes.
... continua ...
35. SOAP Request
Trabalhando com SOAP Requests
Uma vez adicionado, você poderá, em
qualquer ponto e suíte de teste do seu
Projeto SoapUI, fazer referência às
definições do webservice recém carregado.
Agora fica mais fácil:
1. Basta clicar com botão direito sobre
“Test Steps”, ir em “Add Step” e clicar
sobre “SOAP Request”
2. Dê um nome que faça sentido
3. Escolha o serviço e operação desejada
4. Prepare o payload desejado, podendo
fazer referências às propriedades e
variáveis de ambiente
5. Pronto!
36. Automação de Testes com
SoapUI
Tópicos Avançados:
Explorando os diferentes tipos de TestStep
O poder do Groovy
37. Groovy Script
O poder do Groovy
O “TestStep” de Groovy Script
permite que você programe scripts
para realizar validações e
transformações em seus testes.
Mas vamos iniciar e, ao longo do
caminho, explicamos melhor...
1. Clique com botão direito sobre
“Test Steps”, vá em “Add Step” e
clique em “Groovy Script”
2. Dê um nome que faça sentido
3. Uma janela, em branco, será
aberta...
... continua ...
38. Groovy Script
O poder do Groovy
Nesta janela é em que você poderá
escrever seus scripts.
Mas o que é possível fazer?
O Groovy é uma poderosa ferramenta
que dá a liberdade de interagir com a
sua própria Suite, realizando ações
que não vem embarcadas no SoapUI.
Além disso, permite a importação de
classes externas Java que podem ser
utilizadas para apoiar.
... continua ...